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

plantage de Macro

7 réponses
Avatar
Cyr73
Bonjour,
tout d'abord je tiens à remercier tous ceux qui prennent de leur temps
pour nous aider.

voici le problème que je rencontre lors de l'exécution de
cette macro. elle n'arrive jamais à créer les onglets de la liste des clients
jusqu'à la fin. je me demande si le fait de rajouter des onglets en grand
nombre (40) fait planter la mémoire car après l'arrêt sur le plantage je ne
peut plus
rajouter manuellement un onglet il faut que je ferme le programme et l'ouvre
de nouveau pour avoir cette fonctionnalité.
une idée peut être ??

Sub CreerFeuilles()
Dim c As Range
For Each c In ['Effectifs Repas'!B6:B45]
If c <> "" Then
Attente (1000)
Sheets("Trame").Copy after:=Sheets("Trame")
Attente (1000)
ActiveSheet.Name = c.Value
Attente (1000)
[E12] = c.Value
End If
Next c
End Sub

--
Cordialement

et avec tous mes remerciements..

7 réponses

Avatar
michdenis
Bonjour,

Qu'est-ce qu'il y a dans cette feuille que tu copies ?
Plein de graphes, TDC ou simplement des données ?

As-tu un message d'erreur ? Quel est-il ?

J'ai utilisé cette macro avec Excel 2007, et je n'ai eu aucun message d'erreur.
Cela ne devrait pas causer de problème !

'--------------------------------------
Sub CreerFeuilles()
Dim c As Range, Rg As Range
Set Rg = Worksheets("Effectifs Repas").Range("B6:B45")
For Each c In Rg
If c <> "" Then
Sheets("Trame").Copy after:=Sheets("Trame")
ActiveSheet.Name = c.Value
Range("E12") = c.Value
End If
Next c
End Sub
'--------------------------------------

Une copie du message que je faisais ce matin même pour un autre demandeur :

A ) quelques éléments à vérifier
- le nom de la feuille ne peut avoir plus de 31 caractères (espace compris)
- Ces caractères sont interdits dans le nom d'une feuille : * ? [ ] / :
- Évidemment, l'appellation d'un onglet ne peut pas être utiliser 2 fois.

B ) Sur une version d'Excel (97 je crois), il y avait un "bug" concernant le nom
(propriété NAME)
de la feuille créée. Regarde dans la fenêtre de l'éditeur de code, comment sont
écris le nom des objets "Feuille" de ton application. Est-ce que tu as des noms
avec une série de 111111111111111 à la fin de ceux-ci ? Il arrive que le nom
dépasse le nombre de caractère permis (31) et là ça bloque.
'-------------------------------------------------



"Cyr73" a écrit dans le message de groupe de discussion
:
Bonjour,
tout d'abord je tiens à remercier tous ceux qui prennent de leur temps
pour nous aider.

voici le problème que je rencontre lors de l'exécution de
cette macro. elle n'arrive jamais à créer les onglets de la liste des clients
jusqu'à la fin. je me demande si le fait de rajouter des onglets en grand
nombre (40) fait planter la mémoire car après l'arrêt sur le plantage je ne
peut plus
rajouter manuellement un onglet il faut que je ferme le programme et l'ouvre
de nouveau pour avoir cette fonctionnalité.
une idée peut être ??

Sub CreerFeuilles()
Dim c As Range
For Each c In ['Effectifs Repas'!B6:B45]
If c <> "" Then
Attente (1000)
Sheets("Trame").Copy after:=Sheets("Trame")
Attente (1000)
ActiveSheet.Name = c.Value
Attente (1000)
[E12] = c.Value
End If
Next c
End Sub

--
Cordialement

et avec tous mes remerciements..
Avatar
Cyr73
Bonjour Michedeins,

non il n'y a rien de particulier.
une feuille nommée "trame" qui est copier 40 fois ou il n'y a que des
formules
de recherche et un filtre auto "non actif".
pour ce qui concerne l'erreure c'est la fameuse "1004" la methode copy
worksheet a echouer.
--
Cordialement

et avec tous mes remerciements..


"michdenis" a écrit :

Bonjour,

Qu'est-ce qu'il y a dans cette feuille que tu copies ?
Plein de graphes, TDC ou simplement des données ?

As-tu un message d'erreur ? Quel est-il ?

J'ai utilisé cette macro avec Excel 2007, et je n'ai eu aucun message d'erreur.
Cela ne devrait pas causer de problème !

