Afficher un ruban personnaliser seulement si je clic sur un

Bonjour,

J'utilise excel 2007 et j'ai ma programmation custom uieditor pour personnaliser le ruban avec mes onglets!

Je voudrais savoir si il est possible d'affecter ce ruban personnaliser seulement si je clic sur un bouton prédéfini?et bien sur un autre bouton qui remet le ruban classique!!

En résumer si je clic sur admin j'ai mon ruban personnaliser1 (tous les onglets excel) si je clic sur inviter j'ai mon ruban personnaliser 2(1seul onglet que je créer)

Est-ce possible?je cherche depuis 2jours please un petit coup de pouce

merci d'avance à tous!!

hello

l'enregistreur de macro fonctionne pour les actions "affichage barres d'outils" sur Excel 2003.

essaye

merci tu est la première personne qui me répond!

j'utilise excel 2007 ce que tu m'a proposer ne marche pas!!je vais vous montrer ce que concrètement je veux réaliser:

Mon classeur excel démarre en plein écran,si je presse la touche echap,j'arrive à l'écran avec un seul onglet personnaliser "enter password"! si je fais ctrl+A je reviens en pleine écran,si je clic sur enter password j'ai mon userform qui s'ouvre (confère photo1)!maintenant je voudrais que si le nom d'utilisateur et le mot de passe sont correct quand je valide,mes onglets d'excel classique reviennent!

Est-ce possible?mon programme custome uieditor est-il adaptée?il y a-t-il une commande que je dois mettre sur Vba pour faire ceux-ci?j'ai lue pas mal de chose mais sans réponse!

Je suis vraiment novice en la matière !! Merci d'avance à tous!!!

code custome :

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon startFromScratch="false">

<tabs>
<tab idMso="TabHome" visible="false"/>
<tab idMso="TabInsert" visible="false"/>
<tab idMso="TabPageLayoutExcel" visible="false"/>
<tab idMso="TabFormulas" visible="false"/>
<tab idMso="TabData" visible="false"/>
<tab idMso="TabView" visible="false"/>
<tab idMso="TabDeveloper" visible="false"/>
<tab idMso="TabReview" visible="false"/>
<tab idMso="TabAddIns" visible="false"/>
<tab id = "Modification" label="Modification" insertAfterMso="TabHome">

<group id="Message" label="Message">

<button id="Enterpassword" label="Enterpassword" onAction="test" size="large" imageMso="HappyFace" />

</group>

</tab>

</tabs>

</ribbon>

</customUI>

photo 1 :

Edit Amadéus: Cliquer sur le lien pour voir l'image

capture 02 capture 01

Bonjour,

J'espère que cet exemple pourra t'aider.

Par défaut, seul l'onglet perso Tab01 s'affiche dans le ruban. Les onglets standards s'affichent et Tab01 est masqué si tu cliques sur le bouton.

Le bouton de l'onglet Tab02 permet de remasquer les onglets classiques+Tab02 et de réafficher Tab01.

Dans le fichier xml de personnalisation :

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
   onLoad="RubanCharge" > 
<ribbon startFromScratch="false">

<tabs>
  <tab idMso="TabHome" getVisible="GestionTabStd"/>
  <tab idMso="TabInsert" getVisible="GestionTabStd"/>
  <tab idMso="TabPageLayoutExcel" getVisible="GestionTabStd"/>
  <tab idMso="TabFormulas" getVisible="GestionTabStd"/>
  <tab idMso="TabData" getVisible="GestionTabStd"/>
  <tab idMso="TabReview" getVisible="GestionTabStd"/>
  <tab idMso="TabView" getVisible="GestionTabStd"/>
  <tab idMso="TabDeveloper" getVisible="GestionTabStd"/>
  <tab idMso="TabReview" getVisible="GestionTabStd"/>
  <tab idMso="TabAddIns" getVisible="GestionTabStd"/>

       <tab id="Tab01" label="Onglet perso 01" getVisible="GestionTabPerso"> 
         <group id="Groupe01" label="Essai"> 
           <button id="button01"  
             imageMso="SheetProtect"  
             size="large"  
             label="Afficher les onglets standards"  
             onAction="ModifAffichage" /> 
         </group> 
       </tab> 

        <tab id="Tab02" label="Onglet perso 02" getVisible="GestionTabStd">
     <group id="Groupe02" label="Essai">
                <button id="button02"  
                   imageMso="CalculateNow"  
                   size="large"  
                   label="Masquer les onglets standards"  
                   onAction="ModifAffichage" /> 
         </group> 
        </tab>

