Fusion de données feuilles Excel
Bonjour,
J'ai un fichier Excel comportant plusieurs feuilles. J'aimerais n'avoir qu'une seule feuille et tout regrouper dedans pour pouvoir faire des tris et des filtres.
Merci de votre aide !
J'ai un fichier Excel comportant plusieurs feuilles. J'aimerais n'avoir qu'une seule feuille et tout regrouper dedans pour pouvoir faire des tris et des filtres.
Merci de votre aide !
3 réponses
-
Malheureusement je ne peux pas car il s'agit de noms de locataires avec leurs adresses et loyers....
-
Anyway...
Procède comme suit :
1- Crée une nouvelle feuille que tu nommeras RECAP et mets-y les mêmes entêtes de colonnes que les autres feuilles (ligne 1), le restes des lignes doit rester vide.
2- Appuie sur ALT+F11 (l'éditeur de code VBA s'ouvre)
3- A gauche de l'écran, tu vois la liste des feuilles de ton fichier. Double-clique sur la feuille RECAP.
4- Dans la partie de droite (grand espace vide), colle le code suivant:
'-----------------------------------------------------------------------
' Copie les lignes de Feuil1 à la suite de celles de RECAP
'-----------------------------------------------------------------------
With Sheets("Feuil1")
For ligne = 2 To .Range("A1").End(xlDown).Row
.Rows(ligne).Copy
Sheets("RECAP").Rows(Range("A1").End(xlDown).Row + 1).PasteSpecial
Next
End With
Ce code est valable pour une seule feuille (Feuil1) à récapituler dans RECAP.
5- Reproduis ce code (copier-coller) autant de fois que tu as de feuilles à récapituler. Par exemple pour 3 feuilles, tu obtiendras ceci:
'-----------------------------------------------------------------------
' Copie les lignes de Feuil1 à la suite de celles de RECAP
'-----------------------------------------------------------------------
With Sheets("Feuil1")
For ligne = 2 To .Range("A1").End(xlDown).Row
.Rows(ligne).Copy
Sheets("RECAP").Rows(Range("A1").End(xlDown).Row + 1).PasteSpecial
Next
End With
'-----------------------------------------------------------------------
' Copie les lignes de Feuil1 à la suite de celles de RECAP
'-----------------------------------------------------------------------
With Sheets("Feuil1")
For ligne = 2 To .Range("A1").End(xlDown).Row
.Rows(ligne).Copy
Sheets("RECAP").Rows(Range("A1").End(xlDown).Row + 1).PasteSpecial
Next
End With
'-----------------------------------------------------------------------
' Copie les lignes de Feuil1 à la suite de celles de RECAP
'-----------------------------------------------------------------------
With Sheets("Feuil1")
For ligne = 2 To .Range("A1").End(xlDown).Row
.Rows(ligne).Copy
Sheets("RECAP").Rows(Range("A1").End(xlDown).Row + 1).PasteSpecial
Next
End With
6- Maintenant, il faut adapter les noms des feuilles de l'exemple à celles de ton cas réel. Pour ce faire, dans chaque ligne de code With Sheets("Feuil1"), changer "Feuil1" par le nom réel des feuilles de ton fichier (attention à garder les guillemets). Par exemple si tu as trois feuilles nommées "TOTO", "TATA" et "TUTU", tu devrais avoir le code suivant:
'-----------------------------------------------------------------------
' Copie les lignes de TOTO à la suite de celles de RECAP
'-----------------------------------------------------------------------
With Sheets("TOTO")
For ligne = 2 To .Range("A1").End(xlDown).Row
.Rows(ligne).Copy
Sheets("RECAP").Rows(Range("A1").End(xlDown).Row + 1).PasteSpecial
Next
End With
'-----------------------------------------------------------------------
' Copie les lignes de TATA à la suite de celles de RECAP
'-----------------------------------------------------------------------
With Sheets("TATA")
For ligne = 2 To .Range("A1").End(xlDown).Row
.Rows(ligne).Copy
Sheets("RECAP").Rows(Range("A1").End(xlDown).Row + 1).PasteSpecial
Next
End With
'-----------------------------------------------------------------------
' Copie les lignes de TUTU à la suite de celles de RECAP
'-----------------------------------------------------------------------
With Sheets("TUTU")
For ligne = 2 To .Range("A1").End(xlDown).Row
.Rows(ligne).Copy
Sheets("RECAP").Rows(Range("A1").End(xlDown).Row + 1).PasteSpecial
Next
End With
7- Insérer ce code Sub Fusionner() en première ligne du code et ce code End Sub en dernière ligne.
8- Positionner le curseur quelque part sur le code (pas avant et pas après).
9- Exécuter le code en appuyant sur F5
Obtiens-tu le résultat voulu ? Je l'espère en tous cas, car je dois quitter jusqu'à dimanche inchallah (c'est le week-end chez nous).
PS : les lignes de code qui commencent par une apostrophe sont des commentaires explicatifs qui peuvent être supprimés sans problème.
-
-
Salam bolinha2009.
Voici un fichier exemple avec un code VBA qui fusionne 3 feuilles en une seule : https://www.cjoint.com/?DJEndx5AYJa
Et voici le code :
Sub FusionnerFeuilles()
' Copie les lignes de Feuil2 à la suite de celles de Feuil1
With Sheets("Feuil2")
For ligne = 2 To .Range("A1").End(xlDown).Row
.Rows(ligne).Copy
Rows(Range("A1").End(xlDown).Row + 1).PasteSpecial
Next
End With
' Copie les lignes de Feuil3 à la suite de celles de Feuil1
With Sheets("Feuil3")
For ligne = 2 To .Range("A1").End(xlDown).Row
.Rows(ligne).Copy
Rows(Range("A1").End(xlDown).Row + 1).PasteSpecial
Next
End With
End Sub
J'espère avoir aidé. :)
-
C'est exactement ce que je veux faire mais je ne sais pas comment le programmer... :S
-
Si ton fichier ne comporte pas de données personnelles ou confidentielles, tu peux le joindre ici pour qu'on puisse lui adapter le code.
Voici comment joindre ton fichier : https://forums.commentcamarche.net/forum/affich-28538194-joindre-fichier-dans-ce-forum#q=comment+joindre+fichier+cjoint&cur=2&url=%2F
-