'--------------------------------------
Sub CreerFeuilles()
Dim c As Range, Rg As Range
Set Rg = Worksheets("Effectifs Repas").Range("B6:B45")
For Each c In Rg
If c <> "" Then
Sheets("Trame").Copy after:=Sheets("Trame")
ActiveSheet.Name = c.Value
Range("E12") = c.Value
End If
Next c
End Sub
'--------------------------------------

Une copie du message que je faisais ce matin même pour un autre demandeur :

A ) quelques éléments à vérifier
- le nom de la feuille ne peut avoir plus de 31 caractères (espace compris)
- Ces caractères sont interdits dans le nom d'une feuille : * ? [ ] / :
- Évidemment, l'appellation d'un onglet ne peut pas être utiliser 2 fois.

B ) Sur une version d'Excel (97 je crois), il y avait un "bug" concernant le nom
(propriété NAME)
de la feuille créée. Regarde dans la fenêtre de l'éditeur de code, comment sont
écris le nom des objets "Feuille" de ton application. Est-ce que tu as des noms
avec une série de 111111111111111 à la fin de ceux-ci ? Il arrive que le nom
dépasse le nombre de caractère permis (31) et là ça bloque.
'-------------------------------------------------



"Cyr73" a écrit dans le message de groupe de discussion
:
Bonjour,
tout d'abord je tiens à remercier tous ceux qui prennent de leur temps
pour nous aider.

voici le problème que je rencontre lors de l'exécution de
cette macro. elle n'arrive jamais à créer les onglets de la liste des clients
jusqu'à la fin. je me demande si le fait de rajouter des onglets en grand
nombre (40) fait planter la mémoire car après l'arrêt sur le plantage je ne
peut plus
rajouter manuellement un onglet il faut que je ferme le programme et l'ouvre
de nouveau pour avoir cette fonctionnalité.
une idée peut être ??

Sub CreerFeuilles()
Dim c As Range
For Each c In ['Effectifs Repas'!B6:B45]
If c <> "" Then
Attente (1000)
Sheets("Trame").Copy after:=Sheets("Trame")
Attente (1000)
ActiveSheet.Name = c.Value
Attente (1000)
[E12] = c.Value
End If
Next c
End Sub

--
Cordialement

et avec tous mes remerciements..



Avatar
michdenis
Enlève les données sensibles dans ton fichier et
publie le en utilisant le site internet Cijoint.fr

Tu peux supprimer toutes les feuilles qui ne sont pas pertinentes
à ta macro !


"Cyr73" a écrit dans le message de groupe de discussion
:
Bonjour Michedeins,

non il n'y a rien de particulier.
une feuille nommée "trame" qui est copier 40 fois ou il n'y a que des
formules
de recherche et un filtre auto "non actif".
pour ce qui concerne l'erreure c'est la fameuse "1004" la methode copy
worksheet a echouer.
--
Cordialement

et avec tous mes remerciements..


"michdenis" a écrit :

Bonjour,

Qu'est-ce qu'il y a dans cette feuille que tu copies ?
Plein de graphes, TDC ou simplement des données ?

As-tu un message d'erreur ? Quel est-il ?

J'ai utilisé cette macro avec Excel 2007, et je n'ai eu aucun message d'erreur.
Cela ne devrait pas causer de problème !

'--------------------------------------
Sub CreerFeuilles()
Dim c As Range, Rg As Range
Set Rg = Worksheets("Effectifs Repas").Range("B6:B45")
For Each c In Rg
If c <> "" Then
Sheets("Trame").Copy after:=Sheets("Trame")
ActiveSheet.Name = c.Value
Range("E12") = c.Value
End If
Next c
End Sub
'--------------------------------------

Une copie du message que je faisais ce matin même pour un autre demandeur :

A ) quelques éléments à vérifier
- le nom de la feuille ne peut avoir plus de 31 caractères (espace compris)
- Ces caractères sont interdits dans le nom d'une feuille : * ? [ ] / :
- Évidemment, l'appellation d'un onglet ne peut pas être utiliser 2 fois.

B ) Sur une version d'Excel (97 je crois), il y avait un "bug" concernant le nom
(propriété NAME)
de la feuille créée. Regarde dans la fenêtre de l'éditeur de code, comment sont
écris le nom des objets "Feuille" de ton application. Est-ce que tu as des noms
avec une série de 111111111111111 à la fin de ceux-ci ? Il arrive que le nom
dépasse le nombre de caractère permis (31) et là ça bloque.
'-------------------------------------------------



