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 !

3 réponses

  1. Malheureusement je ne peux pas car il s'agit de noms de locataires avec leurs adresses et loyers....
    1
    1. 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
  2. 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