[résolu ]recherche de dossier, commande Dir et ChDir

scaleo

XLDnaute Nouveau
/!\ Sujet Résolu /!\


poste d’origine, à ne plus prendre en compte :
Bonjour à tous,

voila ma problématique:

je dois importer des donnés contenu dans un classeur excel, en indiquant le dossier où est stocké le fichier voulu.
voila le type d'architecture du répertoire de stockage :

répertoire principale: -dossier 1 - sous-dossier 1
-sous-dossier 2
-
-
-

-dossier 2 - sous-dossier 1
-sous-dossier 2
-
-
-
j'ai un début de macro mais j'ai du mal à utiliser les fonction Dir et ChDir.



merci pour votre aide ;)

Scaleo
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : recherche de dossier, commande Dir et ChDir

Bonjour, salut Yaloo :rolleyes:,
Au vu de ce qui a été posté...
la macro compare les 4 premiers caractères des nom de dossiers dans le répertoire avec le numéro de projet.
faux
une fois que le dossier est trouvé, la macro cherche le dossier qui à le même nom que la valeur dans la revision_box.
faux
enfin elle cherche tous les fichiers qui s'appelle "classeur1.xls", copier une cellule en particulier sans ouvrir le document, et la colle dans mon classeur actuel .
faux

Ca commence à faire beaucoup...et il me semble que tu te noies dans un verre d'eau !
Mais si tu prenais la peine de consacrer 5 véritables minutes à expliquer clairement ton pb...!
A+
kjin
 

Yaloo

XLDnaute Barbatruc
Re : recherche de dossier, commande Dir et ChDir

Re,

Voici ton fichier ainsi que tes fichiers (dans répertoire) j'en ai rajouté pour vérifier que ça fonctionne correctement. Ta solution me parais un peu compliquée. Il doit y avoir une solution plus facile, mais je ne la connais pas.

A te relire

Martial
 

Pièces jointes

  • rechercher dossier V1.xls
    46 KB · Affichages: 47
  • repertoire.zip
    153.7 KB · Affichages: 30
  • repertoire.zip
    153.7 KB · Affichages: 30
  • repertoire.zip
    153.7 KB · Affichages: 33

scaleo

XLDnaute Nouveau
Re : recherche de dossier, commande Dir et ChDir

bonjour Kjin,

je me suis peu être mal exprimer, mais c'est pas en disant "faux" que ça va m'aider...
je suis autodidacte dans le codage vba donc c'est normal que je pige pas tout...

ça fait quoi alors là ?

Code:
          'step 1
        
Sub OpenTheProject(YearNo As String, ProjectNo As String)  '

    Dim test As String

    Dim Projectfoldername As String

    Projectfoldername = Dir$(YearNo & "\", vbDirectory)
    Do Until Left(Projectfoldername, 4) = Left(ProjectNo, 4)
        Projectfoldername = Dir$()
        
       If Projectfoldername = "" Then
            MsgBox ("Offer " & ProjectNo & " not found.")
            UserForm_initialize
        End
       
       End If
        
    Loop


    
    test = YearNo + "\" + Projectfoldername + "\"
    
    ChDir test
   MsgBox CurDir
    
End Sub

si je ne raconte pas de bêtise, la sub passe en revue tous les dossiers contenuent dans mon répertoire et quand les 4 premiers caractères du-dit dossier corresponde à ceux de ma cellule, il change le dossier par défaut non?
on peut dire qu'elle" compare" par abus de langage ?


une fois que le dossier est trouvé, la macro cherche le dossier qui à le même nom que la valeur dans la revision_box.

correction : une fois que le dossier est trouvé, la macro "change le dossier par défaut si le dossier qui à le même nom que la valeur dans la revision_box existe "


après si je me suis planté quelque pars, je suis tout ouïs...

mon problème c'est au choix de la révision, la macro n'arrive pas trouver le chemin d’accès .
donc si on peut m'aider à trouver une solution et si je pouvais améliorer un peu la façon donc la procédure s’arrête en cas de plantage sans fermer l'userform, ça serrait cool.
 
Dernière édition:

scaleo

XLDnaute Nouveau
Re : recherche de dossier, commande Dir et ChDir

merci Yaloo d'avoir pris le temps de m'aider malgré mes difficultés à m'expliquer, ça marche niquel :)

c'est sûr que c'est tordus comme recherche mais j'ai fais avec ce que ma donné le chef...

je vais analyser ton codes et je te poserais des questions après.

encore merci :)

