VBA concatener 12 onglets successifs seulement (sur 17 onglets)
Résolu/Fermé
fumseck88
Messages postés
8
Date d'inscription
vendredi 27 février 2015
Statut
Membre
Dernière intervention
18 août 2015
-
27 févr. 2015 à 12:56
fumseck88 Messages postés 8 Date d'inscription vendredi 27 février 2015 Statut Membre Dernière intervention 18 août 2015 - 4 mars 2015 à 17:58
fumseck88 Messages postés 8 Date d'inscription vendredi 27 février 2015 Statut Membre Dernière intervention 18 août 2015 - 4 mars 2015 à 17:58
A voir également:
- VBA concatener 12 onglets successifs seulement (sur 17 onglets)
- Restaurer onglets chrome - Guide
- Onglets - Guide
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Concatener deux cellules excel - Guide
- Regrouper plusieurs onglets excel en un seul - 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+
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
2 mars 2015 à 21:05
2 mars 2015 à 21:05
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+
fumseck88
Messages postés
8
Date d'inscription
vendredi 27 février 2015
Statut
Membre
Dernière intervention
18 août 2015
3 mars 2015 à 19:06
3 mars 2015 à 19:06
C'est parfait. MERCI beaucoup.
fumseck88
Messages postés
8
Date d'inscription
vendredi 27 février 2015
Statut
Membre
Dernière intervention
18 août 2015
Modifié par fumseck88 le 3/03/2015 à 20:00
Modifié par fumseck88 le 3/03/2015 à 20:00
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
3 mars 2015 à 20:39
3 mars 2015 à 20:39
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
fumseck88
Messages postés
8
Date d'inscription
vendredi 27 février 2015
Statut
Membre
Dernière intervention
18 août 2015
4 mars 2015 à 17:58
4 mars 2015 à 17:58
Bonjour,
merci beaucoup pour votre aide!!!!!!
merci beaucoup pour votre aide!!!!!!
2 mars 2015 à 20:07
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