VBA avancé - chemins relatifs et ChDir

Résolu/Fermé
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 - 25 juin 2013 à 10:21
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 25 juin 2013 à 11:02
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 jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
Modifié par Thorak83 le 25/06/2013 à 10:39
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 jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
25 juin 2013 à 10:42
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 jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
25 juin 2013 à 10:47
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
25 juin 2013 à 10:44
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 jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
25 juin 2013 à 10:48
Très élégant !
0
Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
Modifié par Thorak83 le 25/06/2013 à 10:50
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 25/06/2013 à 10:54
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 jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
25 juin 2013 à 10:56
ok et si il a CheminMachine3= sheets("chemins").cells(10,"S") voue faite comment ?
0
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
25 juin 2013 à 10:58
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