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

Ajout feuilles dans classeur (Excel 2003)

8 réponses
Avatar
ejc
Bonjour à tous,
J'ai ce bout de code :
....
Sheets("Sem00").Copy After:=Sheets(Sheets.Count)
....
Normalement, je dois ainsi ajouter 53 feuilles (semaines de planning).

J'ai le message suivant :
La méthode Copy de la classe Worksheet à échoué
Mais pas obligatoirement après le même nombre de feuilles (15, 26, etc.)
Problème de rafraichissement ? J'ai essayé d'enregistrer le classeur et de
reprendre la procédure : même pb.
Sous "Excel" je n'arrive pas non plus à ajouter une feuille.
Je ferme le classeur, j'ouvre de nouveau et là je peux ajouter des
feuilles...
Si qq1 connait le pb, merci d'avance,
ejc

8 réponses

Avatar
Patrick BASTARD
Bonsoir, "ejc"

Et en calcul manuel ?
(Calcul manuel en début de code, auto en fin de code).

--
Bien ,

Patrick BASTARD
patrick.bastardchezdbmail.com>
....
Sheets("Sem00").Copy After:=Sheets(Sheets.Count)
....
Normalement, je dois ainsi ajouter 53 feuilles (semaines de planning).

J'ai le message suivant :
La méthode Copy de la classe Worksheet à échoué
Mais pas obligatoirement après le même nombre de feuilles (15, 26, etc.)
Problème de rafraichissement ? J'ai essayé d'enregistrer le classeur et de
reprendre la procédure : même pb.
Sous "Excel" je n'arrive pas non plus à ajouter une feuille.
Je ferme le classeur, j'ouvre de nouveau et là je peux ajouter des
feuilles...
Si qq1 connait le pb, merci d'avance,
ejc






Avatar
MichDenis
Bonjour Ejc,

Si tu exécutes ces lignes de code 53 fois dans
un classeur vierge, as-tu le même problème ?

Est-ce que ce problème est présent seulement dans ce classeur ?

Après l'avoir épuré des informations sensibles, tu peux le publier
à ces adresses : Cjoint.com ou Cijoint.fr.



"ejc" <~ a écrit dans le message de groupe de discussion :

Bonjour à tous,
J'ai ce bout de code :
....
Sheets("Sem00").Copy After:=Sheets(Sheets.Count)
....
Normalement, je dois ainsi ajouter 53 feuilles (semaines de planning).

J'ai le message suivant :
La méthode Copy de la classe Worksheet à échoué
Mais pas obligatoirement après le même nombre de feuilles (15, 26, etc.)
Problème de rafraichissement ? J'ai essayé d'enregistrer le classeur et de
reprendre la procédure : même pb.
Sous "Excel" je n'arrive pas non plus à ajouter une feuille.
Je ferme le classeur, j'ouvre de nouveau et là je peux ajouter des
feuilles...
Si qq1 connait le pb, merci d'avance,
ejc
Avatar
isabelle
bonjour ejc,

après la ligne de code

Sheets("Sem00").Copy After:=Sheets(Sheets.Count)

ajoute celle-ci

Application.CutCopyMode = False

isabelle



ejc a écrit :
Bonjour à tous,
J'ai ce bout de code :
....
Sheets("Sem00").Copy After:=Sheets(Sheets.Count)
....
Normalement, je dois ainsi ajouter 53 feuilles (semaines de planning).

J'ai le message suivant :
La méthode Copy de la classe Worksheet à échoué
Mais pas obligatoirement après le même nombre de feuilles (15, 26, etc.)
Problème de rafraichissement ? J'ai essayé d'enregistrer le classeur et de
reprendre la procédure : même pb.
Sous "Excel" je n'arrive pas non plus à ajouter une feuille.
Je ferme le classeur, j'ouvre de nouveau et là je peux ajouter des
feuilles...
Si qq1 connait le pb, merci d'avance,
ejc