</tabs>

</ribbon>
</customUI>

Dans le module ThisWorkbook du classeur :

Option Explicit

Private Sub Workbook_Open()
    boolResult = False
End Sub

Dans un module standard :

Option Explicit
Public boolResult As Boolean
Public objRuban As IRibbonUI

'Callback for customUI.onLoad
    'Est déclenché lors du chargement du ruban personnalisé.
Sub RubanCharge(ribbon As IRibbonUI)
    Set objRuban = ribbon
End Sub

'Callback for getVisible
Sub GestionTabStd(control As IRibbonControl, ByRef returnedVal)
    returnedVal = boolResult
End Sub

'Callback for Tab01 getVisible
Sub GestionTabPerso(control As IRibbonControl, ByRef returnedVal)
    returnedVal = Not boolResult
End Sub

'Callback for button01 and button 02 onAction
Sub ModifAffichage(control As IRibbonControl)
    boolResult = Not boolResult
    objRuban.Invalidate
End Sub

bon après midi

michel

84projet-tableau-v8.zip (418.44 Ko)

Bonjour,tout d'abord un grand merci à Michel!

j'ai encore deux petites questions qui me sont assez complexe!:)

Je pense que la première doit être assez simple mais je n'arrive pas à comprendre! Dans mon thisworbook j'ai placé ma programmation suivante:

Option Explicit
Private Sub Workbook_Open()
  boolResult = False
  Application.DisplayFullScreen = False
  Sheets("feuil1").Select
ActiveWindow.DisplayWorkbookTabs = False
Worksheets(1).ScrollArea = "A1:K30"
End sub

Mon problème est que si je mets "Application.DisplayFullScreen = True" mon fichier s'ouvre en pleine écran, si je presse la touche "echap" je ne suis plus en pleine écran mais je ne peux plus rien faire mes onglets sont bloquer! Aucun click possible!

Vous pourriez m'aider à me dire pourquoi mes onglets reste fixe?

Ma deuxième question est plus complexe enfin pour moi!

Voilà, j’ai programmé mon customer, mon thisworkbook, et un module de manière à avoir un seul onglet avec un bouton "enter password" au démarrage, et quand je click dessus tous les autres onglets classiques d'excel reviennent avec un nouvel onglet qui contient un bouton pour revenir avec just l'onglet de départ!!(confére image et code en dessous)

Cela fonctionne très bien mais j'aimerais que l'userform que j'ai créé "demande de password" soit ouvert quand je click sur le bouton "enter password",si le nom d'utilisateur et le mot de passe sont correct après la validation,j'ai mes onglets classiques et mon nouvel onglet qui apparaissent!

Pour résumer, ma programmation fonctionne mais maintenant j'aimerais quel fonctionne seulement si les informations de l'userform sont correct! Si elles sont incorrectes, on annule et j'ai toujours que mon onglet perso !

Quelqu'un peut-il m'assister ?car la je m'arrache les cheveux!!!!

Merci d'avance à tous,en espérant avoir était le plus clair possible!

Ma programmation thisworkbook est au dessus

Code customer:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="RubanCharge">
<ribbon startFromScratch="false">

<tabs>
  <tab idMso="TabHome" getVisible="GestionTabStd"/>
  <tab idMso="TabInsert" getVisible="GestionTabStd"/>
  <tab idMso="TabPageLayoutExcel" getVisible="GestionTabStd"/>
  <tab idMso="TabFormulas" getVisible="GestionTabStd"/>
  <tab idMso="TabData" getVisible="GestionTabStd"/>
  <tab idMso="TabReview" getVisible="GestionTabStd"/>
  <tab idMso="TabView" getVisible="GestionTabStd"/>
  <tab idMso="TabDeveloper" getVisible="GestionTabStd"/>
  <tab idMso="TabReview" getVisible="GestionTabStd"/>
  <tab idMso="TabAddIns" getVisible="GestionTabStd"/>

       <tab id="Tab01" label="lock in" getVisible="GestionTabPerso">
         <group id="Groupe01" label="lock in">
           <button id="button01" 
             imageMso="HappyFace" 
             size="large" 
             label="Enter password" 
             onAction="ModifAffichage" />
         </group>
       </tab>

        <tab id="Tab02" label="lock out" getVisible="GestionTabStd">
     <group id="Groupe02" label="lock out">
                <button id="button02" 
                   imageMso="HappyFace" 
                   size="large" 
                   label="lock out" 
                   onAction="ModifAffichage" />
         </group>
        </tab>

