bj..jai besoin de compiler les données de plusieurs fichiers excel dans une seul feuille...merci de me communiquer la macro.
ci_joint les 3 fichiers...c'est juste un exemple
Je crois que le point 1) [Section Demandeur], de la charte sert de moins en moins, non?
Je ne comprends pas cette phraseEt keep cool avec DireStraits, merci !
Private Sub Workbook_Activate()
Dim chemin$, a, feuille$, fichier, wb As Workbook
chemin = ThisWorkbook.Path & "\" 'à adapter
a = Array("1.xlsx", "2.xlsx", "3.xlsx") 'liste à adapter
feuille = "Tuteur" 'à adapter
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With Feuil1 'CodeName
.Cells.Delete 'RAZ
For Each fichier In a
Set wb = Workbooks.Open(chemin & fichier) 'ouverture du fichier
wb.Sheets(feuille).UsedRange.Copy
.[A1].Insert xlDown
Application.CutCopyMode = 0
wb.Close False 'fermeture du fichier
Next
.UsedRange.Sort .Columns(1), xlAscending, Header:=xlNo 'tri
.UsedRange.RemoveDuplicates Array(1, 2), Header:=xlNo 'supprime les doublons
.Rows(.[A1].CurrentRegion.Rows.Count + 1 & ":" & .Rows.Count).Delete 'RAZ en dessous
.Columns.AutoFit 'ajustement largeur
With .UsedRange: End With 'actualise la barre de défilement verticale
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Il y a plusieurs solutions à disposition dans le message#7 en lisant le fil cité...Je trouve ... sans donner de véritables solutions.
Private Sub Workbook_Activate()
Dim chemin$, a, feuille$, fichier, F As Worksheet
chemin = ThisWorkbook.Path & "\" 'à adapter
a = Array("1.xlsx", "2.xlsx", "3.xlsx") 'liste à adapter
feuille = "Tuteur" 'à adapter
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next 'sécurité si un fichier n'existe pas
With Feuil1 'CodeName
.Cells.Delete 'RAZ
For Each fichier In a
Set F = Workbooks.Open(chemin & fichier).Sheets(feuille) 'ouverture du fichier
F.UsedRange.Columns(3).ReadingOrder = xlLTR 'de gauche à droite
F.UsedRange.Columns(3) = "=REPT(""" & fichier & """,COUNTA(RC[-2]:RC[-1])>0)"
F.UsedRange.Columns(3) = F.UsedRange.Columns(3).Value 'supprime les formules
F.UsedRange.Copy
If Application.CutCopyMode Then .[A1].Insert xlDown
Application.CutCopyMode = 0
F.Parent.Close False 'fermeture du fichier
Next
.UsedRange.Sort .Columns(1), xlAscending, Header:=xlNo 'tri
.UsedRange.RemoveDuplicates Array(1, 2), Header:=xlNo 'supprime les doublons
.Rows(.[A1].CurrentRegion.Rows.Count + 1 & ":" & .Rows.Count).Delete 'RAZ en dessous
.Columns.AutoFit 'ajustement largeur
With .UsedRange: End With 'actualise la barre de défilement verticale
End With
Application.EnableEvents = True 'réactive les évènements
End Sub