Excel 2007 VBA : concatener plusieurs onglets

Résolu
Eaheru Messages postés 205 Statut Membre -  
 kira_luffy -
Bonjour,

Voici ma problématique :
Chaque jour je souhaiterais concaténer les 4 onglets d'un fichier se nommant : Actions_'date du jour précédant'.xls (date du jour précédant est donc, chaque jour, la date de la veille) dans un nouvel onglet (le 5eme) de ce fichier.
L'intégralité des colonnes est concerné et la quantité de lignes de chaque onglet est variable.

Si vous avez une idée, n'hésitez pas :)
Merci d'avance pour votre aide.

2 réponses

  1. Eaheru Messages postés 205 Statut Membre 20
     
    J'ai trouvé pour réaliser cette action; voici ce que j'ai écris. Ca fonctionne comme je l'attendais.
    En esperant que ça aidera !

    Sub Concat ()
    'Ajout d'un nouvel onglet au fichier pour transfert des lignes
    Sheets.Add After:=Sheets(Sheets.Count)
    ' Renommage de la feuille 2
    Sheets("Feuil1").Name = "Concatlignes"
    ' activation de la feuille 1 du fichier
    Sheets("Feuil1").Select
    ' Copie de la ligne 1 (titres colonnes)
    Rows("1:1").Select
    Selection.Copy
    ' activation de la feuille 5 du fichier
    Sheets("Concatlignes").Select
    ' Collage de la ligne 1 (titres colonnes)
    Rows("1:1").Select
    ActiveSheet.Paste

    ' Déclaration des variables
    Dim Lig5 As Long, Lig5Copie As Long, DerLig5 As Long, Lig6 As Long, DerLig6 As Long, Lig7 As Long, DerLig7 As Long, Lig8 As Long, DerLig8 As Long
    ' activation de la feuille 1 du fichier
    Sheets("Feuil1").Select
    Lig5Copie = 2: DerLig5 = Range("A65536").End(xlUp).Row
    ' Transfert des lignes de la feuille 1
    For Lig5 = 2 To DerLig5
    ' scrutation des cellules de la colonne "A" afin d'y trouver les chaines de caracteres "Non vide"
    If Not (Cells(Lig5, 1) Like "") Then
    'Copie, de la ligne trouvée, sur la feuille 5
    Rows(Lig5).Copy Sheets("Concatlignes").Rows(Lig5Copie)
    ' activation de la feuille 1 du fichier
    Sheets("Feuil1").Select
    ' Suppression de la ligne venant d'etre copiée
    Rows(Lig5).Delete
    ' Incrementation de la boucle pour preparer la copie de la ligne suivante sur la feuille 5
    Lig5Copie = Lig5Copie + 1
    ' Décrementation de la boucle pour scruter la ligne suivante sur la feuille 1
    Lig5 = Lig5 - 1
    End If
    Next Lig5

    ' Transfert des lignes de la feuille 2
    Sheets("Feuil2").Select
    DerLig6 = Range("A65536").End(xlUp).Row
    For Lig6 = 2 To DerLig6
    ' scrutation des cellules de la colonne "A" afin d'y trouver les chaines de caracteres "Non vide"
    If Not (Cells(Lig6, 1) Like "") Then
    'Copie, de la ligne trouvée, sur la feuille 5
    Rows(Lig6).Copy Sheets("Concatlignes").Rows(Lig5Copie)
    ' activation de la feuille 2 du fichier
    Sheets("Feuil2").Select
    ' Suppression de la ligne venant d'etre copiée
    Rows(Lig6).Delete
    ' Incrementation de la boucle pour preparer la copie de la ligne suivante sur la feuille 5
    Lig5Copie = Lig5Copie + 1
    ' Décrementation de la boucle pour scruter la ligne suivante sur la feuille 2
    Lig6 = Lig6 - 1
    End If
    Next Lig6

    End Sub
    1
  2. Ilham_luffy Messages postés 1 Statut Membre
     
    Bonjour,
    J'ai le même problème que toi, avant bien sur
    alors moi j'ai un fichier excel ou y a 4 à 5 feuilles je veux avoir une macro qui me fait une concaténation de ces feuilles en une seule feuille, alors j'ai essayé ton programme mais il ne marche pas chez moi
    pourrai tu me donner plus d'information sur le mode de fonctionnement?
    Merci par avance
    Bien à toi
    0
    1. Eaheru Messages postés 205 Statut Membre 20
       
      Bonjour,

      En fait je compte les lignes du premier onglet puis je les transfere 1 par 1 sur l'onglet final. Ensuite je supprime ma ligne transferée dans l'onglet initial. Ca jusqu'a ce qu'il n'y ait plus de ligne dans mon onglet initial, ensuite je passe au suivant jusqu'a les avoir tous parcouru.
      il faut aussi compter les lignes dans l'onglet cible afin d'ajouter les nouvelles lignes a la suite d'ou qu'elle viennent.

      J'espere que ca t'aidera
      0
    2. kira_luffy
       
      merci pour ta réponse mais j'ai trouvé la solution
      Bonne journée
      0