Fusionner 115 classeurs en une feuilles
Amis du forum Bonjour,
Je viens vers vous car je suis incapable de trouver une réponse simple à ma question.
Comme dis dans le sujet, je dois récupérer les données de 115 classeurs, et les "compiler" sur une feuille.
De plus (c'est le problème majeur) je ne comprends strictement rien aux VBA/Macro. j'ai déjà trouvé quelques formules mais je n'arrive pas à les adapter à mon cas. Effectivement il faut remplacer certains codes mais je ne sais pas lesquels.
J'ai déjà réunis tous les classeurs dans un fichier.
Les feuilles sont identiques (seules les valeurs changent)
Je compte sincèrement sur votre aide car je suis perdu. De plus, j'ai déjà commencer à COPIER/COLLER mais j'ai peur qu'une erreur, un décalage se glisse et cela fausserai complétement les valeurs finales.
Je vous remercie par avance,
très cordialement
Dorian67
- Messages
- 2'415
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
Bonjour,
Tu peux t'inspiré de : https://forum.excel-pratique.com/excel/fusionner-plusieurs-classeurs-avec-condition-t81110.html
Par Fred2046 & Lioneloiv2016
Tu créés un répertoire avec un nom simple, tu insères à l'intérieur les fichiers Excel + celui qui va te copier tes feuilles Excel
en espérant t'avoir donné un bon début
crdlt,
André
Merci Andre13 pour ta réponse rapide, mais cela me semble encore flou.
Ne faut t'il pas que j'adapte ces formules aux miennes?
Quels éléments dois-je remplacer ?
Cordialement
- Messages
- 2'415
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
Re,
Dans un premier temps
Avant d'aller plus loin enregistre ton classeur en prenant en charge les macros, vérifie bien que cette feuille soit bel est bien dans ton répertoire.
Note : lors de l'ouverture de ton classeur si dans le menu tu n'as pas ' Développeur' ( il faudra allé dans Options Excel est le coché)
bon, tu as un répertoire et dans ce répertoire ta feuille (recap par exemple) avec toutes tes feuilles de la même valeur
Sur ta Feuil1 tu auras déjà placé tes entêtes Exemple : NOM, Prénom, etc.
1/
insères-y un bouton de commande qui s’appellera 'Bouton 1'
on s'en occupera après de ce bouton
retourne dans ton VBA (ALT+F11)
dans le menu de gauche tu verras VBA-project place le curseur de ta souris dessus, effectue un clic droit et insère un module, il s'appellera Module 1, colles-y ce code ci-dessous :
Option Explicit
Sub recupere()
Dim WsS, WsD As Object
Dim Fso As Object
Dim SourceFolder As Object
Dim FileItem As Object
Dim chemin As String
Dim adresse As Range
Dim i, LR As Integer
chemin = ThisWorkbook.Path & "\tdb-tech\"
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(chemin)
Set WsD = ThisWorkbook.Sheets(1)
'Boucle sur tous les fichiers du répertoire
For Each FileItem In SourceFolder.Files
If Right(FileItem.Name, 4) = "xlsm" Then
Workbooks.Open (chemin & FileItem.Name)
Set WsS = ActiveWorkbook.Sheets(1)
For i = 2 To WsS.Cells(Rows.Count, "A").End(xlUp).Row 'passe en revu toute les lignes du fichier ouvert(source)
'on copie les données
WsS.Range(Cells(i, "A"), Cells(i, "U")).Copy
'vérification si une entrée existe déjà
'Si non => ligne de destination = fin du tableau + 1 ligne
'si oui => ligne de destination = l'entrée précédente
Set adresse = WsD.[A:A].Find(What:=WsS.Cells(i, "A"), LookAt:=xlPart)
If adresse Is Nothing Then 'valeur non trouvée
LR = WsD.Cells(Rows.Count, "A").End(xlUp).Row + 1
Else: LR = adresse.Row 'valeur trouvée
End If
'collage des données dans le fichier de destination avec le format des cellules
WsD.Cells(LR, "A").PasteSpecial xlPasteValues
WsD.Cells(LR, "A").PasteSpecial xlPasteFormats
Next i
'fermeture du fichier sans enrefistrement
ActiveWorkbook.Close False
End If
Next FileItem 'passe au ficheir suivant
End Sub
enregistre ton classeur (en prenant en charge les macros, ensuite :
a) trouve dans le module ceci :
chemin = ThisWorkbook.Path & "\tdb-tech\"
b) remplace tdb-tech par le nom de ton répertoire
chemin = ThisWorkbook.Path & "\tdb-tech\"
retourne sur ta feuil 1 on s'occupe maintenant de ton bouton (Bouton 1) que tu auras inséré dans ta feuille 1 (menu développeur insérer un contrôle de formulaire --> bouton)
clic gauche enfoncé et glisse-le /dépose-le dans un endroit de ta feuille 1
effectue un clic droit sur ce bouton 1 et affecte lui la macro (normalement elle s’appellera recupere
enregistre ton classeur
et test-le