garth_algar
XLDnaute Junior
Bonjour à toutes et à tous,
Je souhaite créer une macro qui copie dans une nouveau classeur un certain nombre d'onglets. Avec ce bout de code je stocke les noms des onglets à copier :
Ensuite, pour copier les onglets, j'ai récupéré la syntaxe de l'enregistreur de macro :
Ce code marche bien, mon problème est que le nombre d'onglets est variable selon les cas, et
ne fonctionne pas.
Quelqu'un aurait-il une solution plus optimale que le code ci-dessous ? D'autant que je peux avoir jusqu'à une vingtaine d'onglets...
Merci !
Je souhaite créer une macro qui copie dans une nouveau classeur un certain nombre d'onglets. Avec ce bout de code je stocke les noms des onglets à copier :
VB:
ReDim ListeOnglets(NbOnglets)
For i = 1 To NbOnglets
ListeOnglets(i) = ThisWorkbook.Worksheets("Feuil1").Cells(3 + i, 5).Value
Next i
VB:
ActiveWorkbook.Sheets(Array(ListeOnglets(1),ListeOnglets(2)).Copy
Code:
ActiveWorkbook.Sheets(ListeOnglets).Copy
Quelqu'un aurait-il une solution plus optimale que le code ci-dessous ? D'autant que je peux avoir jusqu'à une vingtaine d'onglets...
VB:
If NbOnglets = 1 Then ActiveWorkbook.Sheets(Array(ListeOnglets(1)).Copy
If NbOnglets = 2 Then ActiveWorkbook.Sheets(Array(ListeOnglets(1),ListeOnglets(2)).Copy
If NbOnglets = 3 Then ActiveWorkbook.Sheets(Array(ListeOnglets(1),ListeOnglets(2),ListeOnglets(3)).Copy
...