Barre d'outils attachée à un classeur

Brigitte

XLDnaute Barbatruc
Bonjour tout le monde,

Voilà j'ai un classeur dans lequel j'ai fait (avec l'enregistreur, je vous rassure) deux petits boutons qui permettent de masquer/démasquer une partie de la feuille.

J'ai aussi essayé (car on en a besoin pour un autre travail) de faire une barre d'outils attachée à ce classeur dans laquelle j'ai souhaité mettre ces boutons, car en fait on va en avoir beaucoup et une barre sera plus gérable que de tout mettre séparé en haut du tableau. Ca n'a pas marché de cliquer/glisser les deux boutons dedans donc j'ai recommencé les boutons.

1ère petite question bête :

Est-ce normal que ca ne marche pas (le cliquer/glisser de boutons faits avec les boutons de formulaire avec macros affectées) ou faut-il faire autrement ?

La vraie question n'est pas là. Donc deuxième question :

Ayant attaché cette barre d'outils avec ses boutons à CE classeur, j'aimerais à l'ouverture de CE classeur, qu'elle s'affiche (soit dans le corps de la feuille en haut, soit dans la barre d'outils normale) à l'ouverture du classeur.
Alors quand on coche dans Affichage/Barre d'outils, cette barre d'outils "masquage", ca marche. Mais... quand on ouvre un autre classeur, faut l'enlever, enfin la décocher.
J'aimerais donc, mais est-ce possible, sans macro, que cette barre ne soit jamais visible dans d'autres classeurs que celui-là, mais qu'elle s'ouvre automatiquement en ouvrant celui-là (car ce classeur est destiné à des utilisateurs connaissant plus ou moins excel et le plus simple serait le mieux).

Autre dernière question :

J'aimerais pouvoir changer la couleur de fond de mes boutons... J'ai donc essayé, grâce au wiki de michel et à une leçon en live d'Hervé, de créer des boutons avec la barre d'outils "boite à outils contrôle" qui permet ca... Mais peut on les regrouper sur une barre d'outils comme les boutons de formulaire ?

Ci-joint le classeur en question avec :

- les boutons de formulaire
- la barre d'outils avec les deux boutons macros normaux
- les boutons faits avec la barre d'outils "boite à outils contrôle" (rose et bleu).

Merci d'avance.

Edition :

J'avais laissé les noms... Oups, voilà c corrigé...
 

Pièces jointes

  • Classement_4EII pour xld.zip
    28.2 KB · Affichages: 49
Dernière édition:

Ti_

Nous a quitté
Repose en paix
Re : Barre d'outils attachée à un classeur

