Bonjour à tous
j'aimerais grâce au code ci-dessous :
1-parcourir un répertoire
2-ouvrir les sous répertoires un par un
3-ouvrir à chaque fois le fichier dont le nom commence par une chaîne de caractères donnée
4-faire un copier coller suivant certaines conditions
J'ai pour l'instant réussi à coder les étapes 1, 2 et 4. Reste la 3 : j'ai pu faire toute ma manip sur un fichier en particuler, je veux rendre la manipulation plus générale. Pourriez-vous me donner un coup de main s'il vous plait ?
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
24
25
26
27
28
29
30
31
32 Sub AllFolders(TheFolder As String) '***chercher dans les sous dossiers d'un répertoire racine*** 'declaration de l'objet file system Dim fso As Object, Folder As Object Dim Fichier As Object, Fichier1 As Object Dim sousRep As Object Set fso = CreateObject("Scripting.FileSystemObject") 'on charge le Dossier à scanner : on demande au moteur de chercher dans TheFolder => dans le chemin indiqué_ '_de chercher les sous répertoires dans le répertoire Set Folder = fso.GetFolder(TheFolder) ' on met la liste des fichiers du dossier dans Fichier Set Fichier = Folder.Files For Each Fichier1 In Fichier Call b_search Next 'traitement récursif des sous dossiers For Each sousRep In Folder.subfolders 'path retourne l'adresse physique en plein texte AllFolders sousRep.Path Next sousRep Set fso = Nothing End Sub ______________________ Sub a_Parcourir_Repertoire() AllFolders "C:\Users\MOKRRAOY\Downloads\" End Sub
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
24
25
26
27 Sub b_search(TheFile As String) '**** rechercher dans le fichier source la cellule dont la valeur correspond à celle de la cellule D4 du fichier cible**** 'Dim fso As Object, Fichier As Object Dim periode As String Dim celluletrouvee As Range Dim wbSource As Workbook 'ouvrir le fichier2 et cibler la cellule periode Set wbSource = Workbooks.Open("C:\Users\MOKRRAOY\Downloads\GFK_NOTE_JARDIN_Mar15-Apr15.xls") periode = wbSource.Worksheets("SYNTHESE").Range("$D$4").Value 'revenir vers le fichier1.xlsm Set celluletrouvee = ThisWorkbook.Sheets("CRF").Range("1:50").Find(periode, lookat:=xlWhole) If celluletrouvee Is Nothing Then MsgBox ("période indisponible") wbSource.Close SaveChanges:=False Else Call c_copie(periode, celluletrouvee) End If End Sub
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
24
25
26
27
28
29
30
31 Sub c_copie(periode As String, celluletrouvee As Range) '***Copie des données du fichier cible dans le fichier de base*** '***attention ceci n'est pas un copier coller*** Dim wbSource As Workbook Dim i, j As Integer Dim offseti, offsetj As Integer offseti = celluletrouvee.Row offsetj = celluletrouvee.Column Set wbSource = ActiveWorkbook If wbSource.Worksheets("SYNTHESE").Range("D04").Value = periode Then For i = 8 To 15 Step 1 For j = 2 To 5 Step 1 ThisWorkbook.Sheets("CRF").Cells(offseti + 2, offsetj).Value = wbSource.Worksheets("SYNTHESE").Cells(i, j).Value offsetj = offsetj + 1 Next j offsetj = celluletrouvee.Column offseti = offseti + 1 Next i Else MsgBox "yolooo" End If wbSource.Close SaveChanges:=False End Sub
Merci par avance
Partager