J'aimerais bien avoir dans mon classeur, une barre menu qui apparait
au passage de la sourie, et qui m'affiche la liste de tout les onglets
de mon classeur.
J'ai trouv=E9 un sujet incomplet sur ce forum, et l'auteur du code
d=E9crit plusieurs problemes non r=E9gl=E9s.
A ma connaissance,il n'existe pas d'événement associé au survol d'une barre d'outils. Quel avantage de la BO par rapport au formulaire que j'ai posté ?
JB On 6 déc, 20:01, Apitos wrote:
Bonsoir,
Une idée, un exemple ... ?
Merci.
Bonsoir,
A ma connaissance,il n'existe pas d'événement associé au survol d'une
barre d'outils. Quel avantage de la BO par rapport au formulaire que
j'ai posté ?
JB
On 6 déc, 20:01, Apitos <api...@gmail.com> wrote:
A ma connaissance,il n'existe pas d'événement associé au survol d'une barre d'outils. Quel avantage de la BO par rapport au formulaire que j'ai posté ?
JB On 6 déc, 20:01, Apitos wrote:
Bonsoir,
Une idée, un exemple ... ?
Merci.
Apitos
Bonsoir JB,
A ma connaissance,il n'existe pas d'événement associé au survol d'un e barre d'outils. Quel avantage de la BO par rapport au formulaire que j'ai posté ?
Je me rappel avoir deja vu un exemple, qui au survol de la souris sur une BO, fait sortir un menu flottant qui contient des exemples de fonctions.
La BO est contituée d'un bouton et non pas d'une ComboBox.
Bon tes exemples (UserForm) et BarreFeuilles font largement le travail, mais j'aimerais simplement avoir le même principe pour lister mes feuilles.
Merci et @ bientôt.
Salutations.
Bonsoir JB,
A ma connaissance,il n'existe pas d'événement associé au survol d'un e
barre d'outils. Quel avantage de la BO par rapport au formulaire que
j'ai posté ?
Je me rappel avoir deja vu un exemple, qui au survol de la souris sur
une BO, fait sortir un menu flottant qui contient des exemples de
fonctions.
La BO est contituée d'un bouton et non pas d'une ComboBox.
Bon tes exemples (UserForm) et BarreFeuilles font largement le
travail, mais j'aimerais simplement avoir le même principe pour lister
mes feuilles.
A ma connaissance,il n'existe pas d'événement associé au survol d'un e barre d'outils. Quel avantage de la BO par rapport au formulaire que j'ai posté ?
Je me rappel avoir deja vu un exemple, qui au survol de la souris sur une BO, fait sortir un menu flottant qui contient des exemples de fonctions.
La BO est contituée d'un bouton et non pas d'une ComboBox.
Bon tes exemples (UserForm) et BarreFeuilles font largement le travail, mais j'aimerais simplement avoir le même principe pour lister mes feuilles.
Merci et @ bientôt.
Salutations.
Apitos
Bonsoir,
Je crois que je vais me contenter de ce que m'est proposé.
Salutations
Bonsoir,
Je crois que je vais me contenter de ce que m'est proposé.
Je crois que je vais me contenter de ce que m'est proposé.
Salutations
Apitos
Bonsoir,
Un peitit problème.
La barre d'outils n'est pas créer, pourquoi ?
'---------------------------------- Sub auto_open() Dim Barre As CommandBar On Error Resume Next 'On place le bouton en haut dans la barre menu Set Barre = CommandBars(1) Barre.Name = "BarreFeuilles" Barre.Visible = True Set Menu = Barre.Controls.Add(msoControlComboBox) For I = 1 To Sheets.Count Menu.AddItem Sheets(I).Name Next With Menu .OnAction = "ChoixFeuille" .Text = "Sélectionner puis choisir" .Width = 133 End With End Sub
Sub auto_close() On Error Resume Next CommandBars("BarreFeuilles").Delete End Sub
Sub ChoixFeuille() Sheets(CommandBars("BarreFeuilles").Controls(1).Text).Select End Sub '-------------------
Merci.
Bonsoir,
Un peitit problème.
La barre d'outils n'est pas créer, pourquoi ?
'----------------------------------
Sub auto_open()
Dim Barre As CommandBar
On Error Resume Next
'On place le bouton en haut dans la barre menu
Set Barre = CommandBars(1)
Barre.Name = "BarreFeuilles"
Barre.Visible = True
Set Menu = Barre.Controls.Add(msoControlComboBox)
For I = 1 To Sheets.Count
Menu.AddItem Sheets(I).Name
Next
With Menu
.OnAction = "ChoixFeuille"
.Text = "Sélectionner puis choisir"
.Width = 133
End With
End Sub
Sub auto_close()
On Error Resume Next
CommandBars("BarreFeuilles").Delete
End Sub
Sub ChoixFeuille()
Sheets(CommandBars("BarreFeuilles").Controls(1).Text).Select
End Sub
'-------------------
'---------------------------------- Sub auto_open() Dim Barre As CommandBar On Error Resume Next 'On place le bouton en haut dans la barre menu Set Barre = CommandBars(1) Barre.Name = "BarreFeuilles" Barre.Visible = True Set Menu = Barre.Controls.Add(msoControlComboBox) For I = 1 To Sheets.Count Menu.AddItem Sheets(I).Name Next With Menu .OnAction = "ChoixFeuille" .Text = "Sélectionner puis choisir" .Width = 133 End With End Sub
Sub auto_close() On Error Resume Next CommandBars("BarreFeuilles").Delete End Sub
Sub ChoixFeuille() Sheets(CommandBars("BarreFeuilles").Controls(1).Text).Select End Sub '-------------------
Merci.
MichDenis
A ) On Error Resume Next *** Cette ligne de commande t'empêche de voir pourquoi ton code ne fonctionne pas ! Avant d'ajouter cette ligne, il faut savoir pourquoi on en a de besoin.! Il est préférable de l'ajouter seulement après que l'on a réussi à faire fonctionner sa procédure....
B ) Ta grosse erreur : Set Barre = CommandBars(1) CommandBars(1) n'est pas à proprement une barre d'outils mais la barre des menus qu'affiche excel dans l'interface de la feuille de calcul. Il y a quand même quelques différences entre une barre de menu et une barre d'outils de bouton de commande.
C ) Cette barre de menu d'excel appartient à l'application Excel et elle sa propriété Name est déjà définie : "Worksheet Menu Bar".... Ce n'est pas une barre d'outils personnaliser que tu crées mais une qui appartient à excel... donc, si c'est cela que tu veux, utilise les propriétés de l'objet.
D ) Si tu enlèves cette ligne de code : Barre.Name = "BarreFeuilles" Ta procédure va fonctionner et tu va ajouter ton contrôle à la suite des items du menu déjà existant.
"Apitos" a écrit dans le message de news:
Bonsoir,
Un peitit problème.
La barre d'outils n'est pas créer, pourquoi ?
'---------------------------------- Sub auto_open() Dim Barre As CommandBar On Error Resume Next 'On place le bouton en haut dans la barre menu Set Barre = CommandBars(1) Barre.Name = "BarreFeuilles" Barre.Visible = True Set Menu = Barre.Controls.Add(msoControlComboBox) For I = 1 To Sheets.Count Menu.AddItem Sheets(I).Name Next With Menu .OnAction = "ChoixFeuille" .Text = "Sélectionner puis choisir" .Width = 133 End With End Sub
Sub auto_close() On Error Resume Next CommandBars("BarreFeuilles").Delete End Sub
Sub ChoixFeuille() Sheets(CommandBars("BarreFeuilles").Controls(1).Text).Select End Sub '-------------------
Merci.
A ) On Error Resume Next
*** Cette ligne de commande t'empêche de voir
pourquoi ton code ne fonctionne pas ! Avant
d'ajouter cette ligne, il faut savoir pourquoi on
en a de besoin.! Il est préférable de l'ajouter
seulement après que l'on a réussi à faire fonctionner
sa procédure....
B ) Ta grosse erreur : Set Barre = CommandBars(1)
CommandBars(1) n'est pas à proprement une barre d'outils
mais la barre des menus qu'affiche excel dans l'interface de la
feuille de calcul. Il y a quand même quelques différences entre
une barre de menu et une barre d'outils de bouton de commande.
C ) Cette barre de menu d'excel appartient à l'application Excel et elle
sa propriété Name est déjà définie : "Worksheet Menu Bar"....
Ce n'est pas une barre d'outils personnaliser que tu crées mais une
qui appartient à excel... donc, si c'est cela que tu veux, utilise les propriétés
de l'objet.
D ) Si tu enlèves cette ligne de code : Barre.Name = "BarreFeuilles"
Ta procédure va fonctionner et tu va ajouter ton contrôle à la
suite des items du menu déjà existant.
"Apitos" <apitos@gmail.com> a écrit dans le message de news:
6ed6c6c4-6006-47be-b769-a9c65a1a1c7b@e4g2000hsg.googlegroups.com...
Bonsoir,
Un peitit problème.
La barre d'outils n'est pas créer, pourquoi ?
'----------------------------------
Sub auto_open()
Dim Barre As CommandBar
On Error Resume Next
'On place le bouton en haut dans la barre menu
Set Barre = CommandBars(1)
Barre.Name = "BarreFeuilles"
Barre.Visible = True
Set Menu = Barre.Controls.Add(msoControlComboBox)
For I = 1 To Sheets.Count
Menu.AddItem Sheets(I).Name
Next
With Menu
.OnAction = "ChoixFeuille"
.Text = "Sélectionner puis choisir"
.Width = 133
End With
End Sub
Sub auto_close()
On Error Resume Next
CommandBars("BarreFeuilles").Delete
End Sub
Sub ChoixFeuille()
Sheets(CommandBars("BarreFeuilles").Controls(1).Text).Select
End Sub
'-------------------
A ) On Error Resume Next *** Cette ligne de commande t'empêche de voir pourquoi ton code ne fonctionne pas ! Avant d'ajouter cette ligne, il faut savoir pourquoi on en a de besoin.! Il est préférable de l'ajouter seulement après que l'on a réussi à faire fonctionner sa procédure....
B ) Ta grosse erreur : Set Barre = CommandBars(1) CommandBars(1) n'est pas à proprement une barre d'outils mais la barre des menus qu'affiche excel dans l'interface de la feuille de calcul. Il y a quand même quelques différences entre une barre de menu et une barre d'outils de bouton de commande.
C ) Cette barre de menu d'excel appartient à l'application Excel et elle sa propriété Name est déjà définie : "Worksheet Menu Bar".... Ce n'est pas une barre d'outils personnaliser que tu crées mais une qui appartient à excel... donc, si c'est cela que tu veux, utilise les propriétés de l'objet.
D ) Si tu enlèves cette ligne de code : Barre.Name = "BarreFeuilles" Ta procédure va fonctionner et tu va ajouter ton contrôle à la suite des items du menu déjà existant.
"Apitos" a écrit dans le message de news:
Bonsoir,
Un peitit problème.
La barre d'outils n'est pas créer, pourquoi ?
'---------------------------------- Sub auto_open() Dim Barre As CommandBar On Error Resume Next 'On place le bouton en haut dans la barre menu Set Barre = CommandBars(1) Barre.Name = "BarreFeuilles" Barre.Visible = True Set Menu = Barre.Controls.Add(msoControlComboBox) For I = 1 To Sheets.Count Menu.AddItem Sheets(I).Name Next With Menu .OnAction = "ChoixFeuille" .Text = "Sélectionner puis choisir" .Width = 133 End With End Sub
Sub auto_close() On Error Resume Next CommandBars("BarreFeuilles").Delete End Sub
Sub ChoixFeuille() Sheets(CommandBars("BarreFeuilles").Controls(1).Text).Select End Sub '-------------------
Merci.
Apitos
Bonsoir MichDenis et le forum;
Merci de tes conseils.
Maintenant mon menu est créé après le point d'exclamation de l'aide.
Mais voila, ce menu reste affiché après la fermeture du fichier.
Et à la prochaine exécution, un autre menu similaire vient s'ajouter après celui qui n'a pas été supprimé.
J'ai un peu essayé de modifier le code de telle façon, qu'il y'a une vérification au début, de l'existence de mon menu.
Une fois trouvé, il sera supprimé, ensuite on crée un nouveau.
'---------------------------------- Sub auto_open() Dim Barre As CommandBar Dim Ctl As Object 'On Error Resume Next For Each Ctl In CommandBars(1).Controls If Ctl.TooltipText = "BarreFeuilles" Then CommandBars(1).Controls(msoControlComboBox).Delete Exit For End If Next Ctl 'On place le bouton en haut dans la barre menu Set Barre = CommandBars(1) Barre.Visible = True Set Menu = Barre.Controls.Add(msoControlComboBox)
For I = 1 To Sheets.Count Menu.AddItem Sheets(I).Name Next With Menu .OnAction = "ChoixFeuille" .Text = "Sélectionner puis choisir" .Width = 133 .TooltipText = "BarreFeuilles" End With End Sub
Sub auto_close() On Error Resume Next CommandBars("BarreFeuilles").Delete End Sub
Sub ChoixFeuille() Sheets(CommandBars("BarreFeuilles").Controls(1).Text).Select End Sub '-------------------
Merci.
Bonsoir MichDenis et le forum;
Merci de tes conseils.
Maintenant mon menu est créé après le point d'exclamation de l'aide.
Mais voila, ce menu reste affiché après la fermeture du fichier.
Et à la prochaine exécution, un autre menu similaire vient s'ajouter
après celui qui n'a pas été supprimé.
J'ai un peu essayé de modifier le code de telle façon, qu'il y'a une
vérification au début, de l'existence de mon menu.
Une fois trouvé, il sera supprimé, ensuite on crée un nouveau.
'----------------------------------
Sub auto_open()
Dim Barre As CommandBar
Dim Ctl As Object
'On Error Resume Next
For Each Ctl In CommandBars(1).Controls
If Ctl.TooltipText = "BarreFeuilles" Then
CommandBars(1).Controls(msoControlComboBox).Delete
Exit For
End If
Next Ctl
'On place le bouton en haut dans la barre menu
Set Barre = CommandBars(1)
Barre.Visible = True
Set Menu = Barre.Controls.Add(msoControlComboBox)
For I = 1 To Sheets.Count
Menu.AddItem Sheets(I).Name
Next
With Menu
.OnAction = "ChoixFeuille"
.Text = "Sélectionner puis choisir"
.Width = 133
.TooltipText = "BarreFeuilles"
End With
End Sub
Sub auto_close()
On Error Resume Next
CommandBars("BarreFeuilles").Delete
End Sub
Sub ChoixFeuille()
Sheets(CommandBars("BarreFeuilles").Controls(1).Text).Select
End Sub
'-------------------
Maintenant mon menu est créé après le point d'exclamation de l'aide.
Mais voila, ce menu reste affiché après la fermeture du fichier.
Et à la prochaine exécution, un autre menu similaire vient s'ajouter après celui qui n'a pas été supprimé.
J'ai un peu essayé de modifier le code de telle façon, qu'il y'a une vérification au début, de l'existence de mon menu.
Une fois trouvé, il sera supprimé, ensuite on crée un nouveau.
'---------------------------------- Sub auto_open() Dim Barre As CommandBar Dim Ctl As Object 'On Error Resume Next For Each Ctl In CommandBars(1).Controls If Ctl.TooltipText = "BarreFeuilles" Then CommandBars(1).Controls(msoControlComboBox).Delete Exit For End If Next Ctl 'On place le bouton en haut dans la barre menu Set Barre = CommandBars(1) Barre.Visible = True Set Menu = Barre.Controls.Add(msoControlComboBox)
For I = 1 To Sheets.Count Menu.AddItem Sheets(I).Name Next With Menu .OnAction = "ChoixFeuille" .Text = "Sélectionner puis choisir" .Width = 133 .TooltipText = "BarreFeuilles" End With End Sub
Sub auto_close() On Error Resume Next CommandBars("BarreFeuilles").Delete End Sub
Sub ChoixFeuille() Sheets(CommandBars("BarreFeuilles").Controls(1).Text).Select End Sub '-------------------
Merci.
MichDenis
Dans un module standard, tu copies la procédure de création de ton contrôle et dans le ThisWorkbook, tu copies ceci : Ton controle va être visible seulement lorsque le classeur qui contient ces macros est le classeur actif.
'-------------------------------------- Private Sub Workbook_Activate() On Error Resume Next Création_Barre_Menu
End Sub '-------------------------------------- Private Sub Workbook_Deactivate()
On Error Resume Next 'Cette commande remet la barre des menus dans son état 'originel tel qu'elle existait à l'installation d'excel. Application.CommandBars(1).Reset
'Si tu as des trucs personnalisés que tu veux conserver, 'tu peux utiliser ceci à la place sans toucher aux autres 'commandes personnalisées que tu as ajoutées Application.CommandBars(1).FindControl(msoControlComboBox).Delete
End Sub '--------------------------------------
Procédure dans le module :
Sub Création_Barre_Menu() Dim Barre As CommandBar Set Barre = Application.CommandBars(1) Barre.Visible = True Set Menu = Barre.Controls.Add(msoControlComboBox) For I = 1 To Sheets.Count Menu.AddItem Sheets(I).Name Next With Menu .OnAction = "ChoixFeuille" .Text = "Sélectionner puis choisir" .Width = 133 End With End Sub
"Apitos" a écrit dans le message de news:
Bonsoir MichDenis et le forum;
Merci de tes conseils.
Maintenant mon menu est créé après le point d'exclamation de l'aide.
Mais voila, ce menu reste affiché après la fermeture du fichier.
Et à la prochaine exécution, un autre menu similaire vient s'ajouter après celui qui n'a pas été supprimé.
J'ai un peu essayé de modifier le code de telle façon, qu'il y'a une vérification au début, de l'existence de mon menu.
Une fois trouvé, il sera supprimé, ensuite on crée un nouveau.
'---------------------------------- Sub auto_open() Dim Barre As CommandBar Dim Ctl As Object 'On Error Resume Next For Each Ctl In CommandBars(1).Controls If Ctl.TooltipText = "BarreFeuilles" Then CommandBars(1).Controls(msoControlComboBox).Delete Exit For End If Next Ctl 'On place le bouton en haut dans la barre menu Set Barre = CommandBars(1) Barre.Visible = True Set Menu = Barre.Controls.Add(msoControlComboBox)
For I = 1 To Sheets.Count Menu.AddItem Sheets(I).Name Next With Menu .OnAction = "ChoixFeuille" .Text = "Sélectionner puis choisir" .Width = 133 .TooltipText = "BarreFeuilles" End With End Sub
Sub auto_close() On Error Resume Next CommandBars("BarreFeuilles").Delete End Sub
Sub ChoixFeuille() Sheets(CommandBars("BarreFeuilles").Controls(1).Text).Select End Sub '-------------------
Merci.
Dans un module standard, tu copies la procédure de
création de ton contrôle et dans le ThisWorkbook, tu copies
ceci : Ton controle va être visible seulement lorsque le
classeur qui contient ces macros est le classeur actif.
'--------------------------------------
Private Sub Workbook_Activate()
On Error Resume Next
Création_Barre_Menu
End Sub
'--------------------------------------
Private Sub Workbook_Deactivate()
On Error Resume Next
'Cette commande remet la barre des menus dans son état
'originel tel qu'elle existait à l'installation d'excel.
Application.CommandBars(1).Reset
'Si tu as des trucs personnalisés que tu veux conserver,
'tu peux utiliser ceci à la place sans toucher aux autres
'commandes personnalisées que tu as ajoutées
Application.CommandBars(1).FindControl(msoControlComboBox).Delete
End Sub
'--------------------------------------
Procédure dans le module :
Sub Création_Barre_Menu()
Dim Barre As CommandBar
Set Barre = Application.CommandBars(1)
Barre.Visible = True
Set Menu = Barre.Controls.Add(msoControlComboBox)
For I = 1 To Sheets.Count
Menu.AddItem Sheets(I).Name
Next
With Menu
.OnAction = "ChoixFeuille"
.Text = "Sélectionner puis choisir"
.Width = 133
End With
End Sub
"Apitos" <apitos@gmail.com> a écrit dans le message de news:
52349ad7-7d7b-45ec-8c44-2dd4966adb84@t1g2000pra.googlegroups.com...
Bonsoir MichDenis et le forum;
Merci de tes conseils.
Maintenant mon menu est créé après le point d'exclamation de l'aide.
Mais voila, ce menu reste affiché après la fermeture du fichier.
Et à la prochaine exécution, un autre menu similaire vient s'ajouter
après celui qui n'a pas été supprimé.
J'ai un peu essayé de modifier le code de telle façon, qu'il y'a une
vérification au début, de l'existence de mon menu.
Une fois trouvé, il sera supprimé, ensuite on crée un nouveau.
'----------------------------------
Sub auto_open()
Dim Barre As CommandBar
Dim Ctl As Object
'On Error Resume Next
For Each Ctl In CommandBars(1).Controls
If Ctl.TooltipText = "BarreFeuilles" Then
CommandBars(1).Controls(msoControlComboBox).Delete
Exit For
End If
Next Ctl
'On place le bouton en haut dans la barre menu
Set Barre = CommandBars(1)
Barre.Visible = True
Set Menu = Barre.Controls.Add(msoControlComboBox)
For I = 1 To Sheets.Count
Menu.AddItem Sheets(I).Name
Next
With Menu
.OnAction = "ChoixFeuille"
.Text = "Sélectionner puis choisir"
.Width = 133
.TooltipText = "BarreFeuilles"
End With
End Sub
Sub auto_close()
On Error Resume Next
CommandBars("BarreFeuilles").Delete
End Sub
Sub ChoixFeuille()
Sheets(CommandBars("BarreFeuilles").Controls(1).Text).Select
End Sub
'-------------------
Dans un module standard, tu copies la procédure de création de ton contrôle et dans le ThisWorkbook, tu copies ceci : Ton controle va être visible seulement lorsque le classeur qui contient ces macros est le classeur actif.
'-------------------------------------- Private Sub Workbook_Activate() On Error Resume Next Création_Barre_Menu
End Sub '-------------------------------------- Private Sub Workbook_Deactivate()
On Error Resume Next 'Cette commande remet la barre des menus dans son état 'originel tel qu'elle existait à l'installation d'excel. Application.CommandBars(1).Reset
'Si tu as des trucs personnalisés que tu veux conserver, 'tu peux utiliser ceci à la place sans toucher aux autres 'commandes personnalisées que tu as ajoutées Application.CommandBars(1).FindControl(msoControlComboBox).Delete
End Sub '--------------------------------------
Procédure dans le module :
Sub Création_Barre_Menu() Dim Barre As CommandBar Set Barre = Application.CommandBars(1) Barre.Visible = True Set Menu = Barre.Controls.Add(msoControlComboBox) For I = 1 To Sheets.Count Menu.AddItem Sheets(I).Name Next With Menu .OnAction = "ChoixFeuille" .Text = "Sélectionner puis choisir" .Width = 133 End With End Sub
"Apitos" a écrit dans le message de news:
Bonsoir MichDenis et le forum;
Merci de tes conseils.
Maintenant mon menu est créé après le point d'exclamation de l'aide.
Mais voila, ce menu reste affiché après la fermeture du fichier.
Et à la prochaine exécution, un autre menu similaire vient s'ajouter après celui qui n'a pas été supprimé.
J'ai un peu essayé de modifier le code de telle façon, qu'il y'a une vérification au début, de l'existence de mon menu.
Une fois trouvé, il sera supprimé, ensuite on crée un nouveau.
'---------------------------------- Sub auto_open() Dim Barre As CommandBar Dim Ctl As Object 'On Error Resume Next For Each Ctl In CommandBars(1).Controls If Ctl.TooltipText = "BarreFeuilles" Then CommandBars(1).Controls(msoControlComboBox).Delete Exit For End If Next Ctl 'On place le bouton en haut dans la barre menu Set Barre = CommandBars(1) Barre.Visible = True Set Menu = Barre.Controls.Add(msoControlComboBox)
For I = 1 To Sheets.Count Menu.AddItem Sheets(I).Name Next With Menu .OnAction = "ChoixFeuille" .Text = "Sélectionner puis choisir" .Width = 133 .TooltipText = "BarreFeuilles" End With End Sub
Sub auto_close() On Error Resume Next CommandBars("BarreFeuilles").Delete End Sub
Sub ChoixFeuille() Sheets(CommandBars("BarreFeuilles").Controls(1).Text).Select End Sub '-------------------
S'il y'a plus d'une ComboBox dans ma barre, comment faire pour supprimer la bonne ?
Merci.
MichDenis
Je n'ai pas testé mais ...
On Error Resume Next For A = 1 To 5 ' 5 pour 5 combobox Application.CommandBars(1).FindControl(msoControlComboBox).Delete Next
Et si tu désires différencier chacun des contrôles "combobox" de ta barre des menus, lorsque tu crées ces contrôles, chacun de ces contrôles a une propriété "TAG" que tu peux définir par une expression particulière
Pour ce faire, tu modifies la procédure de création comme ceci : '--------------------------------------- Sub Création_Barre_Menu() Dim Barre As CommandBar Set Barre = Application.CommandBars(1) Barre.Visible = True Set Menu = Barre.Controls.Add(msoControlComboBox) Menu.Tag = "Denis" '< ------ Ligne ajoutée For I = 1 To Sheets.Count Menu.AddItem Sheets(I).Name Next With Menu .OnAction = "ChoixFeuille" .Text = "Sélectionner puis choisir" .Width = 133 End With End Sub '---------------------------------------
Et pour supprimer ce combox de ta barre d'outils '------------------------- Application.CommandBars(1).FindControl(, , "Denis").Delete '-------------------------
Et si tu avais créer plusieurs combobox avec des "Tag" tu pourrais aussi faire ceci pour personnaliser leur suppression '---------------------------- Dim Arr dim Elt as variant Arr = array("Denis","Combobox2","Apitos") For each elt in arr Application.CommandBars(1).FindControl(, , elt).Delete Next '----------------------------
S'il y'a plus d'une ComboBox dans ma barre, comment faire pour supprimer la bonne ?
Merci.
Je n'ai pas testé mais ...
On Error Resume Next
For A = 1 To 5 ' 5 pour 5 combobox
Application.CommandBars(1).FindControl(msoControlComboBox).Delete
Next
Et si tu désires différencier chacun des contrôles "combobox" de ta barre des menus,
lorsque tu crées ces contrôles, chacun de ces contrôles a une propriété "TAG" que
tu peux définir par une expression particulière
Pour ce faire, tu modifies la procédure de création comme ceci :
'---------------------------------------
Sub Création_Barre_Menu()
Dim Barre As CommandBar
Set Barre = Application.CommandBars(1)
Barre.Visible = True
Set Menu = Barre.Controls.Add(msoControlComboBox)
Menu.Tag = "Denis" '< ------ Ligne ajoutée
For I = 1 To Sheets.Count
Menu.AddItem Sheets(I).Name
Next
With Menu
.OnAction = "ChoixFeuille"
.Text = "Sélectionner puis choisir"
.Width = 133
End With
End Sub
'---------------------------------------
Et pour supprimer ce combox de ta barre d'outils
'-------------------------
Application.CommandBars(1).FindControl(, , "Denis").Delete
'-------------------------
Et si tu avais créer plusieurs combobox avec des "Tag" tu pourrais
aussi faire ceci pour personnaliser leur suppression
'----------------------------
Dim Arr
dim Elt as variant
Arr = array("Denis","Combobox2","Apitos")
For each elt in arr
Application.CommandBars(1).FindControl(, , elt).Delete
Next
'----------------------------
"Apitos" <apitos@gmail.com> a écrit dans le message de news:
f9bd7f73-d407-448e-9487-8c65cd14cd5a@n20g2000hsh.googlegroups.com...
Bonjour MichDenis,
On Error Resume Next For A = 1 To 5 ' 5 pour 5 combobox Application.CommandBars(1).FindControl(msoControlComboBox).Delete Next
Et si tu désires différencier chacun des contrôles "combobox" de ta barre des menus, lorsque tu crées ces contrôles, chacun de ces contrôles a une propriété "TAG" que tu peux définir par une expression particulière
Pour ce faire, tu modifies la procédure de création comme ceci : '--------------------------------------- Sub Création_Barre_Menu() Dim Barre As CommandBar Set Barre = Application.CommandBars(1) Barre.Visible = True Set Menu = Barre.Controls.Add(msoControlComboBox) Menu.Tag = "Denis" '< ------ Ligne ajoutée For I = 1 To Sheets.Count Menu.AddItem Sheets(I).Name Next With Menu .OnAction = "ChoixFeuille" .Text = "Sélectionner puis choisir" .Width = 133 End With End Sub '---------------------------------------
Et pour supprimer ce combox de ta barre d'outils '------------------------- Application.CommandBars(1).FindControl(, , "Denis").Delete '-------------------------
Et si tu avais créer plusieurs combobox avec des "Tag" tu pourrais aussi faire ceci pour personnaliser leur suppression '---------------------------- Dim Arr dim Elt as variant Arr = array("Denis","Combobox2","Apitos") For each elt in arr Application.CommandBars(1).FindControl(, , elt).Delete Next '----------------------------