"Cyr73" a écrit dans le message de groupe de
discussion
:
Bonjour,
tout d'abord je tiens à remercier tous ceux qui prennent de leur temps
pour nous aider.

voici le problème que je rencontre lors de l'exécution de
cette macro. elle n'arrive jamais à créer les onglets de la liste des clients
jusqu'à la fin. je me demande si le fait de rajouter des onglets en grand
nombre (40) fait planter la mémoire car après l'arrêt sur le plantage je ne
peut plus
rajouter manuellement un onglet il faut que je ferme le programme et l'ouvre
de nouveau pour avoir cette fonctionnalité.
une idée peut être ??

Sub CreerFeuilles()
Dim c As Range
For Each c In ['Effectifs Repas'!B6:B45]
If c <> "" Then
Attente (1000)
Sheets("Trame").Copy after:=Sheets("Trame")
Attente (1000)
ActiveSheet.Name = c.Value
Attente (1000)
[E12] = c.Value
End If
Next c
End Sub

--
Cordialement

et avec tous mes remerciements..



Avatar
Cyr73
Voici le fichier

http://www.cijoint.fr/cjlink.php?file=cj200909/cijpyocSeG.xls

Cordialement

et avec tout mes remerciements..


"michdenis" a écrit :

Enlève les données sensibles dans ton fichier et
publie le en utilisant le site internet Cijoint.fr

Tu peux supprimer toutes les feuilles qui ne sont pas pertinentes
à ta macro !


"Cyr73" a écrit dans le message de groupe de discussion
:
Bonjour Michedeins,

non il n'y a rien de particulier.
une feuille nommée "trame" qui est copier 40 fois ou il n'y a que des
formules
de recherche et un filtre auto "non actif".
pour ce qui concerne l'erreure c'est la fameuse "1004" la methode copy
worksheet a echouer.
--
Cordialement

et avec tous mes remerciements..


"michdenis" a écrit :

> Bonjour,
>
> Qu'est-ce qu'il y a dans cette feuille que tu copies ?
> Plein de graphes, TDC ou simplement des données ?
>
> As-tu un message d'erreur ? Quel est-il ?
>
> J'ai utilisé cette macro avec Excel 2007, et je n'ai eu aucun message d'erreur.
> Cela ne devrait pas causer de problème !
>
> '--------------------------------------
> Sub CreerFeuilles()
> Dim c As Range, Rg As Range
> Set Rg = Worksheets("Effectifs Repas").Range("B6:B45")
> For Each c In Rg
> If c <> "" Then
> Sheets("Trame").Copy after:=Sheets("Trame")
> ActiveSheet.Name = c.Value
> Range("E12") = c.Value
> End If
> Next c
> End Sub
> '--------------------------------------
>
> Une copie du message que je faisais ce matin même pour un autre demandeur :
>
> A ) quelques éléments à vérifier
> - le nom de la feuille ne peut avoir plus de 31 caractères (espace compris)
> - Ces caractères sont interdits dans le nom d'une feuille : * ? [ ] / :
> - Évidemment, l'appellation d'un onglet ne peut pas être utiliser 2 fois.
>
> B ) Sur une version d'Excel (97 je crois), il y avait un "bug" concernant le nom
> (propriété NAME)
> de la feuille créée. Regarde dans la fenêtre de l'éditeur de code, comment sont
> écris le nom des objets "Feuille" de ton application. Est-ce que tu as des noms
> avec une série de 111111111111111 à la fin de ceux-ci ? Il arrive que le nom
> dépasse le nombre de caractère permis (31) et là ça bloque.
> '-------------------------------------------------
>
>
>
> "Cyr73" a écrit dans le message de groupe de
> discussion
> :
> Bonjour,
> tout d'abord je tiens à remercier tous ceux qui prennent de leur temps
> pour nous aider.
>
> voici le problème que je rencontre lors de l'exécution de
> cette macro. elle n'arrive jamais à créer les onglets de la liste des clients
> jusqu'à la fin. je me demande si le fait de rajouter des onglets en grand
> nombre (40) fait planter la mémoire car après l'arrêt sur le plantage je ne
> peut plus
> rajouter manuellement un onglet il faut que je ferme le programme et l'ouvre
> de nouveau pour avoir cette fonctionnalité.
> une idée peut être ??
>
> Sub CreerFeuilles()
> Dim c As Range
> For Each c In ['Effectifs Repas'!B6:B45]
> If c <> "" Then
> Attente (1000)
> Sheets("Trame").Copy after:=Sheets("Trame")
> Attente (1000)
> ActiveSheet.Name = c.Value
> Attente (1000)
> [E12] = c.Value
> End If
> Next c
> End Sub
>
> --
> Cordialement
>
> et avec tous mes remerciements..
>