Avatar
ejc
Bonjour,
J'ai refait des tests avec :
Sub CréerFeuilles()
Dim I As Byte
For I = 1 To 53
'Ajouter une feuille "modèle"
Sheets("Sem00").Select
Sheets("Sem00").Copy After:=Sheets(Sheets.Count)
Sheets("Sem00 (2)").Select
Sheets("Sem00 (2)").Name = Trim(Str(I))
Next I
End Sub
dans un classeur "vierge" comme suggéré par MichDenis ; pas de pb.
Pourtant, le classeur dans lequel j'exécute cette sub n'est pas "énorme" : 8
feuilles (5 Mo) avant création des dites feuilles.
Une info cependant : la feuille "modèle" comporte des noms...
J'ai regardé un peu partout sur le Web, il y a plusieurs messages à propos
de cette "anomalie"...
A Patrick :
Que veux-tu dire par :
Et en calcul manuel ?
(Calcul manuel en début de code, auto en fin de code). ?
Merci à vous,
"MichDenis" a écrit dans le message de news:

Bonjour Ejc,

Si tu exécutes ces lignes de code 53 fois dans
un classeur vierge, as-tu le même problème ?

Est-ce que ce problème est présent seulement dans ce classeur ?

Après l'avoir épuré des informations sensibles, tu peux le publier
à ces adresses : Cjoint.com ou Cijoint.fr.



"ejc" <~ a écrit dans le message de groupe de discussion :

Bonjour à tous,
J'ai ce bout de code :
....
Sheets("Sem00").Copy After:=Sheets(Sheets.Count)
....
Normalement, je dois ainsi ajouter 53 feuilles (semaines de planning).

J'ai le message suivant :
La méthode Copy de la classe Worksheet à échoué
Mais pas obligatoirement après le même nombre de feuilles (15, 26, etc.)
Problème de rafraichissement ? J'ai essayé d'enregistrer le classeur et de
reprendre la procédure : même pb.
Sous "Excel" je n'arrive pas non plus à ajouter une feuille.
Je ferme le classeur, j'ouvre de nouveau et là je peux ajouter des
feuilles...
Si qq1 connait le pb, merci d'avance,
ejc



Avatar
isabelle
bonjour ejc,

ejc a écrit :
A Patrick :
Que veux-tu dire par :
Et en calcul manuel ?



cela veut dire d'ajouter ces lignes de code :
au début de la macro :

Application.Calculation = xlManual

et en fin de la macro :

Application.Calculation = xlAutomatic

a+
isabelle
Avatar
ejc
Bonjour,
J'ai ajouté comme suggéré les codes nécessaires :
Application.CutCopyMode = False
et également
Application.Calculation = xlManual
et en fin de la macro :
Application.Calculation = xlAutomatic
Bilan :
J'ai l'impression que je vais "un peu plus loin" (30 feuilles)...mais que le
même message d'erreur apparaît...
Je pense que la "limite" vient d'ailleurs (noms dans la feuille-16 en tout,
formules, etc.)
Ouàlà, ouàlà...
Ceci dit, ce n'est pas catastrophique... mais bon...

Merci encore à vous...

"isabelle" a écrit dans le message de news:

bonjour ejc,

après la ligne de code

Sheets("Sem00").Copy After:=Sheets(Sheets.Count)

ajoute celle-ci

Application.CutCopyMode = False

isabelle



ejc a écrit :
Bonjour à tous,
J'ai ce bout de code :
....
Sheets("Sem00").Copy After:=Sheets(Sheets.Count)
....
Normalement, je dois ainsi ajouter 53 feuilles (semaines de planning).

J'ai le message suivant :
La méthode Copy de la classe Worksheet à échoué
Mais pas obligatoirement après le même nombre de feuilles (15, 26, etc.)
Problème de rafraichissement ? J'ai essayé d'enregistrer le classeur et
de reprendre la procédure : même pb.
Sous "Excel" je n'arrive pas non plus à ajouter une feuille.
Je ferme le classeur, j'ouvre de nouveau et là je peux ajouter des
feuilles...
Si qq1 connait le pb, merci d'avance,
ejc








