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 :

Ligne de séparation dans un menu


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut Ligne de séparation dans un menu
    Bonjour,

    J'ai une petite question que je n'arrive pas à trouver de solution.

    J'ai une macro qui me créer un menu dans ma barre de menu.
    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
    'Procédure appelante ajout d'un menu avec n items
    '----------------------------------------------------------------
    Sub AjoutMenuBarre()
    Application.DisplayAlerts = False
    ' SUPPRESSION DU MENU SI IL EST DEJA
    Application.Run "ClasseurMacroPerso.xls!SupressionMenuBarre"
    ' DONNEE ="NOM DU MENU", (N° ICON),(TEXTE DES MENUS),(ACTION)
    AjMenuX "&Barre", _
    Array(222, 2950, 222, 2950, 222, 2950, 1, 1, 222), _
    Array("0&1-Ouvre Calcul", "0&2-", "0&3-", "0&4-", "0&5-", "0&6-", "0&7-", "0&8-", "9&9-Ouvre Classeur de macro perso"), _
    Array("ClasseurMacroPerso.xls!process01", "ClasseurMacroPerso.xls!process02", "ClasseurMacroPerso.xls!process03", "ClasseurMacroPerso.xls!process04", "ClasseurMacroPerso.xls!process05", "ClasseurMacroPerso.xls!process06", "ClasseurMacroPerso.xls!process07", "ClasseurMacroPerso.xls!process08", "ClasseurMacroPerso.xls!process99")
    Application.DisplayAlerts = True
    End Sub
    '================
    'Procédures appelées
    '================
    ' Procédure d'ajout d'un menu
    '-------------------------------------
    Sub AjMenuX(NomMenu, TbID, TbItem, TbLien)
    Dim I, J
    Set myMenuBar = CommandBars.ActiveMenuBar
    Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=False)
    newMenu.Caption = NomMenu
    I = 0
    J = 0
    For Each Value In TbID
    Set ctrl1 = newMenu.Controls.Add(Type:=msoControlButton, ID:=TbID(I))
    ctrl1.Caption = TbItem(J)
    ctrl1.TooltipText = TbItem(I)
    ctrl1.Style = msoButtonIconAndCaption
    ctrl1.OnAction = TbLien(I)
    I = I + 1
    J = J + 1
    Next Value
    End Sub
    'Procédure appelante suppression d'un menu
     '--------------------------------------------------------
    Sub SupressionMenuBarre()
    Application.DisplayAlerts = False
     SuprMenuX ("Barre")
     Application.DisplayAlerts = True
    End Sub
    'Procédure de supperssion d'un menu
    '-----------------------------------------------
    Sub SuprMenuX(NomDuMenu As String)
    On Error Resume Next
    Set myMenuBar = CommandBars.ActiveMenuBar
    myMenuBar.Controls(NomDuMenu).Delete
    End Sub
    Ceci marche à merveille.

    Je voudrais simplement ajouter une ligne de séparation avant la dernière ligne, et je ne trouve rien à ce sujet :-(

    Si quelqu'un a déjà fais cette manoeuvre, je suis preneur.

    srame

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Je suppose que tu veux dire "placer une ligne de séparation entre 2 boutons" ?

    Si c'est ça, c'est la propriété "BeginGroup" que tu ajoutes à ton dernier bouton

    http://fring.developpez.com/vba/excel/barremenu
    .

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    C'est parfaitement ça.

    Faut juste que je trouve un moyen de l'ajouter avant le dernier bouton, mais celui-ci n'est pas forcément au même nombre de menu.

    Pour le moment, je vais le faire manuellement. Quand j'aurais trouver comment calculer le nombre de bouton, je metterai ma solutions.

    Merci

    Srame

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Bon, ben voilà une solution temporaire sur le nom de ma ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    For Each Value In TbID
        Set ctrl1 = newMenu.Controls.Add(Type:=msoControlButton, ID:=TbID(I))
        ctrl1.Caption = TbItem(J)
        ctrl1.TooltipText = TbItem(I)
        ctrl1.Style = msoButtonIconAndCaption
        ctrl1.OnAction = TbLien(I)
     
        If TbItem(I) = "9&9-Ouvre Classeur de macro perso" Then
           ctrl1.BeginGroup = True
       End If
        
        I = I + 1
        J = J + 1
    Next Value

  5. #5
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Ceci ne fonctionnerait pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For Each Value In TbID
        Set ctrl1 = newMenu.Controls.Add(Type:=msoControlButton, ID:=TbID(I))
        ctrl1.Caption = TbItem(J)
        ctrl1.TooltipText = TbItem(I)
        ctrl1.Style = msoButtonIconAndCaption
        ctrl1.OnAction = TbLien(I)
     
        I = I + 1
        J = J + 1
    Next Value
        ctrl1.BeginGroup = True
    En principe en ajoutant la propriété après la boucle, ctrl1 correspondra toujours au dernier bouton ajouté

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

Discussions similaires

  1. proc report : insérer une ligne de séparation dans le header
    Par Cyrielle25 dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 15/06/2011, 13h09
  2. barre de séparation dans un menu
    Par gryffondor8392 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 01/03/2011, 23h48
  3. Réponses: 8
    Dernier message: 26/05/2007, 17h43
  4. Ligne de séparation dans un menu
    Par zako dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 12/05/2006, 10h55
  5. Réponses: 4
    Dernier message: 02/09/2004, 14h50

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