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

Impossible de dupliquer un onglet à partir du nième essai

1 réponse
Avatar
Trirème
Bonjour à tous
En VBA, après plusieurs duplications d'un même onglet, j'obtiens le message :
Erreur d'exécution '1004' :
La méthode 'copy' de l'objet '_Worksheet' a échoué.
Équipement : Excel 2002 SP3, XP pro 2002 SP1, 500 MB de RAM

J'ai plusieurs macros qui fonctionnent sur ce principe : l'une d'elle
manipule un onglet mis en forme contenant un TCD. Elle modifie le champPage
en faisant défiler les items un à un, duplique l'onglet , le renomme, fait
des ajustements et pour finir copie le contenu en valeur.
Lorsque le VBA s'arrête sur l'erreur signalée, je ne peux même plus
dupliquer le fichier 'à la main' (avec la souris) et l'option du TCD
'Afficher les pages' ne fonctionne pas toujours. A ce stade, le VBA a pu
faire entre 25 et 40 duplications, c'est selon le projet.

Ce que j'ai lu sur cette erreur récurrente et les solutions proposées
m'amènent à soupçonner un problème de mémoire.
J'ai remanié le code en déclarant comme il faut toutes les variables.
J'ai fait des 'Application.CutCopyMode = False' souvent recommandées.
J'ai même tenté de supprimer les noms des feuilles que la duplication traine
inutilement.

Si je procède par 'Afficher les pages', je peux manipuler autant d'onglets
que nécessaires et autant de fois que je veux (plus de 450). Le problème
vient essentiellement (en apparence) de la duplication d'un onglet déjà mis
en forme, avec des noms, etc
Se peut il qu'une limite soit atteinte, genre : plus de 4000 formats et
qu'Excel n'arrive pas à la reconnaître ?
Peut on ou faut il gérer la mémoire ?

La seule solution que j'ai consiste à fermer et réouvrir Excel. C'est
pourquoi je demande vos avis, expériences et... solutions.
Merci d'avance

Cordialement,
Trirème

1 réponse

Avatar
Trirème
Une petite précision, car je continue à investiguer :
Même après l'impossibilité de dupliquer un onglet par VBA ou manuellement
(voir mon Pb), j'arrive pourtant à dupliquer le-dit onglet vers UN AUTRE
classeur.
Si j'essaie alors de copier cet onglet (renommé) du nouveau classeur vers
celui d'où il vient, j'obtiens un message d'erreur plus précis :

"Excel ne peut pas terminer cette tâche avec les ressources disponibles.
Sélectionnez moins de données ou fermez des applications."
Dois je m'en contenter ou peut on intervenir sur les ressources ?


Bonjour à tous
En VBA, après plusieurs duplications d'un même onglet, j'obtiens le message :
Erreur d'exécution '1004' :
La méthode 'copy' de l'objet '_Worksheet' a échoué.
Équipement : Excel 2002 SP3, XP pro 2002 SP1, 500 MB de RAM

J'ai plusieurs macros qui fonctionnent sur ce principe : l'une d'elle
manipule un onglet mis en forme contenant un TCD. Elle modifie le champPage
en faisant défiler les items un à un, duplique l'onglet , le renomme, fait
des ajustements et pour finir copie le contenu en valeur.
Lorsque le VBA s'arrête sur l'erreur signalée, je ne peux même plus
dupliquer le fichier 'à la main' (avec la souris) et l'option du TCD
'Afficher les pages' ne fonctionne pas toujours. A ce stade, le VBA a pu
faire entre 25 et 40 duplications, c'est selon le projet.

Ce que j'ai lu sur cette erreur récurrente et les solutions proposées
m'amènent à soupçonner un problème de mémoire.
J'ai remanié le code en déclarant comme il faut toutes les variables.
J'ai fait des 'Application.CutCopyMode = False' souvent recommandées.
J'ai même tenté de supprimer les noms des feuilles que la duplication traine
inutilement.

Si je procède par 'Afficher les pages', je peux manipuler autant d'onglets
que nécessaires et autant de fois que je veux (plus de 450). Le problème
vient essentiellement (en apparence) de la duplication d'un onglet déjà mis
en forme, avec des noms, etc
Se peut il qu'une limite soit atteinte, genre : plus de 4000 formats et
qu'Excel n'arrive pas à la reconnaître ?
Peut on ou faut il gérer la mémoire ?

La seule solution que j'ai consiste à fermer et réouvrir Excel. C'est
pourquoi je demande vos avis, expériences et... solutions.
Merci d'avance

Cordialement,
Trirème