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 :

Activer macro d'un bouton de controle à l'ouverture d'un fichier sans cliquer dessus [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 90
    Points
    90
    Par défaut Activer macro d'un bouton de controle à l'ouverture d'un fichier sans cliquer dessus
    Bonjour, à l'ouverture de mon fichier je souhaiterais activer un bouton sans cliquer dessus et que la macro de celui-ci s'éxécute. Hors je ne trouve pas la solution pour faire cela.

    merci de votre aide

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Déjà tu commence à déplacer le code de ton bouton dans une procédure d'un module standard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MaProcedure
    (... ton code ..)
    End sub
    Tu modifie le code de ton bouton pour qu'il appelle cette procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub CommandButton1_Click 
      MaProcedure 'Appel de 'Ma procedure'
    End sub
    Et dans ThisWorkBook tu utilise l'événement Open pour l'appel de cette procedure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
     MaProcedure 
    End Sub

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 90
    Points
    90
    Par défaut
    Exact j'y avais pas pensé merci

    mais ça marche pas ça me met erreur dans module caché thisworkbook

    Code :
    Dans module standard
    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
    Sub AgrandirRéduire()
    Application.DisplayFormulaBar = False
    If ToggleButton1.Value = True Then
        With Application
            .WindowState = xlNormal
            .Width = 185
            .Height = 185
        End With
        ToggleButton1.Caption = "Agrandir"
        ToggleButton1.Accelerator = "D"
        ActiveWindow.ScrollRow = 1
        ActiveWindow.ScrollColumn = 1
    Else
        Application.DisplayFullScreen = True
        ToggleButton1.Caption = "Réduire"
        ToggleButton1.Accelerator = "P"
        ActiveWindow.ScrollRow = 1
        ActiveWindow.ScrollColumn = 1
    End If
    End Sub
    A la feuille concernée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ToggleButton1_Click()
     AgrandirRéduire
    End Sub
    Thisworkbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_Open()
     Application.DisplayFormulaBar = False
     ActiveWindow.Zoom = 135
     ValidEnr = True
     AgrandirRéduire
     ActiveWindow.ScrollRow = 1
     ActiveWindow.ScrollColumn = 1
    End Sub

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 141
    Points : 414
    Points
    414
    Par défaut Basculer en plein écran en VBA dans Excel
    Au moment de l'ouverture du classeur dans Workbook_Open(), il est beaucoup trop tôt pour accéder à la valeur de ToggleButton1 qui n'est connu que dans une feuille particulière.

    Dans le module standard Module1, il est possible de définir avec Public un Boolean qui représentera (notez le futur) l'état de ToggleButton1 dans sa feuille.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit ' commentaire de ce que fait le module
    Public isFullScreen As Boolean ' Représente l'état du ToggleButton1 False par défaut
     
    Sub AgrandirReduire()
        Application.DisplayFormulaBar = False ' déjà fait dans Workbook_Open() ?
        Application.DisplayFullScreen = isFullScreen
        If Not isFullScreen Then
            With Application
                .WindowState = xlNormal ' Pourrait être fait uniquement dans Workbook_Open()
                .Width = 185: .Height = 185 ' Idem
            End With
        End If
        ActiveWindow.ScrollRow = 1: ActiveWindow.ScrollColumn = 1 ' déjà fait dans Workbook_Open() ?
    End Sub
    Dans la feuille où est défini le ToggleButton1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit ' Feuille où il y a le ToggleButton1
     
    Sub ToggleButton1_Click()
        isFullScreen = Not isFullScreen
        ToggleButton1.Value = isFullScreen
        If isFullScreen Then
            ToggleButton1.Caption = "Réduire"
            ToggleButton1.Accelerator = "P"
        Else
            ToggleButton1.Caption = "Agrandir"
            ToggleButton1.Accelerator = "D"
        End If
        AgrandirReduire
    End Sub
    On a enlevé de AgrandirReduire() tout ce qui relève du ToggleButton1 que l'on ne peut utiliser que dans sa feuille.

    Workbook_Open() reste inchangé à part l'accent à enlever.
    Dans AgrandirRéduire(), enlevez l'accent du nom des procédures et des noms de variables.
    On ne devrait utiliser les accents que dans les chaînes littérale comme "Réduire".

    Dans le choix du Boolean isFullScreen, il faut tenir compte qu'il sera False à l'ouverture du classeur.

    En cherchant à optimiser AgrandirReduire(), on se rend compte que tout pourrait être fait dans Workbook_Open().
    AgrandirReduire() ne servirait alors qu'à basculer entre vue normal et plein écran.

    La question que l'on se pose c'est à quoi sert d'avoir créé un ToggleButton1 si c'est pour basculer entre plein écran et vue normale ? Si c'est l'objectif, alors on peut placer sur la barre d'outil d'Excel, le bouton "Plein écran" (Full Screen) qui existe déjà dans "Affichage" (View).
    ___________

    Si la discussion est résolue, vous pouvez cliquer sur le bouton

    En bas de ce message s'il vous a apporté des éléments de réponse pertinents, pensez également à voter en cliquant sur le bouton vert ci-dessous.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    Je m'incruste dans cette intervention et peut-être que quelque chose m'a échappé mais il me semble qu'il n'est pas indispensable de passer par une variable booléenne dans le cas présent.
    ToggleButton.value étant déjà une valeur Booléenne, je propose une simplification du code déjà proposé.
    En module1, ajouté un argument IsFullScreen à la procédure AgrandirReduire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit ' commentaire de ce que fait le module
    ' Public IsFullScreen As Boolean ' Représente l'état du ToggleButton1 False par défaut
    Sub AgrandirReduire(IsFullScreen As Boolean)
      Application.DisplayFormulaBar = False ' déjà fait dans Workbook_Open() ?
      Application.DisplayFullScreen = IsFullScreen
      If Not IsFullScreen Then
        With Application
        .WindowState = xlNormal ' Pourrait être fait uniquement dans Workbook_Open()
        .Width = 185: .Height = 185 ' Idem
        End With
      End If
      ActiveWindow.ScrollRow = 1: ActiveWindow.ScrollColumn = 1 ' déjà fait dans Workbook_Open() ?
    End Sub
    Dans l'objet Feuil1, réduction du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Explicit
    Sub ToggleButton1_Click()
      With ToggleButton1
      .Caption = IIf(.Value, "Réduire", "Agrandir")
      .Accelerator = IIf(.Value, "P", "D")
      AgrandirReduire .Value
      End With
    End Sub
    Dans l'objet ThisWorkBook, faire appel à la procédure AgrandirReduire en passant comme argument la propriété Value du ToggleButton1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
     Application.DisplayFormulaBar = False
     ActiveWindow.Zoom = 135
     Module1.AgrandirReduire Feuil1.ToggleButton1.Value
     ActiveWindow.ScrollRow = 1
     ActiveWindow.ScrollColumn = 1
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par XceSs Voir le message
    Exact j'y avais pas pensé merci

    mais ça marche pas ça me met erreur dans module caché thisworkbook
    (..)
    j'ai raté l'édition du message ....

    il faut modifier ta procédure AgrandirRéduire en précisant le nom de la feuille devant ToggleButton1...

    Citation Envoyé par XceSs Voir le message
    Dans module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub AgrandirRéduire()
    Application.DisplayFormulaBar = False
    If Feuil1.ToggleButton1.Value = True Then
    (...)
    tu peu aussi créer passe par une varaible locale "ToggleButton1" :

    et donc en rajoutant 2 lignes de codes ton code fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Explicit 'Permet de détecter  les problèmes de portées de variables
    Sub AgrandirRéduire()
     
    Dim ToggleButton1 As ToggleButton
    Set ToggleButton1 = Feuil1.ToggleButton1
    Application.DisplayFormulaBar = False
    (..)




  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 90
    Points
    90
    Par défaut
    Merci de votre aide, ça fonctionne

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

Discussions similaires

  1. [XL-2003] Ouvrir le fichier sans cliquer sur "Activer les macros"
    Par Alexandra 01 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/07/2010, 11h33
  2. [XL-2007] Possibilité de faire activer des macros par un bouton ?
    Par Scatmax dans le forum Excel
    Réponses: 2
    Dernier message: 19/05/2010, 08h27
  3. controler l'ouverture d'un fichier
    Par pink111 dans le forum Général Python
    Réponses: 1
    Dernier message: 09/02/2010, 21h30
  4. bouton de control + macro
    Par Saxclyde dans le forum IHM
    Réponses: 2
    Dernier message: 02/10/2007, 16h31
  5. comment activer/desactiver un bouton de controle
    Par OyyoDams dans le forum MFC
    Réponses: 17
    Dernier message: 09/04/2006, 11h15

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