Je reviens pour mon configurateur une fois de plus, et cette fois-ci l'erreur est assez marrante vous allez voir.
Sur le fichier ci-joint, on crée une feuille par catégorie, cette catégorie étant désignée par un titre et des noms (bref on s'en fout).
Toujours est-il que lorsque j'exécute la première fois juste après avoir ouvert mon fichier ma macro, j'ai une erreur qui est la suivante : "L'indice n'appartient pas à la sélection". Cette erreur s'adresse à la ligne suivante :
Cette troisième feuille est créée au sein de la macro, quelques lignes plus haut.
Le problème est le suivant : Lorsque j'exécute la macro pour la première fois depuis que j'ai ouvert le fichier, j'ai une erreur, et lorsque je regarde mes variables locales, je vois que mon NomFeuil est égal à "", plutot que de prendre le CodeName. En revanche, si je ferme la macro, que je supprime la page générée, et que je relance la macro, cette fois ci le NomFeuil prend la bonne valeur et la macro fonctionne donc correctement.
Est-ce que qqun a une idée ? J'ai essayé de remplir le CodeName juste après la création de la page, j'ai essayé de remplir le CodeName plusieurs fois, en me disant que peut-être sur le premier coup il était encore vide pour une raison ou pour une autre, mais rien n'y fait. Je ne comprends pas pourquoi uniquement lors de la première exécution le CodeName de la feuille que je crée est égal à "".
Bonjour,
Essayer cette PJ. Ca a l'air de fonctionner.
J'ai modifié quelques trucs en erreur comme le fait que NeedCheck est vide si Range("I" & i) ="", ou dans le code importé, il manquait des espaces.
Essayer pour voir.
Toujours pas, et on voit bien dans les var locales que NomFeuil = "", c'est comme si le CodeName s'initialisait après la fin de l'exécution de la macro c'est très bizarre.
Ce qui est d'autant plus bizarre c'est que le problème n'arrive toujours qu'à la première exécution du code. Si je relance le code une seconde fois sans fermer le fichier entre deux, il tourne parfaitement ...
J'ai une update intéressante mais qui ne fonctionnera pas pour mon utilisation (je vous explique après).
- En fait, si plutot que d'appeler NomFeuil j'appelle directement "Feuil3", qui est le CodeName que va forcément prendre la première feuille à être générée, à ce moment là ça fonctionne dès la première exécution (avec un système de boucle on pourrait adapter également aux autres feuilles qui sont générées ensuite)
- Le problème c'est que ce fichier est destiné à être utilisé partout dans le monde, donc suivant le pays ce sera "Feuil3" (France), "Tabelle1" (Allemagne), "Sheet1" (Angleterre), etc ... Bref du coup impossible d'appliquer cette méthode ...
Ce qui est malgré tout intéressant c'est que ça veut dire que le CodeName existe ! Sinon en appelant "Feuil3" il devrait me dire qu'il ne trouve pas l'indice !
Le problème semble donc être de récupérer ce CodeName dans la variable NomFeuil.
Après la création de la 3ème feuille il faut sortir en relançant "Bouton1_Cliquer" :
VB:
'Creation of the first sheet
If Worksheets.Count < 3 Then
Worksheets.Add After:=Sheets(Worksheets.Count)
Application.OnTime 1, "Bouton1_Cliquer" 'relance la procédure
Exit Sub 'sort de la procédure
End If
Je ne sais pas pourquoi seule cette 3ème feuille (la 1ère créée) pose problème.
Re,
Et pourtant je vous assure que la V3 marche chez moi.
Essayer cette V4.
J'ai mis des DoEvents après chaque création de page pour laisser un peu de temps pour cette création.
Toujours pas chez moi sylvanu ...
Un problème de version peut-être ? Je suis sous Excel 2016.
Je pense que le problème vient du fait que Excel doit s'attacher à d'abord exécuter le corps de la macro AVANT d'attribuer les paramètres par défaut à ceux qui n'ont pas été définis pour les instances créées. Mais pourquoi est-ce que ça tourne bien chez toi, je n'arrive pas à me l'expliquer ...