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
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
Déjà tu commence à déplacer le code de ton bouton dans une procédure d'un module standard :
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 MaProcedure (... ton code ..) 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 Sub CommandButton1_Click MaProcedure 'Appel de 'Ma procedure' End sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Workbook_Open() MaProcedure End Sub
Exact j'y avais pas pensé merci
mais ça marche pas ça me met erreur dans module caché thisworkbook
Code :
Dans module standard
A la feuille concernée :
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
Thisworkbook :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sub ToggleButton1_Click() AgrandirRéduire End Sub
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
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.
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 ' 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
On a enlevé de AgrandirReduire() tout ce qui relève du ToggleButton1 que l'on ne peut utiliser que 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 ' 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
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.
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
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
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 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
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
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
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...
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 (..)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager