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 :

PopUpMenu Avec FaceId


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Par défaut PopUpMenu Avec FaceId
    Bonjour,

    Pouvez-vous me dire dans ce fichier comment faire pour intégrer les FaceId dans le Code.

    Je sais que ça se stiue dans le module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Type Erg1
        Iindex          As Long
        Itxt            As String
        Icheck          As Boolean
        ISiCheck        As Long
        ISiUnCheck      As Long
        IEnabled        As Boolean
        Ikey            As Variant
        Iflag           As Long
    End Type
    Et dans le module de classe :
    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
    Public Sub AddLigne(Index As Long, Txt As String, Optional Check As Boolean, Optional Enabled As Boolean = True, Optional Key As Variant = 0&, Optional ByVal SiCheck As Long = 0&, Optional ByVal BmpCheck As Long = 0&)
    '   ajoute une ligne au tableau MemoMenuF
    Dim i As Long
        On Error Resume Next
     
        i = UBound(MemoMenuF) + 1
        If Err <> 0 Then ReDim MemoMenuF(0): i = 1
        ReDim Preserve MemoMenuF(i)
     
    '   Mémorise la ligne
        With MemoMenuF(i)
            .Iindex = Index
            .Itxt = Txt
            .Icheck = Check
            .ISiCheck = SiCheck
            .IEnabled = Enabled
            .Ikey = Key
            .Iflag = DetermineFlag(MemoMenuF(i))
        End With
    End Sub
    Merci pour votre aide.
    Bien Cdt.

    PopUpMenu v2.xls

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, voir ici ou mieux

    P.-S. : je n'ouvre plus les PJ.
    Images attachées Images attachées  

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    quand je pense q'une 10 ne de ligne suffisent a créer son menu la pauvre elle est allé me chercher l'exemple avec les apis et en plus c'est le plus viel exemple que je connaisse

    non c'est pas sérieux

    tout se fait dans cette ligne
    boutons = Array("Sauver:3:0:macro1", "Sauve sous...:22:1:macro2", "Ouvrir:23:1:macro3", "Importer:128:1:macro4", _
    "Exporter:129:1:macro5", "Quitter:5955:1:macro6")


    voila chaque couleurs représente un bouton
    tu a le nom du bouton suivi de son face id suivi de sont état au départ suivi du nom de la macro qui est sensé appeler
    chaque partie étant séparé par un ":"

    allez prends un userform vierge
    colle lui un label et c'est tout
    maintenant tu va coller cela dans le module du userform

    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
    Option Explicit
    Private Sub Label1_Click()
        Dim boutons, i As Long, Barre As CommandBar
        boutons = Array("Sauver:3:0:macro1", "Sauve sous...:22:1:macro2", "Ouvrir:23:1:macro3", "Importer:128:1:macro4", _
                        "Exporter:129:1:macro5", "Quitter:5955:1:macro6")
        On Error GoTo suite
        CommandBars("MenuUSF").Delete
    suite:
        Set Barre = CommandBars.Add("MenuUSF", msoBarPopup, False, True)
        For i = 0 To UBound(boutons)
            With Barre.Controls.Add(msoControlButton, 1, , , True)
                .Caption = Split(boutons(i), ":")(0)
                .FaceId = Split(boutons(i), ":")(1)
                .Enabled = Val(Split(boutons(i), ":")(2))
                .OnAction = Split(boutons(i), ":")(3)
            End With
        Next
        Barre.ShowPopup
    End Sub
     
    'Supprime la barre d'outils lors de la fermeture du UserForm
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        On Error Resume Next
        CommandBars("MenuUSF").Delete
    End Sub
    allez pour changer une démo
    Nom : demo2.gif
Affichages : 1725
Taille : 72,2 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre confirmé
    Homme Profil pro
    Comptabilité
    Inscrit en
    Novembre 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptabilité

    Informations forums :
    Inscription : Novembre 2014
    Messages : 63
    Par défaut
    Bonjour,

    C'est super !

    Comment peut-on faire pour dire on doit s'afficher le MenuPopup ?

    Exemple image : Ici en dessous du label
    Nom : PopUpMenu.jpg
