Compiler plusieurs fichiers excel
Résolu
saracino
Messages postés
3
Statut
Membre
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'ai un soucis Sur Excel.
Ma question est peut etre basique mais j'aimerais la réponse car j'en ai besoin pour le travail.
Voila, j'ai Soixante fichiers excel de forme identique avec à chaque fois 1 feuille toujours de forme identique.
Ces fichiers se trouvent dans le même dossier.
Connaissez-vous une macro capable de tout me copier dans un Seul fichier Excel (Les feuilles des différents fichiers dans un seul fichier excel). Je voudrais que mes différents fichiers excel deviennent un seul fichier excel mais avec autant de feuilles qu'avant...
Je vous remercie énormément pour la réponse car en fouillant sur le forum je n'ai pas trouvé ma réponse...
j'ai un soucis Sur Excel.
Ma question est peut etre basique mais j'aimerais la réponse car j'en ai besoin pour le travail.
Voila, j'ai Soixante fichiers excel de forme identique avec à chaque fois 1 feuille toujours de forme identique.
Ces fichiers se trouvent dans le même dossier.
Connaissez-vous une macro capable de tout me copier dans un Seul fichier Excel (Les feuilles des différents fichiers dans un seul fichier excel). Je voudrais que mes différents fichiers excel deviennent un seul fichier excel mais avec autant de feuilles qu'avant...
Je vous remercie énormément pour la réponse car en fouillant sur le forum je n'ai pas trouvé ma réponse...
1 réponse
-
Salut,
Je t'ai trouvé : ici la macro dont tu as besoin :
Rassembler tous les classeurs d'un répertoire, dans un classeur---- Exécuter la procédure Appel ---- Public msg As String, Cpt as Integer Sub Appel() Dim FL1 As Workbook, Chemin As String Application.ScreenUpdating = False Chemin = "D:\xls" Set FL1 = ThisWorkbook Ouvrir Chemin, FL1 Application.ScreenUpdating = True MsgBox "Pour des raisons de protection ou autres, n'ont pu être copiées " & vbCrLf & msg End Sub ---- Ouverture des fichiers ---- Sub Ouvrir(Chemin As String, FL1 As Workbook) Dim NomFich As String NomFich = Dir(Chemin & "\") If NomFich = "" Or Right(NomFich, 4) <> ".xls" Then MsgBox "Aucun fichier trouvé dans " & Chemin & "." Exit Sub End If Do While NomFich <> "" Application.EnableEvents = False Workbooks.Open Chemin & "\" & NomFich DoEvents Application.EnableEvents = True NomFich = ActiveWorkbook.Name Copie NomFich, FL1 NomFich = Dir Loop End Sub ---- Copie des feuilles ---- Sub Copie(NomFich As String, FL1 As Workbook) Application.EnableEvents = False For Each LaFeuille In Workbooks(NomFich).Worksheets 'MsgBox LaFeuille.Name On Error Resume Next LaFeuille.Copy After:=FL1.Sheets(FL1.Sheets.Count) DoEvents If ActiveSheet.Protect = True Then ActiveSheet.Unprotect ActiveSheet.UsedRange.Copy ActiveSheet.Range("A1").PasteSpecial Paste:=xlValues If Err <> 0 Then msg = msg & "Classeur " & NomFich & " feuille " & LaFeuile.Name & vbCrLf Err.Clear On Error GoTo 0 End If DoEvents If Cpt Mod 200 = 0 Then ThisWorkbook.Save DoEvents End If Next Application.EnableEvents = True 'Fermeture du classeur Application.DisplayAlerts = False Workbooks(NomFich).Close False Application.DisplayAlerts = True DoEvents End Sub
Ne l'ayant pas testé, il est possible que cela ne fonctionne pas exactement comme tu le souhaites. Si tel est le cas, n'hésite pas nous complèterons cette réponse....-
Bonjour,
Déjà je te remercie pour la rapidité de ta réponse...
Surement que cette macro marche, mais moi qui n'y connait rien au langage Visual Basics => je comprends juste les macros répétitives très simples...Est-il possible qu'on me le mette directement dans un document excel?
Merci beaucoup,
Matthieu -
Salut,
pas eu le temps hier soir...
J'ai modifié la procédure d'appel grâce à l'astuce de lermitte222. Cela donne :'---- Exécuter la procédure Appel ---- Sub Appel() Dim FL1 As Workbook, Chemin As String Const ssfTous = &H1 Dim objShell As Object, objFolder As Object, oFolderItem As Object Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", ssfTous) Set oFolderItem = objFolder.Items.Item Chemin = oFolderItem.Path Set objShell = Nothing Set objFolder = Nothing Set oFolderItem = Nothing Application.ScreenUpdating = False Set FL1 = ThisWorkbook Ouvrir Chemin, FL1 Application.ScreenUpdating = True If msg = "" Then MsgBox "Copie des fichiers terminée, sans souci." Else MsgBox "Pour des raisons de protection ou autres, n'ont pu être copiés :" & vbCrLf & msg End If End Sub
Et voici le classeur test pour essai...
N'hésite pas -
-
-