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 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| Sub Compilation()
' Ce code doit servir à regrouper les données des feuilles de plusieurs classeurs Excel enregistrés dans le même dossier que ce classeur
Application.DisplayAlerts = False ' pour éviter les message demandant confirmation lors d'une fermeture (notamment le fait d'avoir des données dans le presse papier
chemin = ThisWorkbook.Path 'chemin du dossier qui contient les autres fichiers et où est enregistré ce fichier qui servira de compilateur
Set fso = New FileSystemObject 'l'utilisation des FSO nécessite l'activation de la référence Microsoft Scripting Runtime
Set dossier = fso.GetFolder(chemin) '
Dim r As Integer ' r sera le n° de la ligne de la feuille compilateur
r = 2
Dim nbfichiers ' nbfichier sera le nombre de fichiers traités
nbfichier = 0
Dim listedesfichierstraités As String
For Each fichier In dossier.Files ' boucle sur les fichiers
If fso.GetExtensionName(fichier.Path) = "xlsx" And fichier.Name <> ThisWorkbook.Name Then 'sélection des fichiers à traiter : classeurs excel et pas le compilateur
nbfichiers = nbfichiers + 1
listedesfichierstraités = listedesfichierstraités & fichier.ShortName & Chr(10)
Workbooks.Open fichier 'ouverture d'un fichier
'For i = 1 To ActiveWorkbook.Sheets.Count ' boucle sur les feuilles de ce fichier
Sheets("Rentabilité Projet").Select 'sélection de la feuille
ThisWorkbook.Sheets("Feuil1").Range("A" & r) = Workbooks(fichier).Sheets("Rentabilité Projet").Range("D4").Value
'ThisWorkbook.Sheets("Feuil1").Range("B" & r) = Workbooks(fichier).Sheets("Rentabilité Projet").Range("D6").Value
'ThisWorkbook.Sheets("Feuil1").Range("C" & r) = Workbooks(fichier).Sheets("Rentabilité Projet").Range("D8").Value
'ThisWorkbook.Sheets("Feuil1").Range("D" & r) = Workbooks(fichier).Sheets("Rentabilité Projet").Range("H8").Value
'ThisWorkbook.Sheets("Feuil1").Range("E" & r) = Workbooks(fichier).Sheets("Rentabilité Projet").Range("C17").Value
'ThisWorkbook.Sheets("Feuil1").Range("F" & r) = Workbooks(fichier).Sheets("Rentabilité Projet").Range("E35").Value
Workbooks(fichier.Name).Activate
'Next i
r = r + 1 'on ajoute à r la dernière ligne pour toujours se placer sur la 1ère cellule vide de la colonne A
Workbooks(fichier.Name).Close (False) 'on ferme le fichier ouvert précédemment
End If
Next fichier
Application.DisplayAlerts = True 'on rétablie le paramétrage standard
Cells(1, 1).Select
MsgBox ("Le traitement est terminé." & Chr(10) & nbfichiers & " fichiers ont été traités, en voici la liste :" & Chr(10) & listedesfichierstraités)
End Sub |
Partager