-
1 pièce(s) jointe(s)
Barre outils en VBA
Bonjour à tous,
J'ai fait une application dans laquelle j'ai besoin d'une barre d'outils spécifique lançant divers sub.
Par précaution (et pour éviter tous les ennuis que vous devez connaître...) j'ai prévu :
- que cette barre d'outils soit crée par le programme à l'ouverture du fichier de l'application et détruite à la fermeture
- de fermer les autres barres d'outils en sauvant la liste afin de pouvoir les remettre à la fermeture
- que chaque sub correspondant à un bouton de la barre commence par : With ActiveWorkbook et se termine par End with de manière à éviter des conflits car plusieurs applications identiques (au nom de fichier près) peuvent être ouvertes en même temps. Pour éviter également tout conflit ici, la barre d'outils créée est nommée Bar & NomDuFichier de l'appli. qui porte la barre
Ci-joint un fichier nettoyé, ne comportant que le code propre au sujet.
Cela fonctionne normalement. Si je l'enregistre sous un autre nom, la nouvelle appli. fonctionne aussi. Mais si j'en ouvre une puis l'autre, à la seconde j'ai une erreur dans : CreerBarresOutilsPersonnalisées après With Barre1. Si à .name = NomBarrOut, je mets le curseur sur .Name, il me donne le nom d'une barre qui a été créée et nommée "Personnalisé 1" . Evidemment ensuite comme l'appli a planté, les barres restent dans EXCEL après fermeture des fichiers et plantent l'appli à l'ouverture suivante...
Si quelqu'un a une idée...merci d'avance
Cordialement
-
bonjour
lorsque tu enregistres le classeur sous un autre nom, tu modifies également la cellule nommée "MemNomBarreOut" ?
Sinon, lorsque tu réouvres tes deux classeurs, tu vas créer deux barres d'outils personnalisées au nom identique et ainsi provoquer le message d'erreur .
bonne soirée
michel
-
Bonjour,
Merci pour cette réponse.
En fait, je donne un nom à la barre après avoir cherché le nom du classeur qui s'ouvre donc, s'il a changé de nom, au début de Sub Workbook_Open() je donne à la barre la nom "Bar" & Nouveau nom de classeur, elle porte donc le nouveau nom mais le problème est (ou plutôt était...) que j'avais oublié de mettre le nom de feuille RMmemoire devant Range("MemNomBarreOut").Value et il ne le mettait pas correctement (mais sans créer d'erreur). Le deuxième point que je viens de trouver est qu'il faut plutôt mettre à chaque sub lancé par les boutons : With Workbooks(nomClasseur) au lieu de With ActiveWorkbook car le changement d'appli. ne semble pas systématiquement activer le nouveau classeur. Maintenant cela à l'air de fonctionner sans mélange. Le seul problème qui reste est que si l'appli plante, la barre d'outils reste dans le modèle. c'est surtout gênant pendant la mise au point car comme chacun sait, une appli. ne plante plus lorsqu'elle est au point :lol: non mais...:mouarf:
Encore merci, je reviendrai s'il y a de nouveau un problème sur ce sujet.
Cordialement