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

  1. Thorak83 Messages postés 1140 Statut Membre 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
    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
    2. 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
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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. rEVOLV3r Messages postés 223 Date d'inscription   Statut Membre Dernière intervention   28
       
      Très élégant !
      0
    2. Thorak83 Messages postés 1140 Statut Membre 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
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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. Thorak83 Messages postés 1140 Statut Membre 156
       
      ok et si il a CheminMachine3= sheets("chemins").cells(10,"S") voue faite comment ?
      0
    5. 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