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 !
J'ai un classeur Excel qui contient des onglets Commande.
Plus la commande est importante, plus le nombre d'onglets Commande est important. On obtient donc dans un classeur un nombre variable d'onglet de la manière suivante :
- Commande1
- Commande2
- Commande3
- ...
Avec une petite fonction j'arrive à déterminer le nombre d'onglets commande, ici 3.
Code:
CompteurOnglet = 0
For Each Sh In Sheets
If Left(Sh.Name, 8) = "Commande" Then compteurOnglet = compteurOnglet + 1
Next Sh
Seulement, je sais passer un Array dans mon autre classeur (nommé ici fname) mais de manière fixe, par exemple si je sais que j'ai 3 onglets commande je ferais de la manière suivante :
Je sais contourner le problème et faire quelque chose de pas très propre avec une boucle qui parcourt les feuilles et qui copie les bonnes feuilles.
Mais le problème c'est qu'avec cette solution "sale", les formules de la feuille Commande1 font référence aux feuilles de l'ancien classeur, alors qu'avec un array on évite ces problèmes, les formules feraient bien référence aux bons onglets Commande collés.
En fait la question simplifiée c'est : comment faire varier le nombre d'éléments dans un Array je pense..., si c'est possible !
J'espère avoir été clair, je peux mettre un classeur d'exemple bien que je pense que dans ce cas présent cela ne soit pas utile.
Merci pour toutes fois où vous m'avez aider d'ailleurs.
Re : Copier un nbre de feuilles variable dans un autre classeur
Merci Gilbert pour ton aide.
En fait il me semblait avoir fait ça mais le fait que la feuille active soit dans le nouveau classeur pose des problèmes lors du parcours de la collection des feuilles. Je vais réessayer par curiosité.
Le fait de passer par un Array permet d'éviter les soucis de lien vers l'ancien classeur. En effet lorsque je vais copier commande1 vers le nouveau classeur. Les formules de Commande1 feront référence aux feuilles commande2, commande3... de l'ancien classeur.
Re : Copier un nbre de feuilles variable dans un autre classeur
voilà
il faut que le fichier receveur existe (ou le créer)
Code:
Sub test()
fname = "tartempion"
Fichier = ThisWorkbook.FullName
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & fname & ".xlsx"
ActiveWindow.ActivateNext
For Each Sh In Sheets
If Left(Sh.Name, 8) = "Commande" Then Sheets(Sh.Name).Copy After:=Workbooks(fname & ".xlsx").Sheets(1)
ActiveWindow.ActivateNext
Next Sh
End Sub
ou celui ci dessous un peu plus complet
Code:
Sub test()
fname = "tartempion"
Fichier = ThisWorkbook.FullName
On Error Resume Next
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=fname & ".xlsx"
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & fname & ".xlsx"
ActiveWindow.ActivateNext
For Each Sh In Sheets
If Left(Sh.Name, 8) = "Commande" Then Sheets(Sh.Name).Copy After:=Workbooks(fname & ".xlsx").Sheets(1)
ActiveWindow.ActivateNext
Next Sh
ActiveWindow.ActivateNext
With Workbooks(fname & ".xlsx")
.Save
.Close
End With
End Sub
- 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