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   -
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

2 réponses

Thorak83 Messages postés 1051 Date d'inscription   Statut Membre Dernière intervention   156
 
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
1
rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   28
 
Bonjour,

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
0
rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   28
 
Ca fonctionne !!!!
Merci beaucoup ! 1h que je me tracassais a chercher a repointer le string sur la cellule ^^

Bonne journée
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

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
1
rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   28
 
Très élégant !
0
Thorak83 Messages postés 1051 Date d'inscription   Statut Membre Dernière intervention   156
 
Heu qui vous dis que c'est tous les 3 lignes qu'il y a un chemin ? 2 cas ne fait pas une généralité
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Heu qui vous dis que c'est tous les 3 lignes qu'il y a un chemin ? qui ne le dit pas ????

CheminMachine1 = sheets("chemins").cells(6,"S")
CheminMachine2 = sheets("chemins").cells(9,"S")
et jusqu'à machine7

Tout est dans la non expression du besoin!!!! Probleme des demandes non abouties.
0
Thorak83 Messages postés 1051 Date d'inscription   Statut Membre Dernière intervention   156
 
ok et si il a CheminMachine3= sheets("chemins").cells(10,"S") voue faite comment ?
0
rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   28
 
Il y en a un toutes les 3 lignes ;-)

Mais si ca n'avait pas été le cas, j'aurais trouvé une solution vous en faites pas^^
0