XL 2016 Dossiers/sous dossiers, copie de fichier le + récent vers autre dossier, récursivité ...

pepeboy

XLDnaute Nouveau
Bonjour,
Depuis plusieurs jours sur le sujet je bloque, je craque.... j'ai usé de google et fait plusieurs tests mais sans succès.

Je souhaite copier le fichier xlsm le plus récent de plusieurs sous répertoires, ce vers un autre répertoire que j’appellerai repdest , en VBA.
j'ai une structure comme suit:
C:\data\xxx\Chiffrage\
C:\data\yyy\02_Chiffrage\
C:\data\zzz\Chiffrages\
C:\data\www\Chiffrage autre\
C:\repdest\
avec l'exemple ci-dessus je devrais donc récupérer 4 fichiers (au milieu de quelques dizaines) et les copier vers repdest.

Les fichiers à copier contiennent tous "OP" dans leur nom; du type OP2065.xlsm ou OP45879best.xlsm...
Sous les répertoires xxx ou yyy il y a plusieurs autres sous répertoires dont un contenant "chiffrage", le fichier cherché est toujours dans ce répertoire.
Le fichier contenant la macro est dans le répertoire data.

Entre récursivité et fichier le plus récent je patauge. Et je ne sais pas comment atteindre les sous répertoires ou sont stockés les fichiers recherchés.

Des pistes SVP,
Merci
 

Roland_M

XLDnaute Barbatruc
Bonsoir,

routines pour parcourir (lister) tous les fichiers d'un répertoire donné avec tous ses Sous/Reps

Code:
Public xFSO As FileSystemObject, xSourceFolder As Folder, xSubFolder As Folder, xFileItem As File

Sub Essai() ' ******** tu te positionnes ici et tu fais F5  ou  F8 pour exécuter pas à pas
InitFSO 'en 1'
RepDeBase$ = "E:\Documents\PERSO_GESTION" ' adapter
ListeFichiersRepSousReps RepDeBase$ 'appel procédure
ReinitVarsFSO 'en dernier
End Sub

Private Sub InitFSO()
Set xFSO = New Scripting.FileSystemObject
End Sub

Private Sub ReinitVarsFSO()
Set xFSO = Nothing: Set xSourceFolder = Nothing: Set xSubFolder = Nothing: Set xFileItem = Nothing
End Sub

Private Sub ListeFichiersRepSousReps(RepDeBase$) 'appel récursif
On Error GoTo Suite
Set xSourceFolder = xFSO.GetFolder(RepDeBase$)
For Each xFileItem In xSourceFolder.Files
    MsgBox xFileItem.Name
Next
For Each xSubFolder In xSourceFolder.SubFolders 'récursivité ici, suite sous reps !?
If (xSubFolder.Attributes And 1024) = 0 Then ListeFichiersRepSousReps xSubFolder.Path
Next
Suite:
End Sub
 
Dernière édition:

pepeboy

XLDnaute Nouveau
Bonjour l'ami Roland, désolé j'ai dû interrompre pour une autre activité.
Merci.
non cela ne fonctionne pas, dés le premier F8 j'ai "erreur de compilation: type défini par l'utilisateur non défini"...
avec Public "xFSO As FileSystemObject" sélectionné en bleu
 

Roland_M

XLDnaute Barbatruc
bonjour,

tu dois cocher la référence: Microsost Scripting runtime

tu aurais pu venir poser simplement la question, je t'aurai répondu !
car crois moi ça fonctionne !

mais il faut aussi un peu s'investir, par exemple faire une recherche sur l'erreur !
 

pepeboy

XLDnaute Nouveau
bonjour Roland, effectivement, cela fonctionne mieux :)
Je m'investi, je m'investi Monseigneur ! Pourquoi en douter à priori ? Etant relativement novice, je n'ai pas encore de toute évidence les bons réflexes.
J'ai posé la question dés que le problème fut constaté, me replongeant dans le sujet aujourd'hui seulement.
Merci
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG