Liste déroulante dans barre d'outils (suite)

Bonjour à tous,

J'essaye d'adapter une macro fournie par Mytä.

Sub modifieListe()
Dim dudu As CommandBarComboBox ''j'ai nommé la liste "dudu" la barre est nommée "DVD"
Dim choix As CommandBarComboBox
Dim I As Integer
   '' barreX = InputBox("entrer le nom de la barre à modifier")

Set dudu = CommandBars("DVD").Controls _
    .Add(Type:=msoControlComboBox)
With dudu
    .OnAction = "Choix"
       .Width = 200
         .Tag = "Liste"
End With

Je voudrais que sur la ligne Set dudu ____ "DVD" soit remplacé par la réponse à

InputBox (barreX) ; je ne sais pas formuler le code correctement.

Pouvez-vous m'aider.

Salutations ......Claude

Salut Claude et le forum

Je ne vois pas vraiment ou tu veux en venir, tu ne peux changer le nom de

DVD comme cela sans modifier la macro de création de la barre.

A te relire avec plus d'informations

Mytå

Salut le forum

Une petite macro pour lister les barres d'outils disponibles sous votre version d'Excel

Sub ListBarres()
For I = 1 To Application.CommandBars.Count
Range("c" & I) = I
Range("d" & I) = Application.CommandBars.Item(I).Name
Range("f" & I) = Application.CommandBars.Item(I).Visible
Next I
End Sub

Mytå

Bonjour Mytä,

Cette liste développe 90 lignes sur 3 colonnes ! ; C'est pas ce que je souhaitait.

à-tu reçu le fichier "barre" en MP ; et est-ce assez clair ?

à te lire.

Claude.

Salut le forum

Claude voila une version à tester.

https://www.excel-pratique.com/~files/doc/ListeDeroulante_v1.0.zip

  • -Mise à jour de la liste sur changement dans A1:A13
      Détection si la barre existe déjà
    • Dans le code Temporary:=True pour supprimer la barre à la fermeture d'Excel
    • Bouton de Création et Suppression de la Barre

Mytå

Salut le forum

Claude, on pourrait choisir le nom de la barre avec ce code

Sub ListerBarres()
Dim I As Byte
Dim Texte As String
Dim Valeur As String

Texte = "Entrer le chiffre de la barre à modifier" & vbCrLf & vbCrLf

For I = 1 To Application.CommandBars.Count
    If Application.CommandBars.Item(I).Visible = True Then
        Texte = Texte & Format(I, "0#") & " - " & Application.CommandBars.Item(I).Name & vbCrLf
    End If
Next I

Valeur = InputBox(Texte)

If Not IsNumeric(Valeur) Then Exit Sub
MsgBox "Nom de la barre = " & Application.CommandBars.Item(Val(Valeur)).Name

End Sub

Je ne parcours que les barres visibles et pas fait de gestion des erreurs.

Tu me dis si tu désires que je l'incorpore au fichier ci-haut.

A te relire

Mytå

Bonjour à tous,

Mytä, Nous nous sommes compris ! et l'on touche au but. Cependant ;

Il ne faut pas trop compliquer !

Ci-joint le fichier dépouillé "Barre2" à corrigé en VBA "au top".

https://www.excel-pratique.com/~files/doc/barre2.xls

à suivre !!! et BONNES Fêtes à tous.

Claude.

re,

Dans le menu Excel il y a bien : OUTILS/Personnaliser/Commandes/Affichage.

là on peut faire glisser une liste déroulante perso. Mais après !

Quelqu'un saurait-il comment remplir cette liste ????

C'est pourquoi , on cherche avec Mytä

Claude.

Salut le forum

Claude je crois que tu vas être satisfait du résultat.

Le ficier est Téléchargeable ici !

Mytå

Et le code

Option Explicit

Sub CréerListe()
Dim Lbl As CommandBarComboBox
Dim Plage As Range
Dim MaBarre As CommandBar
Dim MaListe As CommandBarComboBox
Dim I As Byte

Set Lbl = CommandBars.FindControl(Type:=msoControlDropdown, Tag:="Liste")

Set Plage = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)

Set MaBarre = Application.CommandBars("Standard")

With MaBarre
  If Lbl Is Nothing Then
      Set MaListe = .Controls.Add(Type:=msoControlDropdown, temporary:=False)
  Else
      Set MaListe = Application.CommandBars("Standard").Controls("DVD")
  End If
    With MaListe
        .OnAction = "MonChoix"
        .Caption = "DVD"
        .Width = 200
        .DropDownLines = Plage.Count
        .Tag = "Liste"
        .Clear
        .Visible = True
        For I = 1 To Plage.Count
        .AddItem Plage(I)
        Next I
        .ListIndex = 1
    End With
End With

