VBA avancé - chemins relatifs et ChDir
Résolu
rEVOLV3r
Messages postés
223
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Normalement c'est plutôt moi qui répond au sujet, mais aujourd'hui j'ai une question pour vous ! ;-)
Voilà je crée une macro assez balèze permettant de trier plusieurs type de données différentes dans plusieurs répertoires différents.
Mon problème se situe lors de l'implémentation des chemins. J'aimerais faire quelque chose de beau et ne pas écrire la macro pour chaque chemins ou sont stockées les données.
J'ai 7 chemins ou sont stockées les données marqués comme cela :
CheminMachine1 = sheets("chemins").cells(6,"S")
CheminMachine2 = sheets("chemins").cells(9,"S")
et jusqu'à machine7
Ma macro commence comme cela après :
For i = 1 to 7
CheminOpen = "CheminMachine" & i
CheminOpenData = CheminOpen & "\*.*"
Chdir(CheminOpen)
.
.
.
Le problème est que le CheminOpen vaut bien en string : CheminMachine1, CheminMachine2 puis 3 etc. Cependant ce string ne vaut plus le chemin contenu dans la cellule !
La fonction Chdir s'effectue sur CheminMachine1 et non pas sur C:\....\...\
Est ce que qqn aurait une solution à ce problème ? Rétablir le lien entre le string et le pointeur sur la cellule contenant le chemin ?
Merci beaucoup de votre aide
Normalement c'est plutôt moi qui répond au sujet, mais aujourd'hui j'ai une question pour vous ! ;-)
Voilà je crée une macro assez balèze permettant de trier plusieurs type de données différentes dans plusieurs répertoires différents.
Mon problème se situe lors de l'implémentation des chemins. J'aimerais faire quelque chose de beau et ne pas écrire la macro pour chaque chemins ou sont stockées les données.
J'ai 7 chemins ou sont stockées les données marqués comme cela :
CheminMachine1 = sheets("chemins").cells(6,"S")
CheminMachine2 = sheets("chemins").cells(9,"S")
et jusqu'à machine7
Ma macro commence comme cela après :
For i = 1 to 7
CheminOpen = "CheminMachine" & i
CheminOpenData = CheminOpen & "\*.*"
Chdir(CheminOpen)
.
.
.
Le problème est que le CheminOpen vaut bien en string : CheminMachine1, CheminMachine2 puis 3 etc. Cependant ce string ne vaut plus le chemin contenu dans la cellule !
La fonction Chdir s'effectue sur CheminMachine1 et non pas sur C:\....\...\
Est ce que qqn aurait une solution à ce problème ? Rétablir le lien entre le string et le pointeur sur la cellule contenant le chemin ?
Merci beaucoup de votre aide
2 réponses
Bonjour, je pense que ce n'est pas possible en vba.
par contre pourquoi ne pas utiliser des variables tableaux ?
CheminMachine(1) = sheets("chemins").cells(6,"S")
CheminMachine(2) = sheets("chemins").cells(9,"S")
et plus loin
CheminOpen = CheminMachine(i )
Cordialement
par contre pourquoi ne pas utiliser des variables tableaux ?
CheminMachine(1) = sheets("chemins").cells(6,"S")
CheminMachine(2) = sheets("chemins").cells(9,"S")
et plus loin
CheminOpen = CheminMachine(i )
Cordialement
Bonjour,
un peu plus simple:
un peu plus simple:
Sub test_chemin() of7 = 0 For i = 1 To 7 CheminOpen = Worksheets("chemins").Range("S" & i + 5 + of7) CheminOpenData = CheminOpen & "\*.*" of7 = 2 * i ChDir (CheminOpen) 'reste du code ' Next i End Sub
Merci pour votre réponse rapide !
J'avoue, bien pensé ! Je savais pas que le VBA prenait en compte les array.
Je vais tester ca tout de suite
Amicalement
Merci beaucoup ! 1h que je me tracassais a chercher a repointer le string sur la cellule ^^
Bonne journée