Avatar
michdenis
J'ai regardé ton fichier.

En principe la ligne de code
Sheets("Trame").Copy after:=Sheets("Trame")
n'est pas responsable du problème !

Sous Excel 2007, ta procédure telle qu'elle est écrite ne cause
aucun problème.

Sous Excel 2003, si on enlève toutes les formules de la feuille trame,
la copie s'effectue sans anicroches. La production d'une nouvelle
feuille s'arrête au moment où il y a déjà dans le classeur
13 444 formules.

Le problème provient d'une formule ! As-tu essayé de remplacer
rechercheh() par index(... equiv())

Sous Excel 2007, ta procédure telle qu'elle est écrite ne cause
aucun problème. Ce qui me fait dire qu'il y a probablement une
limite inhérente à excel qui a été atteinte ! Cette limite est de
quelle nature ? Je n'ai pas trouvé !

si tu utilises cette procédure, cela passe très bien ;
'------------------------------------------
Sub CreerFeuilles_Denis()
Dim Sh As Worksheet, X As Integer
Dim NF As Worksheet
Set Sh = Worksheets("Trame")

For Each c In ['Effectifs Repas'!B6:B45].SpecialCells(2, 23)
Set NF = Worksheets.Add
NF.Name = c.Value
With Sh.Cells
.Copy
NF.Cells.PasteSpecial (xlPasteAll)
Application.CutCopyMode = False
End With
Next
End Sub
'------------------------------------------




"Cyr73" a écrit dans le message de groupe de discussion
:
Voici le fichier

http://www.cijoint.fr/cjlink.php?file=cj200909/cijpyocSeG.xls

Cordialement

et avec tout mes remerciements..


"michdenis" a écrit :

Enlève les données sensibles dans ton fichier et
publie le en utilisant le site internet Cijoint.fr

Tu peux supprimer toutes les feuilles qui ne sont pas pertinentes
à ta macro !


"Cyr73" a écrit dans le message de groupe de
discussion
:
Bonjour Michedeins,

non il n'y a rien de particulier.
une feuille nommée "trame" qui est copier 40 fois ou il n'y a que des
formules
de recherche et un filtre auto "non actif".
pour ce qui concerne l'erreure c'est la fameuse "1004" la methode copy
worksheet a echouer.
--
Cordialement

et avec tous mes remerciements..


"michdenis" a écrit :

> Bonjour,
>
> Qu'est-ce qu'il y a dans cette feuille que tu copies ?
> Plein de graphes, TDC ou simplement des données ?
>
> As-tu un message d'erreur ? Quel est-il ?
>
> J'ai utilisé cette macro avec Excel 2007, et je n'ai eu aucun message d'erreur.
> Cela ne devrait pas causer de problème !
>
> '--------------------------------------
> Sub CreerFeuilles()
> Dim c As Range, Rg As Range
> Set Rg = Worksheets("Effectifs Repas").Range("B6:B45")
> For Each c In Rg
> If c <> "" Then
> Sheets("Trame").Copy after:=Sheets("Trame")
> ActiveSheet.Name = c.Value
> Range("E12") = c.Value
> End If
> Next c
> End Sub
> '--------------------------------------
>
> Une copie du message que je faisais ce matin même pour un autre demandeur :
>
> A ) quelques éléments à vérifier
> - le nom de la feuille ne peut avoir plus de 31 caractères (espace compris)
> - Ces caractères sont interdits dans le nom d'une feuille : * ? [ ] / :
> - Évidemment, l'appellation d'un onglet ne peut pas être utiliser 2 fois.
>
> B ) Sur une version d'Excel (97 je crois), il y avait un "bug" concernant le nom
> (propriété NAME)
> de la feuille créée. Regarde dans la fenêtre de l'éditeur de code, comment sont
> écris le nom des objets "Feuille" de ton application. Est-ce que tu as des noms
> avec une série de 111111111111111 à la fin de ceux-ci ? Il arrive que le nom
> dépasse le nombre de caractère permis (31) et là ça bloque.
> '-------------------------------------------------
>
>
>
> "Cyr73" a écrit dans le message de groupe de
> discussion
> :
> Bonjour,
> tout d'abord je tiens à remercier tous ceux qui prennent de leur temps
> pour nous aider.
>
> voici le problème que je rencontre lors de l'exécution de
> cette macro. elle n'arrive jamais à créer les onglets de la liste des clients
> jusqu'à la fin. je me demande si le fait de rajouter des onglets en grand
> nombre (40) fait planter la mémoire car après l'arrêt sur le plantage je ne
> peut plus
> rajouter manuellement un onglet il faut que je ferme le programme et l'ouvre
> de nouveau pour avoir cette fonctionnalité.
> une idée peut être ??
>
> Sub CreerFeuilles()
> Dim c As Range
> For Each c In ['Effectifs Repas'!B6:B45]
> If c <> "" Then
> Attente (1000)
> Sheets("Trame").Copy after:=Sheets("Trame")
> Attente (1000)
> ActiveSheet.Name = c.Value
> Attente (1000)
> [E12] = c.Value
> End If
> Next c
> End Sub
>
> --
> Cordialement
>
> et avec tous mes remerciements..
>


