Fusion de données feuilles Excel

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