1

Bonjour à tous,

Je crois bien que c'est la première fois que je poste dans cette partie du forum, et je le regrette bien car je déteste le VBA... M'enfin mon maître de stage ne m'a pas trop laissé le choix.

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 , alors merci bien de votre aide quelque qu'elle soit.

...

2

chdir peut pas changer le drive avec? a mon avis il peut. non?

sinon t'as left(string,num) qui donne les num caracteres de gauche de la chaine, mid(string,pos,longueur) qui donne une sous chaine, et right(string,num) qui donne les N caracteres a droite.

et une variable est évidemment réinitialisée si tu fermes excel grin

si tu veux retrouver leur valeur, il te faut la stocker quelque part (fichier, cellule du document) et la recharger quand tu réouvres ton document.

3

squalyl (./2) :
chdir peut pas changer le drive avec? a mon avis il peut. non?


Non ça ne change pas le drive, et c'est dit explicitement dans l'aide en ligne.
squalyl (./2) :
sinon t'as left(string,num) qui donne les num caracteres de gauche de la chaine, mid(string,pos,longueur) qui donne une sous chaine, et right(string,num) qui donne les N caracteres a droite


C'est ce que j'ai fini par faire, je recherche le premier où le dernier "\" suivant ce que je veux et puis ensuite je coupe en fonction.
squalyl (./2) :
si tu veux retrouver leur valeur, il te faut la stocker quelque part (fichier, cellule du document) et la recharger quand tu réouvres ton document


Ce qui me gène, c'est que ce ne sont pas des données qui ont rapport avec une feuille en particulier, mais que je dois pouvoir retrouver à chaque fois que j'exécute une macro. Je me demande si je ne vais pas créer une feuille que j'enregistre dans xlstart, mais je ne sais pas si c'est très propre, mais je ne vois pas vraiment d'autre moyen.

...

4

lol je me rends compte que sur mon PC j'ai même pas les droits d'accès en écriture... lol je vais voir comment je peux faire, mais je ne vois pas trop pour le moment
...

5

Tu peux aussi accéder aux fichiers en VBA, avec l'instruction VB Open.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

6

Finalement, j'ai utilisé GetSetting et SaveSetting qui permettent d'enregistre des données dans la base de registre.
C'est vraiment simple d'utilisation et ça fonctionne sans problème.
...

7

ouais heu... non, rien grin

ça marche c'est ça qui compte hein grin

c'était pas possible un fichier externe?

8

lol je veux bien pourquoi pas; je suis en train de faire une appli en vba excel pour la boîte où je suis en stage. C'est un des informaticien de la boîte qui m'a conseillé cette fonction.

Cependant, j'ai comme l'impression que tu trouve pas ça très propre.

En fait ce qui me ferait le plus chier, c'est les accès aux fichiers, et le fait de devoir créer un objet de plus que je risque d'avoir du mal a gérer car je ne connais pas du tout.

Enfin, si tu as quelques conseils ou quelques suggestions, n'hésite pas, tu seras le bien venu.
...

9

f=freefile
open "fichier.txt" for output as #f
print #f,"coucou"
close #f

dim s as string
open "fichier.txt" for input as #f
get #f,s
close #f


(t1 ça fait trop longtemps que je fais plus de basic, j'ai oublié sick)

le registre c'est vraiment crade, et surtout c'est pas sortable du registre. (tu fais comment pour sauvegarder ailleurs? t'exportes un fichier .reg? grin )

10

squalyl (./9) :
le registre c'est vraiment crade, et surtout c'est pas sortable du registre. (tu fais comment pour sauvegarder ailleurs? t'exportes un fichier .reg? biggrin.gif )


En fait je n'ai pas vraiment besoin d'exporter, j'ai simplement besoin de mémoriser le chemin d'un fichier afin d'éviter à l'utilisateur de le rentrer à chaque fois qu'il travaille. Dans aucun cas il n'y aura besoin de l'exporter;

Le problème que je vois si j'utilise un fichier perso, c'est que je vais laisser un fichier à trainer sur le disque, et qu'avec un peu de mal chance, je vais vouloir le créer à un endroit où je n'ai pas les droits suffisants pour le faire (ça m'est déjà arriver pendant les tests).

Le problème que je vois avec le registre, c'est que le jour où la macro n'est plus utilisée, je laisse quelques clefs à trainer dans la base, mais bon de toutes les façons j'aurai le même problème avec un fichier.

En bref j'hésite encore, je balance, je ne sais pas quoi choisir ^^ En un mot comme en cent, je suis indécis tongue

Ce que je vais faire, c'est que je vais terminer comme celà, car je n'ai pas des masses de temps, et si je peux par la suite me pencher sur le problème je changerai sans doute.

Aurait-tu un endroit à me conseiller pour placer un fichier comme celui-ci? Dans \mes documents, ou dans \temp... je ne sais pas trop.

En tout cas si ça débouche, je te iendrais au courant
...

11

juste a coté du fichier qui contient la macro?
ou bien dans documents and settigs\<user>\Application Data?
ou bien mes documents, oué.
temp c'est un siège éjectable, j'éviterais hehe

je sais pas si on peut les choper facilement, ces chemins.

12

le dossier temp on peut le choper comme ça, c'est pour ça que je l'avais indiqué, pour les autre je verrais
...