Avatar
Cyr73
C'est Génial, Merci Merci....

serait il possible que la cellule E12 prenne le nom
du client ?

--
Cordialement

et avec tous mes remerciements..


"michdenis" a écrit :

J'ai regardé ton fichier.

En principe la ligne de code
Sheets("Trame").Copy after:=Sheets("Trame")
n'est pas responsable du problème !

Sous Excel 2007, ta procédure telle qu'elle est écrite ne cause
aucun problème.

Sous Excel 2003, si on enlève toutes les formules de la feuille trame,
la copie s'effectue sans anicroches. La production d'une nouvelle
feuille s'arrête au moment où il y a déjà dans le classeur
13 444 formules.

Le problème provient d'une formule ! As-tu essayé de remplacer
rechercheh() par index(... equiv())

Sous Excel 2007, ta procédure telle qu'elle est écrite ne cause
aucun problème. Ce qui me fait dire qu'il y a probablement une
limite inhérente à excel qui a été atteinte ! Cette limite est de
quelle nature ? Je n'ai pas trouvé !

si tu utilises cette procédure, cela passe très bien ;
'------------------------------------------
Sub CreerFeuilles_Denis()
Dim Sh As Worksheet, X As Integer
Dim NF As Worksheet
Set Sh = Worksheets("Trame")

For Each c In ['Effectifs Repas'!B6:B45].SpecialCells(2, 23)
Set NF = Worksheets.Add
NF.Name = c.Value
With Sh.Cells
.Copy
NF.Cells.PasteSpecial (xlPasteAll)
Application.CutCopyMode = False
End With
Next
End Sub
'------------------------------------------




"Cyr73" a écrit dans le message de groupe de discussion
:
Voici le fichier

http://www.cijoint.fr/cjlink.php?file=cj200909/cijpyocSeG.xls

Cordialement

et avec tout mes remerciements..


"michdenis" a écrit :

