Recherche récursive et copie de fichier

Emmanuel31

XLDnaute Occasionnel
Bonjour à tous.

Je suis à la recherche de code VBA pour faire une recherche récursive à partir d'un répertoire "parent", et une fois le fichier trouvé, le copier dans un répertoire cible généré.
Les fichiers doivent contenir dans le nom une chaine de chiffre qui se trouve dans une colonne.

Dis comme ça , c'est pas très parlant ... :(

Le but est donc (si je segmente étape par étape pour essayer d'expliquer mieux) :
- prendre la valeur numérique des cellules dans la colonne A
- chercher des fichiers dont le nom contient la valeur numérique de manière récursive dans un répertoire parent (donné en paramètre dans un autre onglet ainsi que l'extension)
- si le (ou les) fichier est trouvé, créer un répertoire à un endroit donné (en paramètre dans un autre onglet) portant le nom de la valeur numérique cherché en colonne A, et copier le fichier trouvé dans ce répertoire
- mettre en colonne B un lien hypertexte vers le répertoire créé s'il existe.

Un exemple parle souvent beaucoup plus que du blabla !:p
Donc voici en fichier joint la structure de base, avec un onglet paramètre où sont les ... paramètres ... :eek: et un onglet ID où sont mes éléments à chercher.

Quelqu'un peut-il m'aider svp ?
Merci.
 

Pièces jointes

  • Recherche et copie.xls
    16.5 KB · Affichages: 81

MichD

XLDnaute Impliqué
Re : Recherche récursive et copie de fichier

Tu peux mettre un moment d'arrêt juste après cette ligne de code de la procédure "Sub Créer_Répertoire(expression As String)"

Shell Commande, 0
'tu ajoutes :

Dim T As Double

T = Timer + 1
Do While Timer <= T
DoEvents
Loop

Cela provoquera un délai de 1 seconde (adaptable) après la création du répertoire.
 

MichD

XLDnaute Impliqué
Re : Recherche récursive et copie de fichier

Ajoute une temporisation de ce type à la fin de la procédure "Sub Créer_Répertoire(expression As String)"



'----------------------------------
Dim T As Double

T = Timer + 1 '1 = une seconde, tu peux ajouter .25 ou 2 secondes
'tu testes le délai qui va bien.

Do While T >= Timer
DoEvents
Loop
'----------------------------------
 

Emmanuel31

XLDnaute Occasionnel
Re : Recherche récursive et copie de fichier

Merci MichD !!!

C'est nickel , il y avait vraisemblablement un petit problème de latence, mais en rajoutant 0.25s ça marche nickel ...

Par contre j'ai essayé de rajouter un "UserForm1.Label1.Caption = "Mise à jour en cours ... " afin d'afficher ça le temps que ça cherche, mais je n'ai pas trouver l'endroit ou le mettre afin qu'il reste afficher toute la durée du processus ... :-(
 

MichD

XLDnaute Impliqué
Re : Recherche récursive et copie de fichier

Si tu veux ouvrir un formulaire affichant un message pendant l'exécution de la macro,
Tu peux appeler la macro directement du formulaire.
'-----------------------------
Sub Test()
Userform1.Show
End Sub
'-----------------------------

ET dans le formulaire ceci :

'-----------------------------
Private Sub UserForm_Activate()
Me.Repaint
Call LaMacro 'Appel de ta macro.
Me.Hide
Unload Me
End Sub
'-----------------------------

La ligne de commande à retenir : Me.Repaint qui permet à Windows d'afficher vraiment le formulaire avant de passer à une autre tâche !
 

Emmanuel31

XLDnaute Occasionnel
Re : Recherche récursive et copie de fichier

Je n'ai pas réussi à rajouter un paramètre à ceci par contre :
Code:
For Each C In .Range("A8:A" & _
.Range("A65536").End(xlUp).Row)
If C <> "" Then
Je voulais rajouter le test suivant : si C <> "" ET si la cellule à droite de C est aussi <> "" ...

J'ai essayé ceci mais ça ne marche pas :
Code:
If C <> "" AND Offset(, 1) <> "" Then
 
Dernière édition:

Discussions similaires

Réponses
6
Affichages
336

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal