VBA avancé - chemins relatifs et ChDir

Résolu
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

  1. 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
    1. 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
    2. Ca fonctionne !!!!
      Merci beaucoup ! 1h que je me tracassais a chercher a repointer le string sur la cellule ^^

      Bonne journée
      0
  2. 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
    1. Très élégant !
      0
    2. 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
    3. 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
    4. ok et si il a CheminMachine3= sheets("chemins").cells(10,"S") voue faite comment ?
      0
    5. 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