> Enlève les données sensibles dans ton fichier et
> publie le en utilisant le site internet Cijoint.fr
>
> Tu peux supprimer toutes les feuilles qui ne sont pas pertinentes
> à ta macro !
>
>
> "Cyr73" a écrit dans le message de groupe de
> discussion
> :
> Bonjour Michedeins,
>
> non il n'y a rien de particulier.
> une feuille nommée "trame" qui est copier 40 fois ou il n'y a que des
> formules
> de recherche et un filtre auto "non actif".
> pour ce qui concerne l'erreure c'est la fameuse "1004" la methode copy
> worksheet a echouer.
> --
> Cordialement
>
> et avec tous mes remerciements..
>
>
> "michdenis" a écrit :
>
> > Bonjour,
> >
> > Qu'est-ce qu'il y a dans cette feuille que tu copies ?
> > Plein de graphes, TDC ou simplement des données ?
> >
> > As-tu un message d'erreur ? Quel est-il ?
> >
> > J'ai utilisé cette macro avec Excel 2007, et je n'ai eu aucun message d'erreur.
> > Cela ne devrait pas causer de problème !
> >
> > '--------------------------------------
> > Sub CreerFeuilles()
> > Dim c As Range, Rg As Range
> > Set Rg = Worksheets("Effectifs Repas").Range("B6:B45")
> > For Each c In Rg
> > If c <> "" Then
> > Sheets("Trame").Copy after:=Sheets("Trame")
> > ActiveSheet.Name = c.Value
> > Range("E12") = c.Value
> > End If
> > Next c
> > End Sub
> > '--------------------------------------
> >
> > Une copie du message que je faisais ce matin même pour un autre demandeur :
> >
> > A ) quelques éléments à vérifier
> > - le nom de la feuille ne peut avoir plus de 31 caractères (espace compris)
> > - Ces caractères sont interdits dans le nom d'une feuille : * ? [ ] / :
> > - Évidemment, l'appellation d'un onglet ne peut pas être utiliser 2 fois.
> >
> > B ) Sur une version d'Excel (97 je crois), il y avait un "bug" concernant le nom
> > (propriété NAME)
> > de la feuille créée. Regarde dans la fenêtre de l'éditeur de code, comment sont
> > écris le nom des objets "Feuille" de ton application. Est-ce que tu as des noms
> > avec une série de 111111111111111 à la fin de ceux-ci ? Il arrive que le nom
> > dépasse le nombre de caractère permis (31) et là ça bloque.
> > '-------------------------------------------------
> >
> >
> >
> > "Cyr73" a écrit dans le message de groupe de
> > discussion
> > :
> > Bonjour,
> > tout d'abord je tiens à remercier tous ceux qui prennent de leur temps
> > pour nous aider.
> >
> > voici le problème que je rencontre lors de l'exécution de
> > cette macro. elle n'arrive jamais à créer les onglets de la liste des clients
> > jusqu'à la fin. je me demande si le fait de rajouter des onglets en grand
> > nombre (40) fait planter la mémoire car après l'arrêt sur le plantage je ne
> > peut plus
> > rajouter manuellement un onglet il faut que je ferme le programme et l'ouvre
> > de nouveau pour avoir cette fonctionnalité.
> > une idée peut être ??
> >
> > Sub CreerFeuilles()
> > Dim c As Range
> > For Each c In ['Effectifs Repas'!B6:B45]
> > If c <> "" Then
> > Attente (1000)
> > Sheets("Trame").Copy after:=Sheets("Trame")
> > Attente (1000)
> > ActiveSheet.Name = c.Value
> > Attente (1000)
> > [E12] = c.Value
> > End If
> > Next c
> > End Sub
> >
> > --
> > Cordialement
> >
> > et avec tous mes remerciements..
> >


Avatar
michdenis
Essaie comme ceci :

'----------------------------------------------
Sub CreerFeuilles_Denis()
Dim Sh As Worksheet, X As Integer
Dim NF As Worksheet
Set Sh = Worksheets("Trame")

For Each c In ['Effectifs Repas'!B6:B45].SpecialCells(2, 23)
Set NF = Worksheets.Add
NF.Name = c.Value
With Sh.Cells
.Copy
NF.Cells.PasteSpecial (xlPasteAll)
NF.Range("E12") = C.Value
Application.CutCopyMode = False
End With
Next
End Sub
'----------------------------------------------

"Cyr73" a écrit dans le message de groupe de discussion
:
C'est Génial, Merci Merci....

serait il possible que la cellule E12 prenne le nom
du client ?

--
Cordialement

et avec tous mes remerciements..


"michdenis" a écrit :

J'ai regardé ton fichier.

En principe la ligne de code
Sheets("Trame").Copy after:=Sheets("Trame")
n'est pas responsable du problème !

Sous Excel 2007, ta procédure telle qu'elle est écrite ne cause
aucun problème.

Sous Excel 2003, si on enlève toutes les formules de la feuille trame,
la copie s'effectue sans anicroches. La production d'une nouvelle
feuille s'arrête au moment où il y a déjà dans le classeur
13 444 formules.

Le problème provient d'une formule ! As-tu essayé de remplacer
rechercheh() par index(... equiv())

Sous Excel 2007, ta procédure telle qu'elle est écrite ne cause
aucun problème. Ce qui me fait dire qu'il y a probablement une
limite inhérente à excel qui a été atteinte ! Cette limite est de
quelle nature ? Je n'ai pas trouvé !

si tu utilises cette procédure, cela passe très bien ;
'------------------------------------------
Sub CreerFeuilles_Denis()
Dim Sh As Worksheet, X As Integer
Dim NF As Worksheet
Set Sh = Worksheets("Trame")

