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
kira_luffy - 10 avril 2014 à 12:05
A voir également:
- Excel 2007 VBA : concatener plusieurs onglets
- Liste déroulante excel - Guide
- Save as pdf office 2007 - Télécharger - Bureautique
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
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
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
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
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
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
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
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
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
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