Compiler 3 trois tableaux en un seul en VBA
Fermé
francois
-
4 janv. 2010 à 23:35
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 3 févr. 2010 à 14:32
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 3 févr. 2010 à 14:32
A voir également:
- Compiler 3 trois tableaux en un seul en VBA
- Comment imprimer un tableau excel sur une seule page - Guide
- Comment faire un tableau - Guide
- Couper photo en 3 instagram - Guide
- Mettre plusieurs pdf en un seul - Guide
- Picasa 3 - Télécharger - Albums photo
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 310
5 janv. 2010 à 10:20
5 janv. 2010 à 10:20
Bonjour,
essaies cette proc
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
1 févr. 2010 à 23:35
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 :
eric
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
3 févr. 2010 à 14:23
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
N'oublie pas que pour centrer horizontalement dans 'format de cellule / alignement' tu as 'horizontal / centrer sur plusieurs colonnes'
eric
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
3 févr. 2010 à 14:32
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+
Peu être une piste...
pour gérer des séries avec des cellule fusionnées et non fusionnée.
A+
5 janv. 2010 à 13:48
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
1 févr. 2010 à 22:41
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