</tabs>

</ribbon>
</customUI>

Voici le module pour les callbacks

Option Explicit
Public boolResult As Boolean
Public objRuban As IRibbonUI

'Callback for customUI.onLoad
    'Est déclenché lors du chargement du ruban personnalisé.
Sub RubanCharge(ribbon As IRibbonUI)
    Set objRuban = ribbon
End Sub

'Callback for getVisible
Sub GestionTabStd(control As IRibbonControl, ByRef returnedVal)
    returnedVal = boolResult
End Sub

'Callback for Tab01 getVisible
Sub GestionTabPerso(control As IRibbonControl, ByRef returnedVal)
    returnedVal = Not boolResult
End Sub

'Callback for button01 and button 02 onAction
Sub ModifAffichage(control As IRibbonControl)
    boolResult = Not boolResult
    objRuban.Invalidate
End Sub

code de mon userform :

Option Explicit

Private Sub cmdValider_Click()
    lblMessage.Caption = ""
        If txtUtilisateur.Text = "admin" Then
            If txtMotDePasse.Text = "rclens" Then
                Unload Me
              Else
                Beep
                lblMessage.Caption = "Mot de passe incorect"
                txtMotDePasse.SelStart = 0
                txtMotDePasse.SelLength = Len(txtMotDePasse.Text)
                txtMotDePasse.SetFocus
            End If
          Else
            Beep
            lblMessage.Caption = "Nom d'utilisateur incorect"
            txtUtilisateur.SelStart = 0
            txtUtilisateur.SelLength = Len(txtUtilisateur.Text)
            txtUtilisateur.SetFocus
     End If
End Sub

Private Sub ActiverChamps(ok As Boolean)
    txtUtilisateur.Enabled = ok
    txtMotDePasse.Enabled = ok
    txtUtilisateur.Text = IIf(ok, txtUtilisateur.Text, "")
    txtMotDePasse.Text = IIf(ok, txtMotDePasse.Text, "")
    If ok Then txtUtilisateur.SetFocus
End Sub

et pour finir photo au démarrage du fichier,on voit le bouton "enter password"!

Bonjour

Mon problème est que si je mets "Application.DisplayFullScreen = True" mon fichier s'ouvre en pleine écran, si je presse la touche "echap" je ne suis plus en pleine écran mais je ne peux plus rien faire mes onglets sont bloquer! Aucun click possible!

Je ne pense pas que le mode plein écran et la gestion personnalisée du ruban soit compatible.

Tu devras préalablement spécifier :

Application.DisplayFullScreen = False

Ma deuxième question

Une autre approche qui gére le mot de passe directement depuis un menu personnalisé du ruban (mdp="RCLENS" dans cet exemple)

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
   onLoad="RubanCharge" > 
<ribbon startFromScratch="false">

