Bon, clair que pour un(e) non programmeur, ça ne se fait pas en claquant des doigts.....
tu n'auras peut-être pas le temps d'appliquer la formule, mais en relisant ton texte initial, je me dis qu'il peut être plus simple de copier tout le feuillet, puis d'effacer la première ligne. En outre, le for each sur une collection mouvante(puisqu'on rajoute des feuillets), ça me parait risqué et peu aisé à débogger.
ça donne ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| Sub DoubleSansPremiereLigne()
Dim NombreInitial As Integer, NombreFinal As Integer
Dim NombreActuel As Integer
Dim FeuilletEnCours As Integer
NombreInitial = Sheets.Count
NombreActuel = NombreInitial
NombreFinal = NombreInitial * 2
Application.ScreenUpdating = False
'on boucle sur tous les feuillets existants pour les copier
For FeuilletEnCours = 1 To NombreInitial
Sheets(FeuilletEnCours).Copy after:=Sheets(NombreActuel)
NombreActuel = NombreActuel + 1
Next FeuilletEnCours
'on boucle sur tous les feuillets en cours pour supprimer la première ligne
For FeuilletEnCours = (NombreInitial + 1) To NombreFinal
Sheets(FeuilletEnCours).Rows(1).ClearContents
Next FeuilletEnCours
Application.ScreenUpdating = True
End Sub |
testé et vérifié : ça copie l'intégralité des feuillets, et ça efface le contenu de la première ligne dans toutes les cibles.
EDIT : si en plus tu dois donner un nom plus explicite à tes feuillets, il faut taper, dans la deuxième boucle, dans la propriété
Sheets(FeuilletEnCours).Name
, que tu assignes ensuite en fonction de ton besoin
Partager