Microsoft 365 [VBA] Dupliquer un nombre variable d'onglets

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 :
VB:
ReDim ListeOnglets(NbOnglets)
    For i = 1 To NbOnglets
    ListeOnglets(i) = ThisWorkbook.Worksheets("Feuil1").Cells(3 + i, 5).Value
    Next i
Ensuite, pour copier les onglets, j'ai récupéré la syntaxe de l'enregistreur de macro :
VB:
ActiveWorkbook.Sheets(Array(ListeOnglets(1),ListeOnglets(2)).Copy
Ce code marche bien, mon problème est que le nombre d'onglets est variable selon les cas, et
Code:
ActiveWorkbook.Sheets(ListeOnglets).Copy
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...
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
...
Merci !
 
Bonjour,
Merci pour cette proposition, j'ai essayé mais certains onglets font référence à d'autres, et si les onglets sont copiés un par un les formules sont modifiées pour faire référence au fichier d'origine. Dans un second temps je romps les liaisons, mais ça veut dire que les liens entre 2 onglets copiés vont être perdus.
Je pense qu'il faut copier tous les onglets comme un seul bloc.
 
Dernière édition:
Bonjour, j'ai trouvé la résolution du problème, si jamais quelqu'un en a besoin un jour, les tableaux sont indexés à partir de 0 par défaut, ListeOnglets(0) n'était pas défini, donc impossible de trouver l'onglet correspondant. En redéfinissant le tableau ainsi ça fonctionne !
VB:
ReDim ListeOnglets(1 to NbOnglets)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
176
Réponses
1
Affichages
352
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
500
Retour