Deverser certains onglets ds 1seul (mm classeur)
Curlyness
Messages postés
1
Statut
Membre
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
Alors voilà...
J'ai X onglets dans un classeur, et je souhaiterai déverser le contenu de plusieurs d'entre eux dans un autre, sobrement intitulé all in one ^^
A noter que si je me défends coté formules, je ne connais rien aux macros.
J'ai donc copié collé et adapté tent biuien que mal une macro trouvée sur le net et faisant partiellement l'affaire:
Le problème, c'est que je ne sais pas comment l'adapter pour qu'elle ne prenne le contenu que de certaines feuilles, et non de l'intégralité de mon classeur comme défini visiblement dans la première partie. Je ne suis pas familière du format à respecter pour transcrire cette demande.
Pourriez vous éclairer ma lanterne?
Alors voilà...
J'ai X onglets dans un classeur, et je souhaiterai déverser le contenu de plusieurs d'entre eux dans un autre, sobrement intitulé all in one ^^
A noter que si je me défends coté formules, je ne connais rien aux macros.
J'ai donc copié collé et adapté tent biuien que mal une macro trouvée sur le net et faisant partiellement l'affaire:
Option Explicit
Sub allinone()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "recap" Then
Application.ScreenUpdating = False
ws.Activate
Range("A1:" & [a1].SpecialCells(xlCellTypeLastCell).Address).Copy
Sheets("all in one").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Next ws
End Sub
Le problème, c'est que je ne sais pas comment l'adapter pour qu'elle ne prenne le contenu que de certaines feuilles, et non de l'intégralité de mon classeur comme défini visiblement dans la première partie. Je ne suis pas familière du format à respecter pour transcrire cette demande.
Pourriez vous éclairer ma lanterne?
1 réponse
-
Bonjour,
Tout est dans cette ligne :If ws.Name <> "recap" Then
Si le nom de la feuille (en cours dans la boucle) est différent de récap alors je fais le traitement.
Si tu dois écarter du traitement 2-3 feuilles, il suffit de les ajouter à ce test :
On veut écarter du traitement les feuilles : Feuil1, Feuil5 et OneShot :
If ws.Name <> "recap" And ws.Name <> "Feuil1" ws.Name <> "Feuil5" ws.Name <> "OneShot" Then
Il existe une seconde façon de procéder, qui consiste à ne boucler que sur les feuilles concernées par la macro.
Ainsi, si seules les feuilles "Feuil1", "Feuil3"et "Feuil5" sont concernées :Dim Ws As Worksheet For Each Ws In ThisWorkbook.Worksheets(Array("Feuil1", "Feuil3", "Feuil5")) Application.ScreenUpdating = False ws.Activate Range("A1:" & [a1].SpecialCells(xlCellTypeLastCell).Address).Copy Sheets("all in one").Activate Range("A65536").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste Application.CutCopyMode = False Next
Tu peux bien entendu ajouter ou enlever des feuilles à ta guise...
EDIT :
Tu peux aussi te passer de l'activation de tes feuilles. Ce code te suffit :Dim Ws As Worksheet For Each Ws In ThisWorkbook.Worksheets(Array("Feuil1", "Feuil3", "Feuil5")) With Ws .Range("A1:" & [a1].SpecialCells(xlCellTypeLastCell).Address).Copy Sheets("all in one").Range("A65536").End(xlUp).Offset(1, 0) End With Next
🎼 Cordialement,
Franck 🎶