Positionnement des commandbars

Résolu
Bonjour,

Je n’arrive pas à trouver une solution pour deux actions :

a) Positionner mes commandbars en ligne et non l’une sous l’autre
b) Avoir un fond de couleur différent pour chaque commandbars

Voici mon fichier : https://www.cjoint.com/c/FDyq2i24yXt

Merci de votre aide

Cordialement

6 réponses

  1. Bonjour,

    a) Positionner mes commandbars en ligne et non l’une sous l’autre :
    Ajoutes RowIndex et Left dans ton code comme ceci :
    With Cbar
        .Visible = True
        .Protection = msoBarNoMove + msoBarNoCustomize
        .RowIndex = 4
        .Left = 1
    End With
    With Cbar1
        .Visible = True
        .Protection = msoBarNoMove + msoBarNoCustomize
        .RowIndex = 4
        .Left = Cbar.Width
    End With
    1. PS : Pourquoi .RowIndex = 4 ?
      1) cette valeur (4) doit être supérieure à celle des barres existantes pour que la ligne sur laquelle seront positionnées tes deux barres soit en dessous des barres existantes. Il faudra peut-être mettre une valeur plus élevée.
      2) la valeur des deux barres doit être la même pour qu'elles soient sur la même ligne.
    2. @Patrice33740Bonjour,

      Merci pour cette réponse , ta solution fonctionne nickel.

      Maintenant je galère pour trouver une solution au problème que j'ai créé en utilisant une dérivée de la solution du post 7 " avec une erreur que j'ai involontairement créée dans le ode" que j'explique au post 10.

      Cordialement
  2. Bonjour,

    Pour positionner les barres utilises les propriétés RowIndex et Left.
    Par contre je ne pense pas que tu puisses modifier le couleur de la barre.
    1. Bonjour,

      Merci pour cette réponse, mais comment utiliser ces propriétés dans mon code ?

      cordialement
  3. Contributeur
    Voir ceci:

    https://fring.developpez.com/vba/excel/barremenu/#L2.3

    A adapter mettre dans un module:

    Option Explicit
    Sub test_zone_txt()
    Dim Cbar As CommandBar
    
    Set Cbar = CommandBars.Add(Name:="MaBarre", Position:=msoBarTop, Temporary:=True)
    With Cbar
        .Visible = True
    End With
    With CommandBars("MaBarre").Controls.Add(Type:=msoControlEdit)
        .Style = msoComboLabel
        .Caption = "Devis :"
        .TooltipText = "info-bulle zone txt 1"
        .Tag = "txt1"
        .OnAction = "MaMacro1"
    End With
    
    With CommandBars("MaBarre").Controls.Add(Type:=msoControlEdit)
        .Style = msoComboLabel
        .Caption = "Facture :"
        .TooltipText = "info-bulle zone txt 2"
        .Tag = "txt2"
        .OnAction = "MaMacro2"
        .BeginGroup = True
    End With
    
    End Sub
    Sub Sup_Cbar()
    Dim Cbar As CommandBar
    For Each Cbar In CommandBars
        If Cbar.BuiltIn = False Then Cbar.Delete
    Next
    End Sub
    


    Mettre dans ThisWorkbook:

    Option Explicit
    Private Sub Workbook_Open()
    test_zone_txt
    End Sub
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Sup_Cbar
    End Sub
    

    1. Bonjour CS_Le Pivert, Bonjour le forum

      Merci pour ton code qui correspond à mon attente.

      J’ai modifié le nom de la CommandBars en 1 mais dans le with j’a oublier de le remettre entre guillemets.

      Ça cré bien le menus mais plus possible de les supprimer.

      Y a-t-il une solution ?

      Merci d’avance

      Voici le code mis en place :


      Option Explicit
      Sub test_zone_txt()
      Dim Cbar As CommandBar

      Set Cbar = CommandBars.Add(Name:="1", Position:=msoBarTop, Temporary:=True)
      With Cbar
      .Visible = True
      End With
      With CommandBars(1).Controls.Add(Type:=msoControlEdit)
      .Style = msoComboLabel
      .Caption = "Devis :"
      .TooltipText = "info-bulle zone txt 1"
      .Tag = "txt1"
      .OnAction = "MaMacro1"
      End With

      With CommandBars(1).Controls.Add(Type:=msoControlEdit)
      .Style = msoComboLabel
      .Caption = "Facture :"
      .TooltipText = "info-bulle zone txt 2"
      .Tag = "txt2"
      .OnAction = "MaMacro2"
      .BeginGroup = True
      End With

      End Sub
      Sub Sup_Cbar()
      Dim Cbar As CommandBar
      For Each Cbar In CommandBars
      If Cbar.BuiltIn = False Then Cbar.Delete
      Next
      End Sub


      Cordialement
  4. Bonjour à tous,

    J’ai trouvé la solution à mon problème du post 10 avec une action manuelle :

    il faut faire Affichage/barre d'outils/Personnaliser puis aller sur l'onglet Barre
    d’outils, sélectionner "Barre de menus feuille de calcul" puis "réinitialiser".

    Cordialement
    1. C'est effectivement le plus simple !