Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Creation des onglets

1 réponse
Avatar
PG49
Bonjour à tous

Voici un comportement étrange d'Excel

Mon classeur comporte une feuille "Liste" en colonne A une liste de 114
arguments (des nombres)
et une feuille "Base" qui est mon modèle à recopier

J'ai cette macro (faite à partir des exemples du site de JB (MERCI))

Sub Generongl()
Sheets("Liste").Select
For Each C In Range("A1", [A65000].End(xlUp))
Sheets("Base").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = C.Value
ActiveSheet.Range("C9") = C.Value
Sheets("Liste").Select
Next C
End Sub

1er Cas :
Sur ma feuille Base je ne définis aucune zone d'impression et je n'ai donc
aucun champ nommé.
La macro fonctionne correctement sans problème et me génère mes 114 onglets.
Mais si je supprime les 114 onglets créés et que je relance la macro la il
m'indique dés le 1er passage de la boucle sur la ligne Sheets("Base").Copy
After:=Sheets(Sheets.Count) :

Erreur d'execution '1004':
La méthode Copy de la classe Worksheet a échoué.


2ème cas
Sur ma feuille Base je définis une zone d'impression et j'ai donc un champ
nommé.
Dans ce cas, la macro fonctionne me génère 56 onglets puis provoque la même
erreur que cité dans le 1er cas.
sur la ligne Sheets("Base").Copy After:=Sheets(Sheets.Count) :

Erreur d'execution '1004':
La méthode Copy de la classe Worksheet a échoué.


D'ou peux venir le problème
Dans le 2ème cas il pourrais s'agir d'un problème de mémoire (encore que
fichier de base = 50 ko, fichier 1er cas avec 114 onglets plus les 2 de base
soit 116 onlets = 942 ko) mais pour le 1er cas je ne vois pas


Si certains d'entre vous avaient une explication permettant de résoudre
cette bizarerie

Cordialement

PG49

--
.

1 réponse

Avatar
Droopy191
Bonjour à tous


Bonjour,


J'ai testé avec la version modifiée suivante

Sub Generongl()

Dim c As Range

Application.ScreenUpdating = False
Sheets("Liste").Select

For Each c In Sheets("Liste").Range("A1", [A65000].End(xlUp))
Sheets("Base").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = c.Value
Sheets(Sheets.Count).Range("C9") = c.Value

Next c

Application.ScreenUpdating = True

End Sub

Je ne note aucun problème ni avec une zone d'impression définie ou en
effaçant les onglets crées puis en recommenceant.

Le seul truc qui me gene est Sheets("Liste").Select au début, sans cela
si la macro n'est pas déclenchée depuis l'onglet liste, ca plante. Et un
bug d'affichage dans la barre des taches windows.

tests effectué sous xls 2003

--
DR