ps :j'étais en train de rédiger mon roman quand tu as posté ta solution .
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : recherche de dossier, commande Dir et ChDir

Re,

Je ne sais pas s'il faut faire comme ça, mais en gros :

- J'ai créé une variable RevisionPasOk en Boolean
- Je lui attribue la valeur False lors du lancement de la macro de recherche.
- Lorsque la révision n'est pas trouvée je donne la valeur True à la variable
- Puis sort de la macro de recherche de la révision
- Et enfin si la variable est True dans la macro de recherche je sors avant de lancer GetInfosFromAllItemAndAlternatives et la fermeutre de l'UserForm.

Ce n'est pas très académique mais ça fonctionne :eek:

A+
 

scaleo

XLDnaute Nouveau
Re : recherche de dossier, commande Dir et ChDir

merci pour l'explication :)

voila mes questions :

si j'ai bien compris, "private" c'est uniquement pour le module/userform en cours, et "public" on peut l'utiliser à partir d'un autre ?
l'instruction " sub machin ()" par defaut n'est valable que dans le module en cours ?


pourquoi tu ne définis pas les variables du genre "Dim bidule as quelque chose", juste "Dim bidule$" ?

les $ partout ont quoi comme effet ? c'est à cause du format pour version 97-2003 ?

je ne vois pas où est la différence de code mise a part les $ , les "Dim bidule$" et le RevisionPasOk, tu as modifié quoi d'autre ?

Code:
[G8:G2000].ClearContents
[F8].Activate

quand tu mets des [ ] ça évite de taper ActivesSheets.Cells ( ligne, colonne) ?
 

Yaloo

XLDnaute Barbatruc
Re : recherche de dossier, commande Dir et ChDir

Re,

J'ai mis Public, pourquoi ... je ne sais pas, comme nous sommes dans l'UserForm, j'aurai très bien pu le mettre dans la procédure avec Dim RevisionPasOk as Boolean.

On écrit Public surtout lorsque la variable a besoin d'être utilsée dans un autre module ou un autre UserForm.

Les symboles remplacent les String, les Long etc...
$ = String
& = Long
# = Double
% = Integer

C'est plus rapide à taper et ça fait moins de ligne en début de macro. J'aime bien voir le maximum de ligne sur mon écran, c'est aussi pour ça que j'ai supprimé toutes tes lignes vides et mis les 'aides à la fin de la ligne concernée.

C'est une méthode mais pas forcément la meilleure.

Les [ ] permettent encore de gagner du temps, de l'espace et de la compréhension, [F8] désigne Range("F8") ou Cells(8, 6)

On ne gagne pas en rapidité sur le temps d'exécution, mais on gagne du temps à l'écriture et à la relecture.

A+
 

scaleo

XLDnaute Nouveau
Re : recherche de dossier, commande Dir et ChDir

merci pour ton aide Yaloo.

qu'as-tu modifié pour que ça marche? j'ai rien remarqué de nouveau dans le code.

au faite Kjin, j'attends toujours tes explications ...

edit: c'est à y rien comprendre, je relance mon programme d'origine sans modification ( pas l'exemple ) ,et là, comme par hasard, ça marche nickel... raaaa que j'en ai marre !
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 685
Messages
2 090 946
Membres
104 705
dernier inscrit
Mike72