Barre Personnalisée au sein d'un XLA
#1
Débutant XLPages

Inscription: 15/01/2010

Messages: 3

Système d'exploitation:
PC
Version Excel utilisée:
97,2003,2007
Posté le : 17-01-2010 01h59
Bonjour le forum,

En parcourant, les sujets de cet interessant forum, je suis tombé sur une discussion constructive concernant la création d'une barre personnalisée avec des boutons renvoyant à des macros.
Ce qui m'épate c'est la réponse qu'à donner le membre nommé Guy (un Zip contenant un .XLA)
En téléchargeant ce fichier et l'exécutant par conséquent.
Une barre personnalisée apparaît avec deux boutons assortis de deux images.
En consultant le code, la surprise était énorme, Le code ne s'exécute qu'une fois et toutes les lignes de la macro de création de la barre deviennent des commentaires (lignes vertes).
Aussi en parcourant cette macro, à aucun moment, il y a une ligne qui fait réference aux images figurant sur les deux boutons de la barre. C'est vraiment hallucinant.

Ma question s'adresse à tout les membres de ce forum et tout particulièrement à Guy;

Comment peut-on construire ce genre de macro (s'exécutant une seule fois (puis toutes les lignes de la macro deviennent des commentaires) ?

Comment on a associé les images au bouton sachant qu'aucune ligne du code figurant au sein du XLA en fait réference ?

C'est un grand mystère.

Merci pour vos réponses.

Voici le lien de la discussion : http://www.mdf-xlpages.com/modules/ne ... ost_id=3053#forumpost3053
Pièce jointe:
zip Image_Macro.zip   [ Taille: 16.24 Ko - Téléchargements: 483 ]
Hors Ligne
Rapport   Haut 

Re: Barre Personnalisée au sein d'un XLA
#2
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 17-01-2010 22h02
Bonjour pili_mdf, le forum,

Essayons d'éclaircir le mystère.

Tout d'abord s'agit-il bien du classeur BarrePerso.xla?
Parce que dans le fil cité il y a aussi test_barre.xla et test_barre_1.xla dans un autre zip. Alors la précision n'est pas inutile.
Nous (je) prendrons pour acquis qu'il s'agit bien de Barre perso portée par BarrePerso.xla.

Quelques précisions :
  1. Une barre d'outils personnalisée peut être liée à l'application (Excel lui-même) ou à un classeur en particulier.
  2. Dans le cas qui nous occupe la barre Barre perso est portée par le classeur BarrePerso.xla.
  3. Une fois ouvert le classeur BarrePerso.xla, la barre portée par icelui est intégrée à l'application Excel et disponible à tout un chacun des classeurs.
  4. À la fermeture de BarrePerso.xla la procédure Workbook_BeforeClose() de BarrePerso.xla arrache la barre en question d'Excel. Elle est détruite et ne sera à nouveau disponible qu'à la réouverture de ce classeur xla.

D'autres précisions :
Citation :
Le code ne s'exécute qu'une fois et toutes les lignes de la macro de création de la barre deviennent des commentaires (lignes vertes).

Eh ben non! Jamais ce code n'est exécuté. Il est commenté pour fins d'exemple de création sans plus.

Citation :
Aussi en parcourant cette macro, à aucun moment, il y a une ligne qui fait référence aux images figurant sur les deux boutons de la barre.

Ces icônes de boutons ont été bricolé à la mitaine (québécisme) par mes soins avec l'éditeur d'icônes de bouton d'Excel.
  1. Excel fournit pléthores d'icônes de bouton à associer avec des boutons de barre personnelles.
  2. On peut aussi bricoler des icônes avec l'éditeur d'icônes de boutons, ce qui, dans le cas qui nous occupe, a été fait.

Citation :
Comment peut-on construire ce genre de macro (s'exécutant une seule fois (puis toutes les lignes de la macro deviennent des commentaires) ?

(bis) Cette procédure ne s'exécute pas du tout. Ni à l'ouverture du classeur ni autrement. Il s'agit de code mort commenté.

Mais alors comment s'y prend-on pour bricoler chose pareille?

Dans l'éditeur VBA (VBE)
Primo  - Choisir un nom exotique ou banal pour la barre d'outils.
Deuxio - Modifier avec ce nom la constante NOM_BARRE_PERSO du module modBarrePerso de BarrePerso.xla
Toizio - Décommenter et exécuter la procédure ConstruireBarre().
Quatrezio - Recommenter la procédure ConstruireBarre() pour éviter les embrouilles.

Une fois la barre perso nommée du nom évocateur choisit poursuivre dans Excel cette fois.

Primo - Afficher la nouvelle barre d'outils, si ce n'est déjà le cas, et à l'aide de l'éditeur d'icônes de boutons d'Excel bricoler une jolie icône pour chacun des boutons de cette barre (deux boutons dans le cas qui nous occupe depuis un moment déjà).
Deuxio - S'assurer d'avoir le classeur cible (qui portera cette barre) ouvert et actif dans Excel.
Troisio - Dans le formulaire Personnalisation cliquer sur le bouton Attacher. Un formulaire Associer une barre d'outils s'affiche.
Quatrezio - A l'aide de ce formulaire transbahuter la nouvelle barre vers le classeur actif.

Voilà, la barre perso avec ces boutons tout aussi persos est associée au classeur de son choix.
Ne reste qu'à ne pas oublier de détruire la barre perso à la fermeture du classeur comme dans BarrePerso.xla et le tour est joué.

Enregistrer le classeur porteur de la barre comme xls ou xla selon le goût.

Plus encore sur demande car je sais bien que cela ne suffira pas.

Cordialement,

Guy




Hors Ligne
Rapport   Haut 

Re: Barre Personnalisée au sein d'un XLA
#3
Débutant XLPages

Inscription: 15/01/2010

Messages: 3

Système d'exploitation:
PC
Version Excel utilisée:
97,2003,2007
Posté le : 21-01-2010 15h14
Merci GUY pour ta pertinente réponse.

J'ai compris le principe. Cependant, une question subsiste :
  1. Comment une barre d'outils personnalisée peut être liée à l'application (Excel lui-même)?
Merci pour ta disponibilité et compréhension.


Hors Ligne
Rapport   Haut 

Re: Barre Personnalisée au sein d'un XLA
#4
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 21-01-2010 16h48
Bonjour pili_mdf, le forum,

Chaque fois qu'une barre personnelle (appelée Barre pour la suite) est crée l'objet Barre est embarqué dans  Excel. En d'autres termes : Barre est un objet de la collection Application.CommandBars.

Que la barre ait été créée par commandes de menu ou par code dans un classeur particulier elle fait de facto partie de la collection Applicaition.CommandBars, c'est à dire d'Excel lui-même.

Lorsqu'on attache Barre à un classeur particulier elle est embarquée dans le classeur en question mais reste attachée à Excel.

On pourra donc transbahuter Barre vers un autre poste. Barre sera embarquée, attaché à Excel sur cet autre poste à l'ouverture du classeur porteur et y restera même après la fermeture du classeur porteur.

On ne peut détacher une Barre d'Excel qu'en la supprimant avec Barre.Delete.
On peut détacher une Barre d'un classeur par le menu de personnalisation bouton Attacher, bouton Supprimer.

Donc :
Citation :
Comment une barre d'outils personnalisée peut être liée à l'application (Excel lui-même)


Barre est liée à sa création.

Cordialement,

Guy



Hors Ligne
Rapport   Haut 

Re: Barre Personnalisée au sein d'un XLA
#5
Débutant XLPages

Inscription: 15/01/2010

Messages: 3

Système d'exploitation:
PC
Version Excel utilisée:
97,2003,2007
Posté le : 08-02-2010 18h21
Merci Guy pour ces explications pertinentes et concises.
Maintenant, je vois plus clair.

Regards,

pili
Hors Ligne
Rapport   Haut 

Re: Barre Personnalisée au sein d'un XLA
#6
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 08-02-2010 22h03
Bonsoir pili_mdf, Guy, le Forum,

Puisque la réponse de notre ami Guy te convient, je clos le présent fil en [résolu].
Merci d'y penser la prochaine fois pili_mdf (voir au bas de ma signature).

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes