comment réduire le ruban(excel2007) en code VBA

Roland_M

XLDnaute Barbatruc
Tout d'abord bien le bonjour à tous,
J'aimerais savoir comment faire, en code vba bien sûr,
pour réduire/afficher le ruban d'excel 2007 ?
Je prècise bien le ruban seul et garder le reste des commandbars !?
D'avance grand merci à tous et Bonnes vacances !
Roland.
 

MichelXld

XLDnaute Barbatruc
Re : comment réduire le ruban(excel2007) en code VBA

bonsoir

Je ne sais pas s'il existe un code VBA pour masquer/réafficher le ruban.
En attendant, ci joint une macro qui simule le raccourci clavier Ctrl+F1 ( à lancer impérativement depuis la feuille de calcul ).

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)
 
Sub Masquer_Afficher_Ruban()
    'Simule Ctrl+F1 (à lancer depuis la feuille de calcul)
    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



et si tu utilises la macro depuis un CommandButton (placé sur la feuille de calcul)

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 CommandButton1_Click()
    'Simule Ctrl+F1 (à lancer depuis la feuille de calcul)
    Const VK_CONTROL = &H11
    Const VK_F1 = &H70
    Const KEYEVENTF_KEYUP = &H2
    
    Range("A1").Select
    DoEvents
    
    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



Bonne soirée
MichelXld
 

Roland_M

XLDnaute Barbatruc
Re : comment réduire le ruban(excel2007) en code VBA

Merci à toi Michel (Xld), je n'y avais pas pensé et bien sûr ça marche !
Mais si je puis me permettre, pour simuler une touche il y a plus simple:
Application.SendKeys "^{F1}" suffit et c'est tout de même plus court.

Mais mon problème demeure car Ctrl+F1 fonctionne en alternance(si je puis dire ainsi) Masque/Affiche/Masque/Affiche...
Or lorsque j'appel ma fonction qui est BarOutilsVisible = True ou False
Ctrl+F1 peut Afficher ou Masquer mal à propos !?

Lorsque j'appel BarOutilsVisible = True (Le Ruban doit être visible)
Lorsque j'appel BarOutilsVisible = False (Le Ruban doit être invisible)
Faudrait pouvoir détecter si le Ruban est Afficher ou Masquer comprends tu !?
pour ne pas effectuer Ctrl+F1 qui réafficherai alors qu'il ne le faut pas.

Merci tout de même et à plus.
 

MichelXld

XLDnaute Barbatruc
Re : comment réduire le ruban(excel2007) en code VBA

bonjour

Mais si je puis me permettre, pour simuler une touche il y a plus simple:
Application.SendKeys "^{F1}" suffit et c'est tout de même plus court.
Je n'utilise jamais les SendKeys car ça ne fonctionne pas une fois sur deux. personnellement je n'ai jamais réussi à les faire fonctionner de façon fiable.


Faudrait pouvoir détecter si le Ruban est Afficher ou Masquer comprends tu !?
pour ne pas effectuer Ctrl+F1 qui réafficherai alors qu'il ne le faut pas.
Tu peux stocker l'information dans un endroit de ton choix qui indiquera si ta fonction BarOutilsVisible doit etre masquée/affichée:
* Dans une cellule d'une feuille masquée
* Dans une propriété personnalisée
* Il est aussi possible d'utiliser la propriété Tag des boutons, dans les barres d'outils personnalisées.



Bonne journée
MichelXld
 

Discussions similaires

Réponses
22
Affichages
684
Réponses
5
Affichages
715

Statistiques des forums

Discussions
312 329
Messages
2 087 335
Membres
103 520
dernier inscrit
Azise