Re : Coipier et concatener 23 feuilles dans un autre fichier
Bonsoir à tous,
Un code effectué avec les données connues du projet :
Sub ReportDonnees()
Dim Chemin As String, Classeur As String, Fichier As String, Derlig As Integer, i As Byte, Tablo
' Effacement du report précédent
With Workbooks("Résultat.xls")
With Sheets("Resultats")
Derlig = .Range("A65000").End(xlUp).Row
.Range("A2
" & Derlig + 1).ClearContents
End With
End With
' Report des données des fichiers sources
Chemin = "C:\Users\Bernard\Documents\BrouillonXld\" ' Chemin du répertoire contenant les fichiers source
For i = 1 To 23 ' Boucle sur les 23 fichiers
' Création du nom des fichiers
Classeur = CStr("MH_" & i & ".xls")
Fichier = Chemin & Classeur
' Ouverture du fichier
On Error Resume Next
Workbooks.Open Filename:=Fichier
' Mise en tableau des données à reporter
If Err.Number = 0 Then
With Workbooks(Classeur)
With Sheets("Feuil1") ' Nom de la feuille contenant les données
Derlig = .Range("A65000").End(xlUp).Row
Tablo = .Range("A2
" & Derlig)
End With
.Close ' Fermeture du fichier
End With
' Report dans le fichier "Résultat"
With Workbooks("Résultat.xls")
With Sheets("Resultats")
Derlig = .Range("A65000").End(xlUp).Row
.Cells(Derlig + 1, 1).Resize(UBound(Tablo, 1), UBound(Tablo, 2)) = Tablo
End With
End With
Else
MsgBox "Le classeur appelé " & Classeur & " est inexistant"
Exit Sub
End If
On Error GoTo 0
Next i
End Sub
Quelques explications car quelques paramètres seront à adapter :
1- Le chemin du répertoire contenant les fichers source est à mettre à jour dans la macro.
2- Les données des fichiers sources sont pour l'instant considérées présentes dans les 4 colonnes A
avec un entête.
3- La feuille des fichiers sources comprenant les valeurs à reporter est appelée "Feuil1"
4- La boucle sur les fichiers sources est limité à 23 cycles.
5- En cas d'absence d'un classeur MH_x, un message alerte de son absence et la macro est stoppée.