VBA - Problème avec la création de feuilles

Bonjour,

En vous souhaitant la bonne année sur mon autre fil, je ne pensais pas devoir en ouvrir un autre déjà maintenant.

J’ai à nouveau un problème incompréhensible comme je ne les aime pas.

Avec le fichier ci-joint, si je lance ma macro placée derrière le bouton « Sauvegarde des saisies + récapitulation finale » toutes les feuilles nécessaires (quelques feuilles « Décompte xxx » et quelques feuilles commençant par un numéro) sont créées sans problème.

Si je lance une deuxième fois la même macro – ce qui devrait effacer toutes les feuilles créées auparavant et en créer de nouvelles réactualisées – ça bloque sur la ligne Sheets("Modèle Dicastère").Copy after:=Sheets("Conseils d'utilisation") ou sur la ligne Sheets("Récapitulation").Copy after:=Sheets("Conseils d'utilisation"). Comme ça ne bloque pas toujours pour la création de la même feuille, je n’arrive pas à trouver la logique de ce blocage (parfois toutes les feuilles sauf une sont créées, mais ça n’arrive jamais au bout).

Pour l’instant, la seule solution que j’ai trouvée afin de passer par-dessus ce problème de blocage est de « remettre à zéro » mon fichier en lançant la macro Sub PROVISOIRE placée dans le module Récapitulation_finale (notamment afin de masquer la feuille « Modèle Dicastère » qui est parfois restée visible), de refermer le fichier après enregistrement puis de l’ouvrir à nouveau.

Mais si vous pouviez m’aider à éviter de devoir faire cela ……

A vous relire.

45vacations-2014.zip (144.01 Ko)

Bonjour,

J'ai effectivement un bug également au bout d'un moment (pas toujours au même endroit). J'ai déjà eu ce type de problème et il me semble que c'est un bug inhérent d'excel.

Lorsque les classeurs commencent à être conséquents (avec pas mal de feuilles), l'ajout de feuille avec la méthode worksheets.copy plante inopinément (erreur 1004). A regarder les autres forums spécialisés, beaucoup se sont déjà cassé les dents sur ce problème.

Tu trouveras ici quelques explications de microsoft : http://support.microsoft.com/kb/210684/fr

L'astuce est de sauvegarder le classeur à intervalle régulier pendant le processus de création des feuilles.

Bon courage.

Bonjour Yvouille le forum

alors déjà une petite modif sur ta macro

effacer les feuilles, comme pour toutes suppression tu pars de la fin en remontant et pas l'inverse

voilà donc modifié

je regarde le reste mais sans savoir ce que l'on doit obtenir c'est pas simple

a+

papou

Sub Effacer_feuilles_dicastère()
Dim i As Integer, k As Integer
Application.DisplayAlerts = 0
    For k = Sheets.Count To 1 Step -1
        If IsNumeric(Left(Sheets(k).Name, 1)) Then
            Sheets(k).Delete
        End If
    Next k
Application.DisplayAlerts = 1
End Sub

Re bonjour Yvouille le forum

bon alors le temps de comprendre un peu et voilà le fichier modifié

par contre je ne te dirai pas ta méthode pour effacer ??? Là j'ai pas mis le nez dedans mais il y a du boulot à faire !!!

ouvres testes et redis moi

tu peux cliquer 50 fois si tu veux maintenant sur ton bouton créer

a+

Bonne Année 2012

papou

Bonjour à tous,

Merci Crix, merci Papou pour vos réponses.

J'ai déjà un peu été voir le site proposé par Crix, mais il semble qu'ils proposent de créer des copies(SaveAs). A voir si jamais la solution de Papou devait pas convenir.

Papou, je n'ai plus le temps de tester ta solution aujourd'hui, ma fille piafe d'impatience afin que je lache mon ordi. Je vais probablement voir ça demain ou après-demain. Mais selon ton texte, j'ai bon espoir.

A la prochaine.

Re Yvouille le forum

pas de souci pour demain ou après.

Mais, plutôt que de perdre ton temps à aller lire la source microsoft, si tu avais essayé le fichier, il est lui opérationnel et sans sauvegarde intermédiaire.

Quand excel sait faire des choses, il faut utiliser ce qui marche et pas les trucs à problèmes !!

Tu n'as plus qu'à tester pour te rendre compte.

Bonne Année 2012

a+

papou

PS: Bisous à la petite et bon réveillon!!!!

Salut Papou,

Bonne année à toi aussi

Je crois que tu m’as mal compris J’ai dit que j’avais eu le temps d’aller voir la solution proposée par Crix avant d’avoir vu que tu en avais également proposé une. Comme je n’avais plus le temps de voir ton fichier, j’ai écrit que j’allais voir ça plus tard et j’ai bien précisé que ta solution me paraissait de prime abord très, très intéressante.

J’ai maintenant eu le temps de consulter ton fichier et mes présomptions se sont avérées ; ça fonctionne à merveille ; c’est vraiment génial et je t’en remercie sincèrement.

Je tiens malgré tout à préciser que j'ai beaucoup apprécier l'aide de Crix également.

Il y a juste un petit truc qui me chicane. Les feuilles « Décompte Xxxx » créées sur la base de la feuille « Récapitulation » ne comportent pas le bouton « Liste des feuilles » alors que les feuilles récapitulatives des différents dicastères oui. Je ne vois pas où est la différence. Peux-tu encore m’aider pour cela ?

Bonjour Yvouille le forum

voilà

a+

papou

Salut Papou,

Tout fonctionne maintenant d'une manière optimale

Je te remercie une fois de plus pour ton aide géniale.

Bonnes salutations.

Bonjour,

Grâce à l'aide de Papou, mon code crée des nouvelles feuilles sur la base de deux feuilles différentes, «Récapitulation» et «Modèle Dicastère».

Ces deux feuilles de base contiennent chacune un code «Private Sub Worksheet_Activate» qui n’est pas repris dans les copies. Serait-il possible que ça le soit ?

Mon fichier a encore évolué depuis la dernière fois, voici la version actuelle.

A vous relire.

up

Rechercher des sujets similaires à "vba probleme creation feuilles"