Dans cette procédure, le bouton (créé dans un onglet personnel) est activé uniquement si le contenu de la cellule A1 contient la valeur 1.
Insérez ce code dans le fichier CustomUI.xml :
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 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="RubanCharge"> <!-- onLoad="RubanCharge" est déclenché lors du chargement du ruban personnalisé. --> <ribbon startFromScratch="false"> <tabs> <tab id="OngletPerso" label="OngletPerso" visible="true"> <group id="Projet01" label="Projet 01"> <!-- onAction="ProcLancement" définit la macro déclenchée lorsque vos cliquez sur le bouton. --> <!-- getEnabled="Bouton1_Enabled" gére la condition d'activation ou de désactivation. --> <button id="Bouton1" label="Lancement" onAction="ProcLancement" size="normal" imageMso="Repeat" getEnabled="Bouton1_Enabled"/> </group> </tab> </tabs> </ribbon> </customUI>
Dans un 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
21
22
23
24
25
26 Option Explicit Public MonRuban As IRibbonUI Public boolResult As Boolean 'Callback for customUI.onLoad 'Est déclenché lors du chargement du ruban personnalisé. Sub RubanCharge(ribbon As IRibbonUI) boolResult = False Set MonRuban = ribbon End Sub 'Callback for Bouton1 onAction 'La procédure déclenchée lorsque vous cliquez sur le bouton. Sub ProcLancement(control As IRibbonControl) MsgBox "ma procédure." End Sub 'Callback for Bouton1 getEnabled 'Active ou désactive le bouton en fonction de la variable boolResult Sub Bouton1_Enabled(control As IRibbonControl, ByRef returnedVal) returnedVal = boolResult End Sub
Dans le module objet Worksheet de la feuille (où vous allez modifier le contenu de la cellule A1):
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 'Evenement Change dans la feuille de calcul. Private Sub Worksheet_Change(ByVal Target As Range) 'Vérifie si la cellule A1 est modifiée et si la cellule contient la valeur 1. If Target.Address = "$A$1" And Target = 1 Then boolResult = True Else boolResult = False End If 'Rafraichit le bouton personnalisé If Not MonRuban Is Nothing Then MonRuban.InvalidateControl "Bouton1" End Sub
Partager