pour répondre à ta question sur le fait de ne voir une barre d'outils que dans un seul classeur sans macros, la réponse est non. C'est faisable (tous mes programmes avec une barre d'outils attachée le font) et c'est assez simple, mais il faut passer par une macro événementielle.

Pour la création de tes boutons, je ne vois pas l'intérêt d'avoir à la fois une barre d'outils et des boutons sur la feuille. Tu peux choisir l'un ou l'autre. Personnellement je n'aime pas trop des boutons qui se baladent sur une feuille et je ne les utilise que rarement, c'est pourquoi je crée une barre d'outils perso.
Pour créer une barre d'outils perso, c'est très simple, j'ai même mis sur Vériti (mais il est peut-être encore sur XLD dans les programmes) une démo qui montre comment faire, en ne modifiant que quelques lignes dans le module de démo.
Maintenant, si tu veux mettre une icone personnalisée sur tes boutons de barre d'outils, il te faudra utiliser une autre méthode, à savoir utiliser une barre d'outils attachée à ton classeur, comme tu l'as fait dans ton exemple. Mais alors si on ouvre ton classeur sans activer les macros, on risque de se retrouver avec une barre d'outils supplémentaire et inutile qui ne sera pas supprimée en quittant ton programme, ce qui fait un peu désordre (selon moi, qui aime bien ce qui est ordonné, arf)
Rappel : pour créer des icônes plus facilement qu'avec l'éditeur intégré d'Excel, j'ai fait un petit programme également sur Vériti. Il doit s'appeler... Icones.
 

Brigitte

XLDnaute Barbatruc
Re : Barre d'outils attachée à un classeur

Merci Ti,

Alors non non je n'ai pas envie de mettre les boutons tout seuls ET la barre d'outils, c'était pour montrer MES différentes étapes.

Donc tu me confirmes ce que je craignais et comme je sais pas faire de macro évenementielle, donc ca veut dire que... plouf !

Je vais quand même chercher (et essayer de trouver) ton truc sur la création de barres perso, peut être y trouverais je la macro événementielle dont tu me parles ?

Pour l'icone sur le bouton, ca risque d'être coton, j'ai essayé ton programme, pourtant sûrement clair, et je n'y suis pas parvenue pour me créer une icone pour le site vériti, quand il y en avait plus (ouf Vincent en a remis une OU je crois même qu'il l'a mise en téléchargement qq part et que je l'ai ajoutée en faisant parcourir sur mon pc, je sais plus... le temps passe si vite).

Merci.. Je vais fouiner.
 

Brigitte

XLDnaute Barbatruc
Re : Barre d'outils attachée à un classeur

Re,

Bon ben si qqun a une idée. Car je viens d'ouvrir le fichier "démo" de Ti et je comprends pas ce qu'il faut faire. Je m'attendais à une démo, a priori, il s'agit de "choses" à copier/coller. On y arrive pas.

Pour en revenir à ton fichier "démo", Ti, quand on regarde dans ta fenêtre VBA, Ti on voit bien un userform "démo" donc à mon avis on doit pouvoir cliquer pour avoir une démo... mais rien n'apparaît à l'ouverture du fichier, y a rien où cliquer (sauf à droite, en verticale : je suis le bouton 1 puis je suis le bouton 2...).

Ici la démo : VeriTi V 3, le site des amis d'Excel et OOo - Programmes VeriTi que je n'arrive pas à utiliser (pourtant je me régalais à l'avance mais je n'arrive pas à la faire fonctionner).

Toute idée sera donc la bienvenue.... pour ce fichier ou pour mon pb.
 
Dernière édition:

Kobaya

XLDnaute Occasionnel
Re : Barre d'outils attachée à un classeur

salut Brigitte,

voici le code que j'ai créé pour ça :
Code:
Private Sub Workbook_Open()
    On Error Resume Next
    ' affichage de la barre d'outils 'toto'
    Application.CommandBars("toto").Visible = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    ' enlever la barre d'outils Limit Management Spreadsheet
    Application.CommandBars("toto").Visible = False
End Sub
Private Sub Workbook_Activate()
    ' affichage de la barre d'outils 'toto'
    If ActiveSheet.Name = "toto" Then
        Application.CommandBars("toto").Visible = True
    End If
End Sub
Private Sub Workbook_Deactivate()
    On Error Resume Next
    ' enlever la barre d'outils 'toto'
    Application.CommandBars("toto").Visible = False
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    On Error Resume Next
    If Sh.Name = "toto" Then
        ' affichage de la barre d'outils 'toto'
        ' uniquement sur activation de l'onglet 'toto'        Application.CommandBars("toto").Visible = True
    Else
        ' masquage de la barre d'outils 'toto'
        Application.CommandBars("toto").Visible = False
    End If
End Sub

dis-moi si ça fonctionne comme tu veux. pour moi, ça marche super, alors...
 

Brigitte

XLDnaute Barbatruc
Re : Barre d'outils attachée à un classeur

Merci... On vient d'imprimer et on va regarder ca.

Deux tites questions quand tu pourras si tu reviens

1. Tu aurais pas laissé le nom de ta barre à un endroit ? (limite management spreadsheet) au lieu de toto ? c pour savoir et être sûr.

2. Pourquoi tu l'ouvres, tu la fermes, puis seulement tu l'actives et la désactives ?

Faudrait pas ouvrir, activer, puis à la fermeture désactiver, et fermer ?

Bon mon mari regarde ca, c pour lui. Merci déjà en tout cas. Ca va surement nous aider.

Edition : tu me dis si on se trompe mais on a CRU comprendre qu'il y avait donc plusieurs macros dissociables :

- une pour ouvrir et fermer la barre à l'ouverture ou fermeture du classeur
- une pour ne l'activer que SI on est sur la bonne feuille, pour pas qu'elle se mette sur une autre
- une pour ne l'activer que si on clique sur l'onglet de la feuille concernée ?

En tout cas, il est super content.
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re : Barre d'outils attachée à un classeur

Salut Brigitte
bonjour le Forum

bon si cela peut être utile effectivement tu es en présence de 5 macros événementielles qu'il faut placer dans le Module ThisWorkbook de la fenêtre Explorateur de Projets de Visual Basic
ainsi celon que le fichier et en ouverture ou en fermeture tu as des actions ainsi que lorsque tu actives la feuille Toto
pour ce qui est du Limit Management Spreadsheet dans le commentaire c'est un oubli il aurait du mettre Toto c'est pas grave c'est du commentaire lol
normalement ces macros doivent fonctionner quelque soit l'ordinateur sur le quel le fichier est ouvert (elle sont attachées au fichier)

bonne fin de journée
 

Brigitte

XLDnaute Barbatruc
Re : Barre d'outils attachée à un classeur

Merci Jean Marie. Tu me rassures pour le nom... car j'avais peur que ce soit une propriété, une variable, enfin je sais trop quoi, mais il me semblait que ct un "toto" oublié.

Pour le reste...

A priori ce sont les macros affectées aux boutons dans cette barre d'outils qui suivent pas... Pierre va vérifier s'il a bien ATTACHE la barre au classeur... je lui avais dit de le faire, mais dans la bataille.

Merci.
 

ChTi160

XLDnaute Barbatruc
Re : Barre d'outils attachée à un classeur

re Brigitte

pour ce qui est des macro biensur il faut quelles soient dans un module qui fasse parti de ton fichier ainsi lorsque tu ouvres ton fichier la barre s'installe et les macros attachées à ses boutons sont situées dans un module standard de ton fichier

je n'ai pas encore regardé de fichier tu en avais mis un lol

bonne fin de Journée
 

Brigitte

XLDnaute Barbatruc
Re : Barre d'outils attachée à un classeur

Merci Jean Marie, on va regarder ca... Après le tour de France je pense.

Pas bête l'idée d'un sous menu, pas bête du tout ca... ouh la la ! Le seul truc c de le refaire et aussi que si on quitte pas le fichier et qu'on se balade d'un fichier à un autre, il reste en haut. Mais c pas mal du tout.
 
Dernière édition:

Kobaya

XLDnaute Occasionnel
Re : Barre d'outils attachée à un classeur

Oooops! tu as raison...

la barre d'outils Toto n'apparaitra que sur activation de l'onglet Feuil1 :
Code:
Private Sub Workbook_Open()
    On Error Resume Next
    ' affichage de la barre d'outils 'toto'
    Application.CommandBars("Toto").Visible = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    ' enlever la barre d'outils Toto
    Application.CommandBars("Toto").Visible = False
End Sub
Private Sub Workbook_Activate()
    ' affichage de la barre d'outils 'Toto' uniquement sur affichage de la feuille Feuil1
    If ActiveSheet.Name = "Feuil1" Then
        Application.CommandBars("Toto").Visible = True
    End If
End Sub
Private Sub Workbook_Deactivate()
    On Error Resume Next
    ' enlever la barre d'outils 'Toto'
    Application.CommandBars("Toto").Visible = False
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    On Error Resume Next
    If Sh.Name = "Feuil1" Then
        ' affichage de la barre d'outils 'toto'
        ' uniquement sur activation de l'onglet 'Feuil1'
        Application.CommandBars("Toto").Visible = True
    Else
        ' masquage de la barre d'outils 'Toto'
        Application.CommandBars("Toto").Visible = False
    End If
End Sub

là, ça devrait être mieux ! Mea culpa...
 

Kobaya

XLDnaute Occasionnel
Re : Barre d'outils attachée à un classeur

Oooooops ! Tu as raison...

La barre Toto ne s'affichera que sur activation de l'onglet Feuil1 du classeur où elle est attachée
Code:
[LEFT]Private Sub Workbook_Open()
    On Error Resume Next
    ' affichage de la barre d'outils 'Toto'
    Application.CommandBars("Toto").Visible = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    ' enlever la barre d'outils Toto
    Application.CommandBars("Toto").Visible = False
End Sub
Private Sub Workbook_Activate()
    ' affichage de la barre d'outils 'Toto'
    If ActiveSheet.Name = "Feuil1" Then
        Application.CommandBars("Toto").Visible = True
    End If
End Sub
Private Sub Workbook_Deactivate()
    On Error Resume Next
    ' enlever la barre d'outils 'Toto'
    Application.CommandBars("Toto").Visible = False
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    On Error Resume Next
    If Sh.Name = "Feuil1" Then
        ' affichage de la barre d'outils 'Toto'
        ' uniquement sur activation de l'onglet 'Feuil1'
        Application.CommandBars("Toto").Visible = True
    Else
        ' masquage de la barre d'outils 'Toto'
        Application.CommandBars("Toto").Visible = False
    End If
End Sub[/LEFT]
Là, ça devrait être mieux :eek: Mea culpa...
 

Discussions similaires

Réponses
2
Affichages
454

Statistiques des forums

Discussions
314 485
Messages
2 110 101
Membres
110 663
dernier inscrit
ToussaintBug