Set Lbl = Nothing
Set MaListe = Nothing
Set MaBarre = Nothing

End Sub

Private Sub MonChoix()
Dim MaListe As CommandBarComboBox

Set MaListe = CommandBars("Standard").FindControl(, , "Liste")

  If MaListe.ListIndex <> 1 Then
    MsgBox MaListe.Text
    MaListe.ListIndex = 1
  End If

Set MaListe = Nothing

End Sub

Mytå [GMT-5]

Bonjour à tous,

Mytä, tu a fait du bon boulot ,

j'ai lancé la manip 2 ou 3 fois sur "Barre_V1.0" c'est exactement ce que je voulais .

çà fonctionne très bien , Seulement :

J'ai ouvert mon fichier "DVD" (j'éspere que tu l'a reçu en MP) et là il y a un Hic !

Si je lance "CréerListe" ; çà me lance une macro de DVD "CreerZoneTexte" en même temps.

Il doit y avoir conflit entre les codes DVD & Barre !

çà plante ! j'ai donc tout fermé , re-téléchargé et ouvert ton fichier (seul). çà plante ici

 Else
  Set MaListe = Application.CommandBars("Standard").Controls("DVD")

Il faut peut-être laisser-tomber le contrôle DVD ? surement même , car on doit pouvoir

déplacer la liste dans n'importe quelle barre.

A mon avis , çà doit venir de mes déclarations dans "DVD"

Je ne suis pas inquiet , je sais que Mytä va trouvé le Hic !

Encore merci , on y est presque.

Amicalement. .....Claude.

Salut le Forum

Voilà le problème, garder des barres à la fermeture d'Excel.

Un macro complémentaire (XLA) serait peut-être la solution....

La je décroche pour se soir, personne pour nous aider... ?

De plus, je n'arrive pas à reproduire ton erreur...

Mytå, qui n'avais plus de HDD encore une fois Grrrrrrrrrrrrrrr !

(Une chance qu'il était encore sous garantie)

Bonjour Mytä ,

J'espère que ce n'est pas "la liste" qui est à l'origine de tes ennuis sur ton HDD !

On a peut-être voulu trop fignoler.

Ne pouvant plus faire marcher ta dernière version , j' en reste à la précédente "Barre2"

qui elle ,fonctionne pour le moment.

C'est quand même bizarre !!! je ne comprend pas !!!

Bon ,on laisse tomber , surtout que l'opération n'est que très ponctuelle.

Sinon tu ne parle pas de mon fichier "DVD"

à quoi çà sert que dudu se décarcasse ?

Bonnes fêtes de fin d'année.

Claude.

Re à tous

Claude, essaye de remettre ton Excel 97 à neuf, ferme Excel 97 avant.

Recherche sur ton HDD le fichier *.xlb (Il devrait être du style NomUtilisateur8.Xlb et se trouver dans C:\Windows)

Supprime le (ou renomme le) et relance Excel 97, cela vas supprimer tous les barres qui pourraient être restées

cachées avec les essais.

Relance ensuite mon programme.

A te relire

Mytå

re,

Heureusement j'avais copié ce fichier XLB récemment .

Je l'ai lancer ; et ton programme remarche normalement .

j'ai essayé de refaire la conner... pour voir !

voila la conner... j'ai fait glisser la liste dans ma barre "DVD" et essayé de la modifier

et là çà plante .

Si cette info peut d'orienter? sinon il faut retirer du programme tout ce qui parle de DVD

et toi est-ce que tu a reçu le fichier "DVD" ? et qu'en pense-tu ?

Mytå s'écrit comme çà ou avec tréma ?

à te relire

Claude.

PS: c'est pas la 1ère fois que j'ai des problèmes avec le fichier XLB

Bonjour Mitâ

J'ai installé ce menu déroulant configuré pour mes besoin, mais comme le pc sur lequel je bosse est le pc d'une équipe "tournante" serai t'il possible, via une macro, de supprimer ce menu déroulant. (sans passer par les options de barre d'outils..)

bonne année à tous

Bonjour,

Essaye ceci :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Macro par Dan
On Error Resume Next
Application.CommandBars("nom de la barre d'outils").Delete
End Sub

Code à placer en VBA dans THISWORKBOOK puis enregistrer ton fichier avant de le fermer.

Amicalement

Dan

merci beaucoup, je vais essayer demain matin

vous etes sympas

bonne année 2008

Salut le forum

Pour faire disparaitre la liste déroulante à la fermerure d'Excel, modifie la ligne suivante:

Set MaListe = .Controls.Add(Type:=msoControlDropdown, temporary:=False)

Par ceci

Set MaListe = .Controls.Add(Type:=msoControlDropdown, temporary:=True)

Meilleurs Voeux pour la Nouvelle Année

Mytå

Rechercher des sujets similaires à "liste deroulante barre outils suite"