Bonjour tout le monde
je promets, j'ai cherché avant !
j'ai trouvé différentes choses, plus ou moins complexes, mais mon niveau fait que j'ai tendance à me concentrer sur les codes plus courts que je trouve, car je me perds parfois...
J'ai besoin de faire une macro qui teste tous les sous répertoires d'un emplacement réseau, et qui, à chaque fois qu'il rencontrer un fichier "FEC" (#amiscomptables), me copiera/collera le fameux fichier dans un certain endroit. (Pas confiance dans notre infogérant dont les sauvegardes sont aléatoires, et ce sont les fichiers les plus importants pour un cabinet comptable...)
Pour détecter si le fichier en question est un fichier FEC, pas de souci, ils sont faciles à repérer, ce sont des fichiers textes qui commencent par 9 chiffres suivis de "FEC", du genre "123456789FEC20221231.txt" : Ca, c'est ok je sais faire
Pour la partie copier/coller du fichier, pas de souci, je sais faire aussi
Ce que je n'arrive pas à faire, c'est qu'il ne va que sur un seul niveau de sous dossier... je ne trouve pas le code qui va bien pour aller tester plus profond dans les sous dossiers
du coup, je pense que je ne pars pas sur la bonne idée de base...
voila ce que j'ai fait, ça me semble un peu trop simpliste, et je suppose qu'avec cette méthode, il faudrait prévoir autant de "f"x qu'il n'y a de sous dossiers, sauf que je ne peux pas le prévoir à l'avance...
j'ai fait un repertoire test sur mon bureau avec 3 niveaux de sous dossiers, dont un vide, histoire de tenter de feinter excel
Si vous avez de quoi m'aider, je vous en serai tellement reconnaissant
un grand merci par avance de toute aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Sub Fec_test_4() Dim MonRepertoire As String Dim Num As String Dim Fso As Object Dim F1 As Object, F2 As Object Dim NomFichier As String Set Fso = CreateObject("scripting.filesystemobject") MonRepertoire = "C:\Users\ferrier\Desktop\test extraction fec\" For Each F1 In Fso.GetFolder(MonRepertoire).SubFolders For Each F2 In F1.Files NomFichier = Right(F2, Len(F2) - Len(F1) - 1) If IsNumeric(Left(NomFichier, 9)) And Right(Left(NomFichier, 12), 3) = "FEC" Then MsgBox MonRepertoire & NomFichier 'à remplacer in fine par le copiage/collage du fichier Else End If Next F2 Next F1 End Sub
julien
Partager