VBA concatener 12 onglets successifs seulement (sur 17 onglets)
Résolu
fumseck88
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
fumseck88 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
fumseck88 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- VBA concatener 12 onglets successifs seulement (sur 17 onglets)
- Restaurer les onglets chrome - Guide
- Regrouper plusieurs onglets excel en un seul - Guide
- Concatener deux cellules excel - Guide
- Ouvrir plusieurs onglets en même temps - Guide
- Onglets - Guide
6 réponses
Bonjour
peut-être comme ceci, si selection correspond à quelque chose
A+
peut-être comme ceci, si selection correspond à quelque chose
Dim Ws As Worksheet, Concat as worksheet
Sheets.Add Before:=Sheets(1)
Sheets(1).Name="Concaténation"
set Concat=worksheets("Concaténation")
For i=2 to 12 ' N° de feuilles
Worksheets(i).Range(Selection, Selection.End(xlDown)).Copy
Concat.Range("D36:P:36").PasteSpecial Paste:=xlPasteValues
Next
A+
Bonsoir le fil, bonsoir le forum,
Peut-être comme ça :
Peut-être comme ça :
Sub Macro1() Dim I As Byte 'déclare la variable I (Incrément) Dim DEST As Range 'déclare la variable DEST (cellule de DESTination) Sheets.Add Before:=Sheets(1) 'ajoute un onglet en première position For I = 2 To 13 'boucle sur les onglets 2 à 13 With Sheets(1) 'prend en compte le premier onglet 'définit la cellule de destination DEST (A1 si A1 est vide, sinon, la première cellule vide 'de la colonne 1 (=A) du premier onglet) Set DEST = IIf(.Range("A1").Value = "", .Range("A1"), .Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)) End With 'fin de la prise en compte du premier onglet Sheets(I).Range("D36").CurrentRegion.Copy DEST 'copy la plage de l'onglet I et la colle dans DEST Next I 'prochian onglet de la boucle End Sub
Re
il s'arrête en cours de route à cause de l'emploi de xlDown qui s'arrête à la première ligne vide rencontrée.
L'emploi de xlUp démarre par la fin de colonne et s'arrête à la première ligne renseignée rencontrée. à utiliser de préférence pour déterminer la dernière ligne remplie d"une colonne (A dans l'exemple), malgré des cellules vides intermédiaires:
DerLig = Range("A" & Rows.Count).End(xlUp).Row (en précisant la feuille si nécessaire)
pour sélectionner les colonnes A à P jusqu'à la dernière ligne renseignée:
ou
A+
il s'arrête en cours de route à cause de l'emploi de xlDown qui s'arrête à la première ligne vide rencontrée.
L'emploi de xlUp démarre par la fin de colonne et s'arrête à la première ligne renseignée rencontrée. à utiliser de préférence pour déterminer la dernière ligne remplie d"une colonne (A dans l'exemple), malgré des cellules vides intermédiaires:
DerLig = Range("A" & Rows.Count).End(xlUp).Row (en précisant la feuille si nécessaire)
pour sélectionner les colonnes A à P jusqu'à la dernière ligne renseignée:
Worksheets(i).Range("A1:P" & DerLig).Copy
ou
Worksheets(i).Range("A1:P" & Worksheets(i).Range("A" & Rows.Count).End(xlUp).Row).Copy
A+
Bonsoir,
Voila mon code, modifie grace a votre aide (sans le debut ou je cree l'onglet et le nomme)
' Selection la zone a copier dans les 12 onglets et la copie dans l'onglet concatenation
For I = 2 To 10 ' N° de feuilles
With Sheets(1) 'prend en compte le premier onglet
'définit la cellule de destination DEST (C2 si C2 est vide, sinon, la première cellule vide de la colonne 3 (=C) du premier onglet)
Set DEST = IIf(.Range("C2").Value = "", .Range("C2"), .Cells(Application.Rows.Count, 3).End(xlUp).Offset(1, 0))
End With 'fin de la prise en compte du premier onglet
Worksheets(I).Range("D37:P" & Worksheets(I).Range("D" & Rows.Count).End(xlUp).Row).Copy DEST
Next I 'prochain onglet de la boucle
C'est absolument parfait, merci beaucoup.
Une derniere question, est-il possible de coller en collage special? En effet, j'aimerais coller en gardant le format des nombres ce serait plus pratique pour mes donnees.
Merci beaucoup.
Voila mon code, modifie grace a votre aide (sans le debut ou je cree l'onglet et le nomme)
' Selection la zone a copier dans les 12 onglets et la copie dans l'onglet concatenation
For I = 2 To 10 ' N° de feuilles
With Sheets(1) 'prend en compte le premier onglet
'définit la cellule de destination DEST (C2 si C2 est vide, sinon, la première cellule vide de la colonne 3 (=C) du premier onglet)
Set DEST = IIf(.Range("C2").Value = "", .Range("C2"), .Cells(Application.Rows.Count, 3).End(xlUp).Offset(1, 0))
End With 'fin de la prise en compte du premier onglet
Worksheets(I).Range("D37:P" & Worksheets(I).Range("D" & Rows.Count).End(xlUp).Row).Copy DEST
Next I 'prochain onglet de la boucle
C'est absolument parfait, merci beaucoup.
Une derniere question, est-il possible de coller en collage special? En effet, j'aimerais coller en gardant le format des nombres ce serait plus pratique pour mes donnees.
Merci beaucoup.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir le fil, bonsoir le forum,
Remplace la ligne:
par (format à adapter) :
Remplace la ligne:
Worksheets(I).Range("D37:P" & Worksheets(I).Range("D" & Rows.Count).End(xlUp).Row).Copy DEST
par (format à adapter) :
Worksheets(I).Range("D37:P" & Worksheets(I).Range("D" & Rows.Count).End(xlUp).Row).Copy DEST.PasteSpecial (xlPasteFormats) Application.CutCopyMode = False
tu as raison ma "selection" ne marche pas correctement. En fait je designe la premiere ligne d'un tableau et lui demande d'aller selectionner jusqu'a la derniere ligne mais il s'arrete en cours de route car certaines cellules sont vides.
Je fais face a un nouveau defi et j'ai imagine 3 solutions:
- remplir les cellules vides avec des tirets en faisant un go to special -> blank mais cela voudrait dire que j'arrive a selectionner la zone appropriee
- Selectionner ma premiere colonne (A1:A43) dont toutes cellules sont remplies et etendre aux colonnes de droites jusqu'a P43.
- Trouver une solution pour selectionner la zone malgre les blancs.
Si tu as une piste pour moi, je suis preneuse. J'ai deja regarde pas mal de Tuto mais je n'ai pas trouve de solutions qui me conviennent.
Si je ne suis pas claire je peux t'envoyer un fichier ou m'expliquer plus intelligiblement
Merci beaucoup,
Daphne