Excel 2007 VBA : concatener plusieurs onglets

Résolu/Fermé
Eaheru Messages postés 197 Date d'inscription mercredi 23 juin 2010 Statut Membre Dernière intervention 12 mars 2018 - Modifié par Eaheru le 24/08/2010 à 14:37
 kira_luffy - 10 avril 2014 à 12:05
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.
A voir également:

2 réponses

Eaheru Messages postés 197 Date d'inscription mercredi 23 juin 2010 Statut Membre Dernière intervention 12 mars 2018 20
24 août 2010 à 15:48
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
Ilham_luffy Messages postés 1 Date d'inscription lundi 10 mars 2014 Statut Membre Dernière intervention 10 mars 2014
10 mars 2014 à 15:17
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
Eaheru Messages postés 197 Date d'inscription mercredi 23 juin 2010 Statut Membre Dernière intervention 12 mars 2018 20
10 avril 2014 à 11:51
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
merci pour ta réponse mais j'ai trouvé la solution
Bonne journée
0