Fusion de données feuilles Excel

bolinha2009 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
redaiwa Messages postés 351 Date d'inscription   Statut Membre Dernière intervention   -
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 !
A voir également:

3 réponses

bolinha2009 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   2
 
Malheureusement je ne peux pas car il s'agit de noms de locataires avec leurs adresses et loyers....
1
redaiwa Messages postés 351 Date d'inscription   Statut Membre Dernière intervention   119
 
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.
0
redaiwa Messages postés 351 Date d'inscription   Statut Membre Dernière intervention   119
 
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é. :)
0
bolinha2009 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   2
 
C'est exactement ce que je veux faire mais je ne sais pas comment le programmer... :S
0
redaiwa Messages postés 351 Date d'inscription   Statut Membre Dernière intervention   119
 
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
0