For Each c In ['Effectifs Repas'!B6:B45].SpecialCells(2, 23)
Set NF = Worksheets.Add
NF.Name = c.Value
With Sh.Cells
.Copy
NF.Cells.PasteSpecial (xlPasteAll)
Application.CutCopyMode = False
End With
Next
End Sub
'------------------------------------------




"Cyr73" a écrit dans le message de groupe de
discussion
:
Voici le fichier

http://www.cijoint.fr/cjlink.php?file=cj200909/cijpyocSeG.xls

Cordialement

et avec tout mes remerciements..


"michdenis" a écrit :

> Enlève les données sensibles dans ton fichier et
> publie le en utilisant le site internet Cijoint.fr
>
> Tu peux supprimer toutes les feuilles qui ne sont pas pertinentes
> à ta macro !
>
>
> "Cyr73" a écrit dans le message de groupe de
> discussion
> :
> Bonjour Michedeins,
>
> non il n'y a rien de particulier.
> une feuille nommée "trame" qui est copier 40 fois ou il n'y a que des
> formules
> de recherche et un filtre auto "non actif".
> pour ce qui concerne l'erreure c'est la fameuse "1004" la methode copy
> worksheet a echouer.
> --
> Cordialement
>
> et avec tous mes remerciements..
>
>
> "michdenis" a écrit :
>
> > Bonjour,
> >
> > Qu'est-ce qu'il y a dans cette feuille que tu copies ?
> > Plein de graphes, TDC ou simplement des données ?
> >
> > As-tu un message d'erreur ? Quel est-il ?
> >
> > J'ai utilisé cette macro avec Excel 2007, et je n'ai eu aucun message d'erreur.
> > Cela ne devrait pas causer de problème !
> >
> > '--------------------------------------
> > Sub CreerFeuilles()
> > Dim c As Range, Rg As Range
> > Set Rg = Worksheets("Effectifs Repas").Range("B6:B45")
> > For Each c In Rg
> > If c <> "" Then
> > Sheets("Trame").Copy after:=Sheets("Trame")
> > ActiveSheet.Name = c.Value
> > Range("E12") = c.Value
> > End If
> > Next c
> > End Sub
> > '--------------------------------------
> >
> > Une copie du message que je faisais ce matin même pour un autre demandeur :
> >
> > A ) quelques éléments à vérifier
> > - le nom de la feuille ne peut avoir plus de 31 caractères (espace compris)
> > - Ces caractères sont interdits dans le nom d'une feuille : * ? [ ] / :
> > - Évidemment, l'appellation d'un onglet ne peut pas être utiliser 2 fois.
> >
> > B ) Sur une version d'Excel (97 je crois), il y avait un "bug" concernant le nom
> > (propriété NAME)
> > de la feuille créée. Regarde dans la fenêtre de l'éditeur de code, comment sont
> > écris le nom des objets "Feuille" de ton application. Est-ce que tu as des noms
> > avec une série de 111111111111111 à la fin de ceux-ci ? Il arrive que le nom
> > dépasse le nombre de caractère permis (31) et là ça bloque.
> > '-------------------------------------------------
> >
> >
> >
> > "Cyr73" a écrit dans le message de groupe de
> > discussion
> > :
> > Bonjour,
> > tout d'abord je tiens à remercier tous ceux qui prennent de leur temps
> > pour nous aider.
> >
> > voici le problème que je rencontre lors de l'exécution de
> > cette macro. elle n'arrive jamais à créer les onglets de la liste des clients
> > jusqu'à la fin. je me demande si le fait de rajouter des onglets en grand
> > nombre (40) fait planter la mémoire car après l'arrêt sur le plantage je ne
> > peut plus
> > rajouter manuellement un onglet il faut que je ferme le programme et l'ouvre
> > de nouveau pour avoir cette fonctionnalité.
> > une idée peut être ??
> >
> > Sub CreerFeuilles()
> > Dim c As Range
> > For Each c In ['Effectifs Repas'!B6:B45]
> > If c <> "" Then
> > Attente (1000)
> > Sheets("Trame").Copy after:=Sheets("Trame")
> > Attente (1000)
> > ActiveSheet.Name = c.Value
> > Attente (1000)
> > [E12] = c.Value
> > End If
> > Next c
> > End Sub
> >
> > --
> > Cordialement
> >
> > et avec tous mes remerciements..
> >