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 :

Afficher/Masquer ruban sous condition depuis bouton [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Points : 790
    Points
    790
    Par défaut Afficher/Masquer ruban sous condition depuis bouton
    Bonjour à tous,
    Je me heurte à un problème que je n'arrive pas à résoudre, afficher et masquer le ruban sous condition depuis un bouton dans un userform
    pour la création de mon petit programme

    Nom : test form5.gif
Affichages : 85
Taille : 250,4 Ko

    Code qui m'ennuie je pense

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Bt10_Click()
    'Application.ScreenUpdating = False
            If Application.ExecuteExcel4Macro("SHOW.TOOLBAR(""Ribbon"",false)") Then
                Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",true)"
                Lbt10.BackColor = vbGreen
                Bbt10.Caption = "On"
            Else
                Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",false)"
                Lbt10.BackColor = vbRed
                Bbt10.Caption = "Off"
            End If
    'Application.ScreenUpdating = True
    End Sub
    Affichage.xlsm

    Je vous remerci d'avance à tous
    Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider

    n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter

  2. #2
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 955
    Points : 4 067
    Points
    4 067
    Par défaut
    Bonjour,

    Pour minimiser le ruban :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    CommandBars.ExecuteMso "MinimizeRibbon"

    Pour l'agrandir :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    If CommandBars.GetPressedMso("MinimizeRibbon") = True Then CommandBars.ExecuteMso "MinimizeRibbon"

    Bonne continuation.

  3. #3
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par laurent_ott Voir le message
    Bonjour,

    Pour minimiser le ruban :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    CommandBars.ExecuteMso "MinimizeRibbon"

    Pour l'agrandir :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    If CommandBars.GetPressedMso("MinimizeRibbon") = True Then CommandBars.ExecuteMso "MinimizeRibbon"

    Bonne continuation.
    Bonjour et merci du retour, je vais essayer.
    Comment détecter si il est affiché ou masqué à l'ouverture de l'userform
    Merci.
    Nicolas
    Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider

    n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter

  4. #4
    Membre éclairé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 401
    Points : 701
    Points
    701
    Par défaut
    Bonjour à tous,
    Peut-être en regardant sa dimension...
    Code provenant de la toile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    'Hide Ribbon if it is on the screen in 2010-2013
    If RibbonState = 0 Then CommandBars.ExecuteMso "MinimizeRibbon"
    End Sub
    Function RibbonState() As Long
    'Sascha Trowitzsch: <a href="http://www.mosstools.de/" target="_blank">http://www.mosstools.de/</a>
    'Result: 0=normal, -1=autohide
    RibbonState = (CommandBars("Ribbon").Controls(1).Height < 100)
    End Function
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  5. #5
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par Valtrase Voir le message
    Bonjour à tous,
    Peut-être en regardant sa dimension...
    Code provenant de la toile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    'Hide Ribbon if it is on the screen in 2010-2013
    If RibbonState = 0 Then CommandBars.ExecuteMso "MinimizeRibbon"
    End Sub
    Function RibbonState() As Long
    'Sascha Trowitzsch: <a href="http://www.mosstools.de/" target="_blank">http://www.mosstools.de/</a>
    'Result: 0=normal, -1=autohide
    RibbonState = (CommandBars("Ribbon").Controls(1).Height < 100)
    End Function
    Bonjour,
    Merci du retour, ça a l'air de matcher.
    J'adapte et reviens pour tenir au courant.
    Merci
    Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider

    n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter

  6. #6
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Points : 790
    Points
    790
    Par défaut
    C'est bon ça marche, merci beaucoup Valtrase

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function RibbonState() As Long
    RibbonState = (CommandBars("Ribbon").Controls(1).Height < 100)
    End Function
    Pour userform initialize
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     If Application.CommandBars.Item("Ribbon").Height > 100 Then
                Lbt10.BackColor = vbGreen
                Bbt10.Caption = "On"
            Else
                Lbt10.BackColor = vbRed
                Bbt10.Caption = "Off"
            End If
    Et pour le bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Bt10_Click()
    If RibbonState = 0 Then
                CommandBars.ExecuteMso "MinimizeRibbon"
                Lbt10.BackColor = vbRed
                Bbt10.Caption = "Off"
    ElseIf CommandBars.GetPressedMso("MinimizeRibbon") = True Then CommandBars.ExecuteMso "MinimizeRibbon"
                Lbt10.BackColor = vbGreen
                Bbt10.Caption = "On"
    End If
    End Sub
    Merci encore
    Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider

    n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter

  7. #7
    Membre éclairé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 401
    Points : 701
    Points
    701
    Par défaut
    De rien, un petit pouce en l'air fait toujours plaisir.
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  8. #8
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 955
    Points : 4 067
    Points
    4 067
    Par défaut
    Désolé, j'aurais dû donner plus d'informations sur l'usage de la fonction "CommandBars.ExecuteMso "MinimizeRibbon" dans ma réponse.
    Car il n'y a pas une fonction pour maximiser le ruban, comme "CommandBars.ExecuteMso "MaxizeRibbon", et une autre pour le minimiser "CommandBars.ExecuteMso "MinimizeRibbon", une seule fonction fait les deux à la fois, "CommandBars.ExecuteMso "MinimizeRibbon" ce qui est assez particulier (il faudrait demander aux ingénieurs de Microsoft la logique du bidule).
    Faites un test pour mieux comprendre en appelant plusieurs fois la fonction "CommandBars.ExecuteMso "MinimizeRibbon" : le ruban vas être alternativement maximisé ou minimisé.

    Donc, avant d'appeler cette fonction il faut en amont connaitre l'état du ruban : maximisé ou minimisé.
    C'est la fonction "CommandBars.GetPressedMso("MinimizeRibbon")" qui donne la réponse :
    True : il est minimisé.
    False : il est maximisé.
    Soit l'équivalent de la fonction "RibbonState" qui vous a été présentée.

    En résumé:
    Pour maximiser le ruban : Vérifier avec "CommandBars.GetPressedMso("MinimizeRibbon")" s'il est déjà maximisé ou pas, s'il ne l'ai pas faire "CommandBars.GetPressedMso("MinimizeRibbon")".
    Pour minimiser le ruban : Vérifier avec "CommandBars.GetPressedMso("MinimizeRibbon")"s'il est déjà minimisé ou pas, s'il ne l'ai pas faire "CommandBars.GetPressedMso("MinimizeRibbon")".

    Votre programme marche très bien comme il est écrit, donc ne changez rien, c'était juste pour votre information.
    Cordialement.

  9. #9
    Membre éclairé Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par laurent_ott Voir le message
    Désolé, j'aurais dû donner plus d'informations sur l'usage de la fonction "CommandBars.ExecuteMso "MinimizeRibbon" dans ma réponse.
    Car il n'y a pas une fonction pour maximiser le ruban, comme "CommandBars.ExecuteMso "MaxizeRibbon", et une autre pour le minimiser "CommandBars.ExecuteMso "MinimizeRibbon", une seule fonction fait les deux à la fois, "CommandBars.ExecuteMso "MinimizeRibbon" ce qui est assez particulier (il faudrait demander aux ingénieurs de Microsoft la logique du bidule).
    Faites un test pour mieux comprendre en appelant plusieurs fois la fonction "CommandBars.ExecuteMso "MinimizeRibbon" : le ruban vas être alternativement maximisé ou minimisé.

    Donc, avant d'appeler cette fonction il faut en amont connaitre l'état du ruban : maximisé ou minimisé.
    C'est la fonction "CommandBars.GetPressedMso("MinimizeRibbon")" qui donne la réponse :
    True : il est minimisé.
    False : il est maximisé.
    Soit l'équivalent de la fonction "RibbonState" qui vous a été présentée.

    En résumé:
    Pour maximiser le ruban : Vérifier avec "CommandBars.GetPressedMso("MinimizeRibbon")" s'il est déjà maximisé ou pas, s'il ne l'ai pas faire "CommandBars.GetPressedMso("MinimizeRibbon")".
    Pour minimiser le ruban : Vérifier avec "CommandBars.GetPressedMso("MinimizeRibbon")"s'il est déjà minimisé ou pas, s'il ne l'ai pas faire "CommandBars.GetPressedMso("MinimizeRibbon")".

    Votre programme marche très bien comme il est écrit, donc ne changez rien, c'était juste pour votre information.
    Cordialement.

    Bonjour,
    Merci du retour, j'ai remodifié en cours de route, parce que la fonction proposée ne sert à rien,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            If Application.CommandBars.Item("Ribbon").Height > 100 Then
                Lbt10.BackColor = vbGreen
                Bbt10.Caption = "On"
            Else
                Lbt10.BackColor = vbRed
                Bbt10.Caption = "Off"
            End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Bt10_Click()
    If CommandBars("Ribbon").Controls(1).Height < 100 = 0 Then
                CommandBars.ExecuteMso "MinimizeRibbon"
                Lbt10.BackColor = vbRed
                Bbt10.Caption = "Off"
    ElseIf CommandBars.GetPressedMso("MinimizeRibbon") = True Then CommandBars.ExecuteMso "MinimizeRibbon"
                Lbt10.BackColor = vbGreen
                Bbt10.Caption = "On"
    End If
    End Sub
    Nom : test form5.gif
Affichages : 20
Taille : 90,1 Ko

    Merci et bonne soirée
    Merci d'exprimer votre message le plus clairement possible pour qu'on puisse vous aider

    n'oubliez pas de cliquer sur et si cela vous a aidé pensez à voter

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

Discussions similaires

  1. [XL-2010] Masquer ou afficher des lignes sous condition
    Par Twixman dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/03/2019, 16h35
  2. Masquer-Afficher des colonnes sous conditions
    Par line78 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/06/2018, 17h45
  3. [XL-2007] Afficher/masquer zone sous condition
    Par hugues1983 dans le forum Excel
    Réponses: 1
    Dernier message: 19/04/2018, 13h38
  4. Afficher une image sous condition
    Par Chmog dans le forum BIRT
    Réponses: 5
    Dernier message: 28/07/2006, 12h11
  5. Afficher un champ sous condition
    Par Cantalou dans le forum Access
    Réponses: 24
    Dernier message: 01/02/2006, 14h25

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