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 :

Réduire le ruban [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Réduire le ruban
    bonjour le forum,

    le code de la faq fonctionne bien... tout seul.

    Dans mon programme, il ne fontionne pas s'il est placé dans "Workbook_Open" même en ayant placé un "DoEvents" après l'appel à la procédure.

    Placé dans "Workbook_BeforeClose", il lance l'aide ! (et ne se réduit pas).

    Quelle est la solution ? (si elle existe sous 2007)

    Merci.

    ESVBA

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu!...
    bonjour esvba


    Dis moi où tu as trouvé ce code qui marche tout seul.

    J'avais répondu à ce sujet je ne sais plus pour qui justement dans une boucle

    muni d'un doevents

    maintenant une autre solution serai de renvoyer en fin de macro qui serait responsable de sa réapparition à la macro suivante
    ensuite il faut condamner la touche esc

    dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sub plus_de_ruban ()
    application.screenupdating=false
    if application.displayfullscreen=false then 
     application.displayfullscreen=true
    else
     application.displayfullscreen=false 
    end sub
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    Bonjour,

    Je n'ai pas rencontré de souci en testant l'ouverture et la fermeture du classeur. Par contre les procédures ne doivent pas être déclenchées depuis l'éditeur de macros :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    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()
        '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
     
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        '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
    michel

  4. #4
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut bonsoir patricktoulon,
    dis moi ou tu a trouver ce code qui marche tout seul
    quand la greffe à pris, ça roule presque tout seul

    Là, trop complexe pour moi :
    maintenant une autre solution serai de renvoyer en fin de macro qui serai responsable de sa reaparition a la macro suivante ensuite il faut condaner la touche esc
    Pour le code ok, mais j'aurais souhaité garder le ruban. Je m'en servirais si je n'ai pas d'autres solutions.

    Merci.

    ESVBA

  5. #5
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut bonsoir SilkyRoad,
    voila c'est le code que j'ai utilisé mais dans un module. Ca ne fonctionne pas et je ne comprends pas pourquoi.

    JE l'ai refait sur un autre classeur qui a globalement les mêmes instructions et dans le même ordre : ça ne fonctionne pas.

    Voici le code dans le module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Option Explicit
     
    Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
     
     
    Sub ReduitRuban()
        '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
    Dans "ThisWorkBook" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Call ReduitRuban
     
        '---
        Application.ScreenUpdating = False
        'si les macros ont été autorisées à l'ouverture, la feuille "Accueil" est cachée
        'et les autres feuilles visibles.
        'Il faut re-préparer le classeur pour l'éventuelle mauvaise ouverture suivante
        'si elles n'ont pas été autorisées de toutes façons cette macro ne
        'se lance pas ...
        Sheets("Accueil").Visible = xlSheetVisible 'Ici on laisse une feuille visible donc c'est toujours OK
        For Each f In Application.Worksheets
            If UCase$(f.Name) <> "ACCUEIL" Then
                f.Visible = xlSheetVeryHidden
            End If
        Next
    End Sub
     
    Private Sub Workbook_Open()
        '--- Message d'accueil pour forcer l'activation des macros
        '  Attention subtilité
        'Ne pas faire du style ="ACCCUEIL" et caché la feuille car on se retrouve avec
        'un classeur sans feuille et Excel n'apprécie pas.
        Application.ScreenUpdating = False
        Dim f As Worksheet
        For Each f In Application.Worksheets
            If UCase$(f.Name) <> "ACCUEIL" Then
                f.Visible = xlSheetVisible
            End If
        Next
        Sheets("Accueil").Visible = xlSheetVeryHidden
        ' Affiche le traitement
        Application.ScreenUpdating = True
     
        '---
        Call ReduitRuban
     
        '--- Mise à jour de la version
        Call VersionActualise
     
        '--- Affiche l'écran SplashScreen
        FrmSplashScreen.Show
     
        '--- Affiche la liste des feuilles du classeur
        Call ListeFeuilleClasseur
        ' Ne déplace la feuille qu'à la première ouverture de la feuille
        FrmFeuilleClasseur.Move 0.9 * Application.Width - FrmFeuilleClasseur.Width, Application.Top
    End Sub
    J'ai encore le même problème d'affichage de l'aide à la fermeture.



    ESVBA

  6. #6
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut bonsoir le forum,
    le problème est identifié : je ne réactualisais pas l'affichage dans la procédure "beforeclose" et dans "open" j'ai ajouté "Doevents" après la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
    .


    Une autre question connexe :
    Si le ruban est déjà fermé, avec ce code, il sera réouvert. Ce n'est pas ce que je désire. Comment puis-je faire car il n'y a pas pas de propriété à ma connaissance ?

    ESVBA

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

Discussions similaires

  1. [C#] comment développer/réduire le menu ruban en wpf
    Par karim.com dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 19/09/2011, 12h01
  2. [XL-2007] Réduire/Agrandir le ruban
    Par ESVBA dans le forum Contribuez
    Réponses: 0
    Dernier message: 25/09/2010, 16h05
  3. Réduire la hauteur du ruban
    Par possible924 dans le forum IHM
    Réponses: 0
    Dernier message: 29/07/2010, 17h06
  4. [AC-2007] Réduire la taille du ruban sans le masquer complètement
    Par cbleas dans le forum IHM
    Réponses: 2
    Dernier message: 14/04/2010, 16h08
  5. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 21h06

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