Avatar
MichDenis
| Une info cependant : la feuille "modèle" comporte des noms...
| J'ai regardé un peu partout sur le Web, il y a plusieurs messages à propos
| de cette "anomalie"...

Ce n'est pas une anomalie...
Si les "Noms" définis le sont au niveau du classeur, si l'on duplique cette feuille, Excel
ne peut pas tolérer que plusieurs "Noms" définis au niveau du classeur portent le même
nom. Comment ferait-il pour s'y retrouver ? En conséquence, il transforme tous les noms
définis au niveau du classeur en "Nom" défini au niveau de la feuille. Dans la pratique,
dans ton fichier, ceci signifie qu'un nom "Toto" défini au niveau du classeur deviendra
dans les copies de la feuille d'origine : '1'!toto , '2'!toto '3'!toto '4'!toto ....
Ce sont ces noms qu'il faudra utiliser dans les formules pour faire référence à leur
valeur locale (située dans la feuille).
Ceci étant dit, cela ne devait pas être un empêchement de reproduire une feuille de
calcul.

Pour la macro, j'utiliserais plutôt ceci pour créer les copies de la feuille module
'-------------------------------------------
Sub CréerFeuilles()
Dim I As Byte, Sh As Worksheet
Dim Nom As String
Nom = ActiveSheet.Name
Application.ScreenUpdating = False
Set Sh = Sheets("Sem00")
For I = 1 To 53
Sh.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = I
Next I
Sheets(Nom).Select
Application.ScreenUpdating = True
End Sub
'-------------------------------------------
Avatar
ejc
Re bonjour,
J'ai essayé avec le code proposé (Set Sh = Sheets("Sem00"), etc.
Même problème... Qqfois, il est même impossible d'ajouter une seule feuille
(même sous Excel).
Il faut fermer le classeur, l'ouvrir de nouveau et on peut "repartir"...
Il y a certainement "une saturation" qqpart... où ?
Le problème est de traiter cette erreur et d'expliquer à l'utilisateur de
recommencer (à partir de la dernière feuille créée ; c'est pas bien
difficile mais bon...)
Quand je parlai d'anomalie, je parlai de ce problème de création de feuille
(pas des noms...)
Toujours merci à vous.
ejc

"MichDenis" a écrit dans le message de news:
%
| Une info cependant : la feuille "modèle" comporte des noms...
| J'ai regardé un peu partout sur le Web, il y a plusieurs messages à
propos
| de cette "anomalie"...

Ce n'est pas une anomalie...
Si les "Noms" définis le sont au niveau du classeur, si l'on duplique
cette feuille, Excel
ne peut pas tolérer que plusieurs "Noms" définis au niveau du classeur
portent le même
nom. Comment ferait-il pour s'y retrouver ? En conséquence, il transforme
tous les noms
définis au niveau du classeur en "Nom" défini au niveau de la feuille.
Dans la pratique,
dans ton fichier, ceci signifie qu'un nom "Toto" défini au niveau du
classeur deviendra
dans les copies de la feuille d'origine : '1'!toto , '2'!toto '3'!toto
'4'!toto ....
Ce sont ces noms qu'il faudra utiliser dans les formules pour faire
référence à leur
valeur locale (située dans la feuille).
Ceci étant dit, cela ne devait pas être un empêchement de reproduire une
feuille de
calcul.

Pour la macro, j'utiliserais plutôt ceci pour créer les copies de la
feuille module
'-------------------------------------------
Sub CréerFeuilles()
Dim I As Byte, Sh As Worksheet
Dim Nom As String
Nom = ActiveSheet.Name
Application.ScreenUpdating = False
Set Sh = Sheets("Sem00")
For I = 1 To 53
Sh.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = I
Next I
Sheets(Nom).Select
Application.ScreenUpdating = True
End Sub
'-------------------------------------------