Xl 2007 reduire le ruban au demarrage d'un classeur

jimmy59940

XLDnaute Nouveau
Bonjour à tous,

J'aimerais que à chaque fois que je démarre mon classeur, le ruban se réduit automatiquement! Pour l'instant j'ai trouver la programmation suivante « simule ctrl+f1 » que je mets dans la fonction "workbook_open()"

Code:
Option Explicit
Private Declare Sub keybd_event Lib "user32" ( _
    ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)

Private Sub Workbook_Open()
   Application.DisplayFullScreen = False
    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")
    Sheets("Feuil1").Select
ActiveWindow.DisplayWorkbookTabs = False
    'Simule Ctrl+F1 
    Const VK_CONTROL = &H11
    Const VK_F1 = &H70
    Const KEYEVENTF_KEYUP = &H2
 
    keybd_event VK_CONTROL, 0, 0, 0
    keybd_event VK_F1, 0, 0, 0
    keybd_event VK_F1, 0, KEYEVENTF_KEYUP, 0
    keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0

End Sub

Donc, j’ai mon ruban personnalisé avec un seul onglet "lock out" qui permet de rentrer un mot de passe! Mon problème étant que mon ruban se réduit une fois sur deux! Et oui, il applique la fonction simule ctrl+f1 à chaque fois donc une fois sur deux à l’ouverture de mon classeur le ruban est "réduit/afficher/réduit"!!
J'aimerais savoir, je pensais introduire un "if" qui dit si mon onglet ou une commande à l'intérieur est visible, je lance le ctrl+f1!
Je pense que comme cela, le ruban devrait se réduire à chaque démarrage mais je n'arrive pas à faire la programmation!!

Quelqu'un pourrait-il m'aider à programmer cette commande??où si vous avez une autre idée?

Un grand merci à tous d'avance!!
 

jimmy59940

XLDnaute Nouveau
Re : Xl 2007 reduire le ruban au demarrage d'un classeur

hey,

voici mon xml :

Code:
<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 out" getVisible="GestionTabPerso">
       <group id="MdP" label="password">

       <gallery id="gallery01"
           size = "normal"
           imageMso = "CalculateNow"
           label = "Enter the password :"
           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="delete the entry"
               imageMso="ClearMenu" onAction="EffaceContenuLabel"/>

       </gallery>

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

       </box>

       <button id="Bt01" imageMso="FileStartWorkflow" size="normal"
           label="Validate password" visible="true" onAction="ValidationMdP" />

       </group>
     </tab>


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

</tabs>

</ribbon>
</customUI>

merci d'avance
 

JNP

XLDnaute Barbatruc
Re : Xl 2007 reduire le ruban au demarrage d'un classeur

Re :),
Sans les CallBacks, ça va pas être évident de tester... Mais de toute façon, ta procédure ne marche pas chez moi, le Ctrl + F1 est déjà squatté par un autre applicatif...
Par contre, pour éviter l'effet de bascule, tu peux le simuler dans le WorkBook_Close. Mais ça n'empêchera pas que l'utilisateur qui sera avant en ruban réduit va passer en ruban normal...
J'ai cherché entre l'aide et le web, mais il semblerait que Acces sache le faire, mais pas Excel...
Si je trouve quelque chose, je te faits signe, mais je suis un peu septique...
Bon courage :cool:
 

jimmy59940

XLDnaute Nouveau
Re : Xl 2007 reduire le ruban au demarrage d'un classeur

Bonjour, désoler d'avoir oublié les calls back! Je pense que si tu test avec cela, ca devrait fonctionner chez toi!!Par contre pour l'idée 'utilisation la fonction close! Pourquoi pas mais le problème c'est qu'il faudrait une condition qui détecte si mon ruban est réduit ou normal, nan?

merci d'avance

Code:
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 "Password ok"
       
        boolResult = True
        objRuban.Invalidate
    Else
        MsgBox "Error password"
    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
 

JNP

XLDnaute Barbatruc
Re : Xl 2007 reduire le ruban au demarrage d'un classeur

Re :),
Aidé de mon formateur (j'apprends XML en ce moment, et lui est très VB.NET mais pas VBA), on a jeté un oeil sur le web et on a trouvé une propriété qui va faire ton bonheur (du moins j'espère :p).
Code:
MsgBox (Application.CommandBars.Item("Ribbon").Height)
si >100, étendu, sinon, minimisé.
D'autre part, pour simuler Ctrl+F1
Code:
Application.SendKeys "^{F1}"
est plus court.
Enfin, en passant par Excel4, tu peux cacher le ruban
Code:
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
Tient moi au courant ;).
Bonne soirée :cool:
 