Affichages : 1576
Taille : 19,4 Ko

    Merci Bien Cdt

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,
    l'evenement Mouse Move devrait correspondre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TonLabel_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
     
    End Sub
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Comment peut-on faire pour dire on doit s'afficher le MenuPopup ?
    a vrai dire je comprends pas bien ta question
    si tu parle a quel moment tu veut l'afficher tu a les évènement moi je me sert du click tu peut te servir du move aussi
    si cela n'est pas ta question précise ta demande
    pour le fun hier car ca fait longtemps que je ne m'était pas amuser avec ca je suis allé un peu plus loin
    j'ai modifier afin qu'avec boutons on puisse gérer aussi les subsmenus
    exemple
    encore une fois tout se gère dans BOUTONS

    boutons = Array("Sauver:3:1:macro1", "Sauve sous...:22:1:macro2", "Ouvrir:23:1:macro3", "Importer:128:1:macro4", _
    Array("plein ecran:457:1:macro7", "normal:458:1:macro8", "affichage"), _
    "Exporter:129:1:macro5", "Quitter:5955:1:macro6")

    donc ici encore une fois chaque couleur représente un bouton
    Mais!!!!!
    je te l'ai mis en gras !!! :parmi les boutons il y a un array avec des bouton dedans
    en fait il représente un submenu
    le nom(caption) du sub menu est toujours le derniers en l'occurrence ici affichage
    dans la fonction:!!
    si c'est pas un array on fait comme d'habitude on ajoute le bouton avec les données du split
    si c'est un array par contre on ajoute un msocontrolpopup
    et on boucle sur cet array jusqu'à l'avant dernier et on ajoute les boutons non a la barre mais a ce contropopup
    de la même manière qu'avec les boutons pour la barre
    et voila le tour est joué
    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
    Option Explicit
    Private Sub Label1_Click()
        Dim boutons, i As Long, Barre As CommandBar, pop, e
        boutons = Array("Sauver:3:1:macro1", "Sauve sous...:22:1:macro2", "Ouvrir:23:1:macro3", "Importer:128:1:macro4", _
                        Array("plein ecran:457:1:macro7", "normal:458:1:macro8", "affichage"), _
                        "Exporter:129:1:macro5", "Quitter:5955:1:macro6")
        On Error GoTo suite
        CommandBars("MenuUSF").Delete
    suite:
        Set Barre = CommandBars.Add("MenuUSF", msoBarPopup, False, True)
        For i = 0 To UBound(boutons)
            If IsArray(boutons(i)) Then
                Debug.Print TypeName(boutons(i))
                Set pop = Barre.Controls.Add(msoControlPopup, 1, , , True)
                pop.Caption = boutons(i)(UBound(boutons(i)))
                For e = 0 To UBound(boutons(i)) - 1
                    With pop.Controls.Add(msoControlButton, 1, , , True)
                        .Caption = Split(boutons(i)(e), ":")(0)
                        .FaceId = Split(boutons(i)(e), ":")(1)
                        .Enabled = Val(Split(boutons(i)(e), ":")(2))
                        .OnAction = Split(boutons(i)(e), ":")(3)
                    End With
                Next
            Else
                With Barre.Controls.Add(msoControlButton, 1, , , True)
                    .Caption = Split(boutons(i), ":")(0)
                    .FaceId = Split(boutons(i), ":")(1)
                    .Enabled = Val(Split(boutons(i), ":")(2))
                    .OnAction = Split(boutons(i), ":")(3)
                End With
     
            End If
        Next
        Barre.ShowPopup
    End Sub
     
    'Supprime la barre d'outils lors de la fermeture du UserForm
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        On Error Resume Next
        CommandBars("MenuUSF").Delete
    End Sub
    démonstartion :
    Nom : demo2.gif
Affichages : 1717
Taille : 124,3 Ko
    voila un beau menu contextuel n'est ce pas ?
    l'avantage de travailler sans les apis c'est que ces deux exemples seront compatibles toute versions d'Excel
    c'est du plus basique en terme de commandbars

    voila voila
    on est quand même loin de l'usine a gaz avec les apis non???
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. ajout d'un popupmenu avec right clik
    Par nanouchg dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 15/03/2011, 11h18
  2. Problème PopupMenu avec Toolbar IE
    Par Overmat dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 21/09/2009, 13h46
  3. [VBA/VB6] PopUpMenu avec les API
    Par LeForestier dans le forum Contribuez
    Réponses: 3
    Dernier message: 11/05/2009, 16h08
  4. Souci sur la création de commandbar avec faceid
    Par jolzeviking dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/09/2008, 19h04
  5. Problème avec un PopupMenu
    Par Captain_JS dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/09/2004, 20h09

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