IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

menu personalisé : récupérer la l'index d'une liste


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 9
    Par défaut menu personalisé : récupérer la l'index d'une liste
    Bonjour,
    j'ai crée un menu personnalisé dans la barre principale excel avec des sous menu et une liste déroulante (msoControlDropdown) pour choisir une option. Je souhaite récupérer l'index du choix dans cette liste.
    Voici le code de ma barre menu (placé dns thisWorkbook):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Private Sub Workbook_Open()
    Dim Nouveau As CommandBarControl
    Dim Nouveau10 As CommandBarControl
    Dim Nouveau11 As CommandBarControl, Nouveau12 As CommandBarControl
    Dim Nouveau20 As CommandBarControl
    Dim Nouveau21 As CommandBarControl, Nouveau22 As CommandBarControl, Nouveau23 As CommandBarControl
     
    On Error Resume Next
    Set Nouveau = Application.CommandBars(1).Controls.Add(msoControlPopup, , , , True)
    With Nouveau
    .Caption = "ma barre"
    .FaceId = 317
    .BeginGroup = True 'rajoute une barre de séparation devant le menu
    End With
     
    Set Nouveau10 = Nouveau.Controls.Add(msoControlPopup, , , , True)
    With Nouveau10
    .Caption = "Sauvegarde"
    .Style = msoButtonIconAndCaption
    .FaceId = 1790
    End With
     
    Set Nouveau11 = Nouveau10.Controls.Add(msoControlButton, , , , True)
    With Nouveau11
    .Caption = "Sauvegarder"
    .FaceId = 2648
    .Style = msoButtonIconAndCaption
    .OnAction = "sauvegarder"
    End With
     
    Set Nouveau12 = Nouveau10.Controls.Add(msoControlButton, , , , True)
    With Nouveau12
    .Caption = "Sauvegarder et fermer"
    .FaceId = 481
    .Style = msoButtonIconAndCaption
    .OnAction = "sauvegarderfermer"
    End With
     
    Set Nouveau20 = Nouveau.Controls.Add(msoControlPopup, , , , True)
    With Nouveau20
    .Caption = "EMail"
    .FaceId = 1675
    .Style = msoButtonIconAndCaption
    End With
     
    Set Nouveau21 = Nouveau20.Controls.Add(msoControlButton, , , , True)
    With Nouveau21
    .Caption = "EMail demande"
    .FaceId = 266
    .Style = msoButtonIconAndCaption
    .OnAction = "EnvoiEmail"
    End With
     
    Set Nouveau22 = Nouveau20.Controls.Add(msoControlButton, , , , True)
    With Nouveau22
    .Caption = "EMail suppression"
    .FaceId = 52
    .Style = msoButtonIconAndCaption
    .OnAction = "EnvoiEmail"
    End With
     
    Set Nouveau23 = Nouveau20.Controls.Add(msoControlDropdown, , , , True)
    With Nouveau23
    .Caption = "Messagerie"
    .FaceId = 54
    .Style = msoComboLabel
    .TooltipText = "Choisissez votre logiciel de messagerie"
    .OnAction = "messagerie"
    .AddItem ("Outlook Express")
    .AddItem ("Mozilla Thunderbird")
    .AddItem ("Office Outlook")
    End With
     
    End Sub
    Et voici le code pour la macro messagerie (placée dans le module 1) pour récupérer le numéro de la ligne sélectionnée dans la liste.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub messagerie()
    Dim client As Long
    client = CommandBars(1).Controls(1).ListIndex 'est-ce le bon code?
    Select Case client
    Case 2
    MsgBox ("Firefox")
    End Select
    End Sub
    Nom problème est que je n'arrive pas à récupérer l'indexe. J'ai toujours un message d'erreur. " erreur d'exécution '438' : propriété ou méthode non gérée par cet objet". J'ai essayé plusieurs chose pour ma ligne de code mais rien ne fonctionne.
    J'ai du louper quelque chose, mais quoi?
    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    voilà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub messagerie()
    Dim client As Long
    client = CommandBars(1).Controls("ma barre").Controls("EMail").Controls("Messagerie").ListIndex
    Select Case client
    Case 2
    MsgBox ("Firefox")
    End Select
    End Sub
    Dis ce que ca donne
    Mél

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 9
    Par défaut
    Merci. Cela fonctionne parfaitement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le Nième élément d'une liste chaînée
    Par decoy Octopus dans le forum Pascal
    Réponses: 3
    Dernier message: 03/11/2006, 18h03
  2. Réponses: 4
    Dernier message: 01/10/2006, 15h37
  3. Récupérer la valeur choisie ds une liste
    Par taroudant dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 08/08/2006, 10h53
  4. Réponses: 1
    Dernier message: 28/07/2006, 09h17
  5. [VB5]Connaitre l'index d'une liste via son contenu
    Par guda dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 15/10/2005, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo