Durée de vie d'une variable

Durée de vie d'une variable - VB/VBA/VBS - Programmation

Marsh Posté le 14-03-2008 à 11:14:57    

Bonjour à tous,
 
Je me pose quelques question sur la durée de vie des variable en VBA, j'utilise excel 97 sous XP.
 
Il m'avait semblé comprendre que les variables déclarées en tant que static étaient conservées entre deux appels à la procédure. Cependant, j'ai l'impression que lorsque je ferme excel, la valeur des variables est perdues.
 
En effet, dans mon cas, j'ai besoin de retrouver d'une exécution à l'autre le chemin d'un fichier.
 
D'ailleurs c'est un fichier qui se trouve sur le réseau, et j'ai pas mal galéré pour obtenir les lettres des lecteurs réseaux que je voulais.
Conaissez-vous un moyens facile de récupérer uniquement le chemin d'un fichier où la lettre de lecteur lorsque l'on a une chaîne de caractère représentant l'adresse d'un fichier(ex: "c:\repertoire\temp\mon fichier.xls" ).  j'aimerai pouvoir  récupérer "repértoire\temp\" pour pouvoir faire un chdir et "c:\" pour pouvoir faire un chdrive.
 
Ca fait un peu beaucoup de questions, mais ça fait quelque temps que je galère et que je n'arrive pas trop à me dépatouiller de tout ça :heink: , alors merci bien de votre aide quelque qu'elle soit. :jap:


Message édité par Henri Demolins le 14-03-2008 à 11:18:03
Reply

Marsh Posté le 14-03-2008 à 11:14:57   

Reply

Marsh Posté le 14-03-2008 à 11:17:51    

y'a une certainement différence entre "deux appels consécutifs" et "deux lancement d'excel consécutifs"...
 
si tu veux conserver des données d'un lancement d'excel à un autre, bah tu travailles avec des données stockées par exemple dans ta feuille excel (c'est là pour ça à la base :o)
 
comment veut tu qu'excel se souvienne de ce qu'il a mis dans une variable si tu le fermes entre temps ? heureusement qu'il oublie, parce si les programmes devaient travailler comme ça, faudrait autant de place en mémoire que sur ton disque dur :o

Reply

Marsh Posté le 14-03-2008 à 11:23:01    

arf c'est bien ce que j'ai fini par comprendre.
En fait ce n'est pas pratique d'enregistrer dans une feuille excel, car ce sont des informations que je voudrai garder transparente vis-à-vis de l'utilisateur et je dois pouvoir y avoir accès même lorsqu'aucune feuille excel n'est ouverte.
 
De plus lorsque l'on déclare une variable static, excel aurait très bien pu réserver quelques octets dans le module VBA afin de conserver la valeur entre différentes utilisations d'excel. Et ça n'aurait pas demander une quantité gigantesque de mémoire.
 
Merci pour ta réponse, et si tu as quelques éléments de réponse pour les autre questions, merci d'avance.

Reply

Marsh Posté le 14-03-2008 à 11:23:06    

Portée des variables : http://mhubiche.developpez.com/Access/variables/
 
Les static sont bien conservées entre deux appels d'une procédure, mais elles disparaissent bien évidemment lorsque tu fermes ta feuille. Si tu veux conserver leur contenu ad vitam eternam, faut sauvegarder cette valeur quelque part sur le disque.
 
Pour ta deuxième question, utilise les fonctions de traitement de chaînes de caractères. Le lecteur est représenté par l'ensemble des caractères jusqu'au premier "\" compris. Le chemin, c'est ta chaîne jusqu'au dernier "\" compris.
 
Edit - damn proxy, j'ai du retard sur les messages affichés :/


Message édité par ccp6128 le 14-03-2008 à 11:23:51
Reply

Marsh Posté le 14-03-2008 à 11:26:49    

merci bien c'est ce que j'ai fini par faire, mais je me demandais s'il n'y avait pas des fonctions VBA pour celà, j'aivais cru les croiser une fois dans l'aide.

Reply

Marsh Posté le 14-03-2008 à 11:30:03    

Tu peux aussi utiliser les fonctions FSO oui : http://warin.developpez.com/access/fichiers/#LI-E
 
Par exemple pour le disque tu as GetDriveName.
 
Par contre pour le chemin sans le disque y'a pas de fonctions par défaut.

Reply

Marsh Posté le 14-03-2008 à 11:47:24    

Arf oui ça j'avais vu, mais je ne suis pas vraiment à l'aise avec les objet, surtout que l'aide en ligne n'est pas vachement clair sur ce point là. J'ai donc préféré ne pas l'utilisé. D'ailleur le bout de code pour trouver la lettre du lecteur réseau qui m'intéresse, c'est un bout de code que j'ai trouvé sur le net et que j'ai adapté à mon besoin.

Reply

Marsh Posté le 18-03-2008 à 13:58:15    

Finalement, j'ai utilisé GetSetting et SaveSetting qui permettent d'enregistrer des clefs dans la base de registre. C'est simple et efficace.
 
Merci encore à tous pour les renseignements

Reply

Marsh Posté le 18-03-2008 à 16:25:17    

Jour Bon, sous forme de fichier Ini, à adapter
http://cjoint.com/?dsqykfZaah

Reply

Marsh Posté le 19-03-2008 à 10:02:34    

Merci, je vais voir.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed