Récapituler plusieurs fichiers dans un seul
Bonjour,
En faisant des recherches sur le Net, je suis arrivé à monter cette macro. Celle-ci permet de copier des fichiers Excel se trouvant dans un dossier et de coller le résultat dans un onglet d'un autre fichier. Mais...j'ai un problème que je n'arrive pas à comprendre (ça fait plusieurs jours que je me casse la tête avec ça
Est-ce que quelqu'un peut m'aider à comprendre pourquoi ma macro ne traite pas tous les fichiers puis se termine
Merci beaucoup d'avance.
Voici ma macro
==================================
01. Sub TraiteFichiersNew_12122014()
02. 'Application.ScreenUpdating = False
03. Dim CheminFichierACopier As String
04. Dim CheminFichierBackUp As String
05. Dim FichiersDansDossier As String
06. Dim MesFichiersACopier() As String
07. Dim DerniereLigneFichierACopier As String
08. Dim DerniereCelluleColonneARecap As String
'Chemin où sont enregistrés les fichiers des Cyto à copier
09. CheminFichierACopier = "H:\Cato\FileToCopy"
'Chemin pour déplacer le fichier qui vient d'être copié
10. CheminFichierBackUp = "H:\Cato\BackUp"
'Ajoute un \ à la fin du chemin si nécessaire
11. If Right(CheminFichierACopier, 1) <> "\" Then
12. CheminFichierACopier = CheminFichierACopier & "\"
13. End If
'Message si aucun fichier dans le dossier
14. FichiersDansDossier = Dir(CheminFichierACopier & FichiersDansDossier)
15. If FichiersDansDossier = "" Then
16. MsgBox "Pas de fichier à traiter. Veuillez enregistrer des fichiers!", vbCritical
17. Exit Sub
18. End If
'Traitement des fichiers à copier dans récap
19. Do While FichiersDansDossier <> ""
20. FichiersDansDossier = Dir()
21. 'Ouvre les fichiers de base et copie les données
22. Workbooks.Open Filename:=CheminFichierACopier & FichiersDansDossier
23. DerniereLigneFichierACopier = Range("A1").SpecialCells(xlCellTypeLastCell).Row
24. Range("A1:C" & DerniereLigneFichierACopier).Copy 'je copie les données du fichie qui vient d'être ouvert
25. Application.DisplayAlerts = False
26. ActiveWindow.Close
'Va dans le fichier de RECAP et colle les données
27. Windows("test macro.xlsm").Activate 'j'active le fichier dans lequel je veux coller les valeurs
28. Sheets("CollageCato").Select 'je sélectionne l'onglet où je veux coller les valeurs
29. ActiveSheet.Range("A" & Rows.Count).End(xlUp)(2).PasteSpecial xlPasteAll
30. ActiveSheet.Range("A" & Rows.Count).End(xlUp)(2).Select
31. Name CheminFichierACopier & FichiersDansDossier As CheminFichierBackUp & "\" & FichiersDansDossier
32. Loop
33. 'Application.ScreenUpdating = True
34. End Sub
==================================
Bonsoir
Tu extrait 1 fichier avant de commencer ta boucle Do While FichiersDansDossier <> "" ..... Loop quand tu fais
FichiersDansDossier = Dir(CheminFichierACopier & FichiersDansDossier)mais celui-ci tu ne le traite pas
Dans ta boucle pour commencer tu extrait un autre fichier que tu traite etc .....
FichiersDansDossier = Dir()Donc tu as "perdu" un fichier
Modifies la macro
Sub TraiteFichiersNew_12122014()
'Application.ScreenUpdating = False
Dim CheminFichierACopier As String
Dim CheminFichierBackUp As String
Dim FichiersDansDossier As String
Dim MesFichiersACopier() As String
Dim DerniereLigneFichierACopier As String
Dim DerniereCelluleColonneARecap As String
'Chemin où sont enregistrés les fichiers des Cyto à copier
CheminFichierACopier = "H:\Cato\FileToCopy"
'Chemin pour déplacer le fichier qui vient d'être copié
CheminFichierBackUp = "H:\Cato\BackUp"
'Ajoute un \ à la fin du chemin si nécessaire
If Right(CheminFichierACopier, 1) <> "\" Then
CheminFichierACopier = CheminFichierACopier & "\"
End If
'Message si aucun fichier dans le dossier
FichiersDansDossier = Dir(CheminFichierACopier & FichiersDansDossier)
If FichiersDansDossier = "" Then
MsgBox "Pas de fichier à traiter. Veuillez enregistrer des fichiers!", vbCritical
Exit Sub
End If
'Traitement des fichiers à copier dans récap
Do While FichiersDansDossier <> ""
' FichiersDansDossier = Dir() ' ligne à déplacer avant le Loop
'Ouvre les fichiers de base et copie les données
Workbooks.Open Filename:=CheminFichierACopier & FichiersDansDossier
DerniereLigneFichierACopier = Range("A1").SpecialCells(xlCellTypeLastCell).Row
Range("A1:C" & DerniereLigneFichierACopier).Copy 'je copie les données du fichie qui vient d'être ouvert
Application.DisplayAlerts = False
ActiveWindow.Close
'Va dans le fichier de RECAP et colle les données
Windows("test macro.xlsm").Activate 'j'active le fichier dans lequel je veux coller les valeurs
Sheets("CollageCato").Select 'je sélectionne l'onglet où je veux coller les valeurs
ActiveSheet.Range("A" & Rows.Count).End(xlUp)(2).PasteSpecial xlPasteAll
ActiveSheet.Range("A" & Rows.Count).End(xlUp)(2).Select
Name CheminFichierACopier & FichiersDansDossier As CheminFichierBackUp & "\" & FichiersDansDossier
FichiersDansDossier = Dir()
Loop
'Application.ScreenUpdating = True
End SubBonjour,
Merci pour cette proposition. J'ai donc déplacer comme suit :
'Traitement des fichiers à copier dans récap
FichiersDansDossier = Dir()
Do While FichiersDansDossier <> ""
'Ouvre les fichiers de base et copie les données
Workbooks.Open Filename:=CheminFichierACopier & FichiersDansDossier
ActiveSheet.Range("A" & Rows.Count).End(xlUp)(2).Select
Name CheminFichierACopier & FichiersDansDossier As CheminFichierBackUp & "\" & FichiersDansDossier
FichiersDansDossier = Dir()
Loop
Mais je traite toujours que 2 fichiers sur 3 (ou 4 sur 5)
BDel
Bonjour
Presque ça
Sub TraiteFichiersNew_12122014()
'Application.ScreenUpdating = False
Dim CheminFichierACopier As String
Dim CheminFichierBackUp As String
Dim FichiersDansDossier As String
Dim MesFichiersACopier() As String
Dim DerniereLigneFichierACopier As String
Dim DerniereCelluleColonneARecap As String
'Chemin où sont enregistrés les fichiers des Cyto à copier
CheminFichierACopier = "H:\Cato\FileToCopy"
'Chemin pour déplacer le fichier qui vient d'être copié
CheminFichierBackUp = "H:\Cato\BackUp"
'Ajoute un \ à la fin du chemin si nécessaire
If Right(CheminFichierACopier, 1) <> "\" Then
CheminFichierACopier = CheminFichierACopier & "\"
End If
'Message si aucun fichier dans le dossier
FichiersDansDossier = Dir(CheminFichierACopier & FichiersDansDossier)
If FichiersDansDossier = "" Then
MsgBox "Pas de fichier à traiter. Veuillez enregistrer des fichiers!", vbCritical
Exit Sub
End If
'Traitement des fichiers à copier dans récap
Do While FichiersDansDossier <> ""
'Ouvre les fichiers de base et copie les données
Workbooks.Open Filename:=CheminFichierACopier & FichiersDansDossier
DerniereLigneFichierACopier = Range("A1").SpecialCells(xlCellTypeLastCell).Row
Range("A1:C" & DerniereLigneFichierACopier).Copy 'je copie les données du fichie qui vient d'être ouvert
Application.DisplayAlerts = False
ActiveWindow.Close
'Va dans le fichier de RECAP et colle les données
Windows("test macro.xlsm").Activate 'j'active le fichier dans lequel je veux coller les valeurs
Sheets("CollageCato").Select 'je sélectionne l'onglet où je veux coller les valeurs
ActiveSheet.Range("A" & Rows.Count).End(xlUp)(2).PasteSpecial xlPasteAll
ActiveSheet.Range("A" & Rows.Count).End(xlUp)(2).Select
Name CheminFichierACopier & FichiersDansDossier As CheminFichierBackUp & "\" & FichiersDansDossier
FichiersDansDossier = Dir()
Loop
'Application.ScreenUpdating = True
End SubBonjour,
Merci Banzai64, ça fonctionne impeccable. Je voyais bien que la 1ère référence était le fichier qui à la fin n'était pas traité. Des heures là-dessus à essayer de comprendre.
Donc un grand merci et de belles fêtes
Bonne soirée
BDel