Copie de feuilles

JUMJ

XLDnaute Junior
Bonjour,

je fais à la fin d'une macro une copie de toutes les feuilles du classeur actif vers un nouveau classeur.

Mon soucis est que cette copie ne fonctionne que pour des feuilles dont le nom et le nombre sont identiques à ceux de ma macro.

Si j'ai une feuille en plus dans mon classeur actif elle n'est pas prise ne compte, de même si un des noms de feuille est différent.

Existe il une fonction permettant de copier toutes les feuilles quelque soit leur nom ou nombre, du type copy.all ?

Merci
 

JUMJ

XLDnaute Junior
Sub Macro1()
Sheets(Array('Feuil1', 'Feuil2', 'Feuil3')).Select
Sheets('Feuil3').Activate
Sheets(Array('Feuil1', 'Feuil2', 'Feuil3')).Copy
End Sub

Cette macro copie les feuilles du classeur actif vers un nouveau classeur.
Le problème c'est que les feuilles ont un nom et un nombre, si je relance cette macro elle copiera les 'feuil1' à 'feuil3' dans un autre classeur. Si j'ai une feuille en plus dans le classeur elle ne sera pas copiée de même si son nom est par exemple 'toto'.
 

porcinet82

XLDnaute Barbatruc
Salut JUMJ, ninou58, pat1545,

Ton code ne fonctionne pas Ninou, tu ne peux pas mettre un Name puis un Select, ca bug :eek:

Donc je te propose un code qui te copie tes feuilles et en plus garde l'ordre de celles-ci :
Code:
Sub Macro2()
Dim i As Integer

For i = 1 To Workbooks('Classeur2').Sheets.Count
    Sheets(i).Copy After:=Workbooks('Classeur4').Sheets(Sheets.Count)
    ActiveSheet.Name = Workbooks('Classeur2').Sheets(i).Name
Next i
End Sub

@+

Message édité par: porcinet82, à: 29/03/2006 16:44
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour JUMJ,¨Pat1545, Ninou58, porcinet 82, le forum

voila un code qui fera la copie quel que soient:
-le nombre de feuilles
-le nom du classeur d'origine, (prend le classeur actif)
-le nom du classeur de destination (sera défini par excel au moment de la copie.

Cordialement, A+
Code:
Sub Copy_Feuilles()
Dim Compteur As Integer, Noms_Feuilles()
ReDim Noms_Feuilles(1 To ActiveWorkbook.Worksheets.Count)
For Compteur = 1 To ActiveWorkbook.Worksheets.Count
Noms_Feuilles(Compteur) = ActiveWorkbook.Worksheets(Compteur).Name
Next Compteur
ActiveWorkbook.Worksheets(Noms_Feuilles).Copy
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 307
Messages
2 087 096
Membres
103 468
dernier inscrit
TRINITY