<tabs>
  <tab idMso="TabHome" getVisible="GestionTabStd"/>
  <tab idMso="TabInsert" getVisible="GestionTabStd"/>
  <tab idMso="TabPageLayoutExcel" getVisible="GestionTabStd"/>
  <tab idMso="TabFormulas" getVisible="GestionTabStd"/>
  <tab idMso="TabData" getVisible="GestionTabStd"/>
  <tab idMso="TabReview" getVisible="GestionTabStd"/>
  <tab idMso="TabView" getVisible="GestionTabStd"/>
  <tab idMso="TabDeveloper" getVisible="GestionTabStd"/>
  <tab idMso="TabReview" getVisible="GestionTabStd"/>
  <tab idMso="TabAddIns" getVisible="GestionTabStd"/>

    <tab id="Tab01" label="Onglet perso 01" getVisible="GestionTabPerso">
       <group id="MdP" label="Mot de passe">

       <gallery id="gallery01"
           size = "normal"
           imageMso = "CalculateNow"
           label = "Saisissez le mot de passe :"
           columns = "6"
           rows = "6"
           getItemCount = "NbCaracteres"
           showItemLabel = "true"
           getItemLabel = "LabelCaractere"
           screentip = "Sélectionnez les caractéres dans la galerie, puis validez le mot de passe."
           onAction="SelectCaractere" >

           <button id="Bt02" label="Effacez la saisie."
               imageMso="ClearMenu" onAction="EffaceContenuLabel"/>

       </gallery>

       <box id="Box01" boxStyle="horizontal">
           <labelControl id="LC01" getLabel="ContenuLabel" />

       </box>

       <button id="Bt01" imageMso="FileStartWorkflow" size="normal"
           label="Validez le mot de passe" visible="true" onAction="ValidationMdP" />

       </group>
     </tab>

        <tab id="Tab02" label="Onglet perso 02" getVisible="GestionTabStd">
        <group id="Groupe02" label="Essai">
                <button id="button02"  
                   imageMso="CalculateNow"  
                   size="large"  
                   label="Masquer les onglets standards"  
                   onAction="ModifAffichage" /> 
         </group> 
        </tab>

</tabs>

</ribbon>
</customUI>
Option Explicit

Private Sub Workbook_Open()
    boolResult = False

    'Définit les caractères utilisables pour la saisie du mot de passe
    Tableau = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", _
        "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", _
        "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")

End Sub
Option Explicit
Option Base 1

Public boolResult As Boolean
Public objRuban As IRibbonUI
Public Cible As String
Public Tableau As Variant

'Callback for customUI.onLoad
    'Est déclenché lors du chargement du ruban personnalisé.
Sub RubanCharge(ribbon As IRibbonUI)
    Set objRuban = ribbon
End Sub

'Callback for getVisible
Sub GestionTabStd(control As IRibbonControl, ByRef returnedVal)
    returnedVal = boolResult
End Sub

'Callback for Tab01 getVisible
Sub GestionTabPerso(control As IRibbonControl, ByRef returnedVal)
    returnedVal = Not boolResult
    'objRuban.Invalidate
End Sub

'Callback for button 02 onAction
Sub ModifAffichage(control As IRibbonControl)
    boolResult = False
    objRuban.Invalidate
End Sub

'Callback for Bt01 onAction
'Validaton du mot de passe
Sub ValidationMdP(control As IRibbonControl)
    If Cible = "RCLENS" Then
        MsgBox "Confirmation du mot de passe."

        boolResult = True
        objRuban.Invalidate
    Else
        MsgBox "Mot de passe erroné."
    End If

    Cible = ""
    objRuban.InvalidateControl "LC01"
End Sub

'Callback for gallery01 getItemCount
'Définit le nombre d'élément dans la galerie
Sub NbCaracteres(control As IRibbonControl, ByRef returnedVal)
    returnedVal = UBound(Tableau) + 1
End Sub

'Callback for gallery01 getItemLabel
'Création des éléments dans la galerie
Sub LabelCaractere(control As IRibbonControl, index As Integer, ByRef returnedVal)
    returnedVal = Tableau(index)
End Sub

'Callback for gallery01 onAction
'Met à jour le label après avoir sélectionné un caractère dans la galerie
Sub SelectCaractere(control As IRibbonControl, id As String, index As Integer)
    Cible = Cible & Tableau(index)
    objRuban.InvalidateControl "LC01"
End Sub

'Callback for LC01 getLabel
'Affiche des asteriques dans le label en lieu et place des caractères
Sub ContenuLabel(control As IRibbonControl, ByRef returnedVal)
    returnedVal = Application.WorksheetFunction.Rept("*", Len(Cible))
End Sub

'Callback for Bt02 onAction
'réinitialisation: Efface le contenu du label en cas d'erreur
'de saisie.
Sub EffaceContenuLabel(control As IRibbonControl)
    Cible = ""
    objRuban.InvalidateControl "LC01"
End Sub

bonne journée

michel

Rechercher des sujets similaires à "afficher ruban personnaliser seulement clic"