Compiler 3 trois tableaux en un seul en VBA

Fermé
francois - 4 janv. 2010 à 23:35
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 3 févr. 2010 à 14:32
Bonjour,
Je recherche de l'aide sur vba/excel, afin de résoudre ma problématique :
J'ai 3 tableaux de données, sur 3 feuilles différentes (Feuil1, Feuil2, Feuil3), même nombres de colonnes mais avec des nombres de lignes différents et variables. Je souhaiterai compiler ces 3 tableaux un en seul, de la manière suivante:

Feuil1
1111
1111

Feuil2
2222
2222
2222

Feuil3
3333
3333
3333
3333

Feuil4, le résultat que souhaite:
1111
1111
2222
2222
2222
3333
3333
3333
3333

Je recherche donc l'algo et code en vba qui me permettra de réaliser cela.

Merci pour votre aide
A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
5 janv. 2010 à 10:20
Bonjour,

essaies cette proc

Sub compiler()
Dim nbre As Byte, cptr As Byte, derligx As Long, derlig4 As Long
Dim tablo

nbre = ThisWorkbook.Sheets.Count
Application.ScreenUpdating = False

For cptr = 1 To nbre - 1
    With Sheets(cptr)
        derligx = .Range("A65536").End(xlUp).Row
        tablo = .Range("A1:D" & derligx)
    End With
    With Sheets(4)
        derlig4 = .Range("A65536").End(xlUp).Row
        .Cells(derlig4, 1).Resize(derligx, 4) = tablo
    End With
Next
End Sub
0
Merci michel,
ta soluce a en partie résolu mon pb, il m'a juste fallu faire une petite modif pour que la compilation se fasse sans supprimer une ligne précédemment introduite.

Sub essai()

Dim nbre As Byte, cptr As Byte, derligx As Long, derlig4 As Long
Dim tablo


nbre = ThisWorkbook.Sheets.Count
Application.ScreenUpdating = False

For cptr = 1 To nbre - 1
With Sheets(cptr)
derligx = .Range("A65536").End(xlUp).Row
tablo = .Range("A1:D" & derligx)
End With
With Sheets(4)
derlig4 = .Range("A65536").End(xlUp).Row
Cells(derlig4 + 1, 1).Resize(derligx, 4) = tablo
End With
Next

End Sub

merci
0
Bonjour,

suite à ta réponse, comme je l'avais souligné c'est OK sur le principe, le code marche. Mon document a maintenant évolué et en plus de maintenant compiler le contenu de mes tableaux, j'aimerais garder la mise en forme de mes tableaux (contour, couleur de remplissage). Ma question reformulée est donc :


Dans un classeur excel, je compile sur la feuil5, 4 tableaux sur les feuil1, 2, 3, 4. Ces tableaux peuvent variés en terme de ligne. Pour cela, j'utilise le code suivant :

Dim nbre As Byte, cptr As Byte, derligx As Long, derlig4 As Long
Dim tablo, coul As Byte

nbre = ThisWorkbook.Sheets.Count
Application.ScreenUpdating = False

For cptr = 1 To nbre - 1
With Sheets(cptr)
derligx = .Range("E65536").End(xlUp).Row + 1
tablo = .Range("A1:L" & derligx)
End With

With Sheets(5)
derlig4 = .Range("E65536").End(xlUp).Row
.Cells(derlig4 + 1, 1).Resize(derligx, 12) = tablo

End With

Cela marche, cependant ce code ne garde pas la mise en forme de mes tableaux (contour, remplissage). Un copier/coller le fait, mais je n'arrive pas avec ce même algorithme à utiliser un copier/coller. Quelles solutions aurais tu?

Merci pour ton aide
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
1 févr. 2010 à 23:35
Bonsoir tout le monde,

Pour emmener les formats comme tu le dis il faut copier/coller.
En gardant une partie de tes lignes essaie avec :
    For cptr = 1 To nbre - 1
        derligx = Sheets(cptr).Range("A65536").End(xlUp).Row
        derlig4 = Sheets(4).Range("A65536").End(xlUp).Row
        Sheets(cptr).Range("A1:D" & derligx).Copy (Sheets(4).Cells(derlig4 + 1, 1))
    Next

eric
0
Merci éric

ca marche, merci. Juste un détail, le copy/paste gère mal les cellules fusionnées, mais je devrais pouvoir m'en sortir. Pour info, as-tu une soluce pour gèrer des cellules fusionnées comme avec un copier coller classic dans excel.

Merci encore

francois
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
3 févr. 2010 à 14:23
Non, il faut fuir les cellules fusionnées, on peut (presque) toujours s'en passer.
N'oublie pas que pour centrer horizontalement dans 'format de cellule / alignement' tu as 'horizontal / centrer sur plusieurs colonnes'
eric
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 févr. 2010 à 14:32
Bonjour tou(te)s,
Peu être une piste...
pour gérer des séries avec des cellule fusionnées et non fusionnée.
A+
0