jimmy59940

XLDnaute Nouveau
Re : Xl 2007 reduire le ruban au demarrage d'un classeur

Hey,

Merci JPN de t'intéresser à mon problème!!Par contre je n'arrive pas à comprendre la commande que tu m'as donnée!!Enfin surtout, je ne sais pas comment je peux l'intégrer et où! Pour la commande afin de simuler ctrl+f1, j’ai bien compris l'écriture de la ligne et introduit! Mais, pour la première ligne avec le message box, et si il est >100!!C’est quoi qui doit-être supérieur à 100 la hauteur du "ribbon"? Peut-tu stp m'aider encore un petit peu, je pense que je n'y arrive pas car je suis novice mas j'ai essayé hier un petit moment et pas réussi à intégrer!!

Merci d'avance pour ton aide!!!
 

JNP

XLDnaute Barbatruc
Re : Xl 2007 reduire le ruban au demarrage d'un classeur

Re :),
Code:
Application.CommandBars.Item("Ribbon").Height
te donne la hauteur du ruban en pixel (lecture seule), mais comme (a priori) ça dépends de la résolution (je n'ai pas obtenu la même résolution sur un portable et chez moi), je l'avais mis dans un message box pour que tu regardes quelles valeurs elle te renvoyait avec le ruban large et réduit. Chez moi, le ruban large renvoit 147 et le réduit 56. Donc
Code:
If Application.CommandBars.Item("Ribbon").Height > 100 Then
Application.SendKeys "^{F1}"
End If
devrait réduire le ruban s'il est étendu, et n'y touchera pas s'il est déjà réduit.
Code:
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
elle, rends carrément le ruban inaccessible. Pour le ramener
Code:
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
.
Bon courage :cool:
 

jimmy59940

XLDnaute Nouveau
Re : Xl 2007 reduire le ruban au demarrage d'un classeur

Hey, merci jpn!

J’utilise le code que tu m'as donné mais il y a un problème! J’ai placé ce code dans mon workbook_open!

Code:
private sub workbook_open
If Application.CommandBars.Item("Ribbon").Height > 100 Then
Application.SendKeys "^{F1}"
End If
userform1.show
end sub

Le problème étant que si on utilise l'ouverture d'un userform,il ne traite pas la fonction du ruban! J’ai retourné le problème dans tous les sens mais je n'y arrive pas! J’ai besoin que mon userform s'ouvre automatiquement quand j'ouvre le document!!
Pourrais-tu encore stp m'assister?

Un grand merci d'avance
 

JNP

XLDnaute Barbatruc
Re : Xl 2007 reduire le ruban au demarrage d'un classeur

Re :),
Effectivement, ça ne fonctionne pas :eek:. J'ai même des messages mémoire insuffisante... Je vais ouvrir un fil traitant du sujet, on verra bien :p.
A + :cool:
 

JNP

XLDnaute Barbatruc
Re : Xl 2007 reduire le ruban au demarrage d'un classeur

Re :),
Finalement, un dernier test a été efficace :p. Insérer une pause avant de monter l'USF
Code:
Private Sub workbook_open()
If Application.CommandBars.Item("Ribbon").Height > 100 Then
Application.SendKeys "^{F1}"
End If
Dim PauseTime, Start, Finish, TotalTime
    PauseTime = 1    ' Définit la durée.
    Start = Timer    ' Définit l'heure de début.
    Do While Timer < Start + PauseTime
        DoEvents    ' Donne le contrôle à d'autres processus.
    Loop
UserForm1.Show
End Sub
La pause est de 1 secondes, mais tu peux faire des tests pour descendre en dessous si necessaire.
Bon grand WE :cool:
 

jimmy59940

XLDnaute Nouveau
Re : Xl 2007 reduire le ruban au demarrage d'un classeur

hey,
Franchement un grand merci JPN c'est parfait,j'ai juste changer le commande de la touche comme cela :

Application.OnKey Key:="^{F1}"

autrement,il ouvrait aussi l'aide excel à chaque fois!!:)

Enfin encore un grand merci mon problème est résolu!!!
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz