Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2012, 16h52   #1
Invité de passage
 
Inscription : janvier 2012
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 2
Points : 1
Points : 1
Par défaut Ruban - Contrôles

Bonjour forum !
Voilà le petit soucis que je rencontre et que je traîne depuis un moment..
J'ai fait des modifications sur mon Ruban (XML, VBA..) tout fonctionne très bien à part une chose : je n'arrive pas à modifier le statut d'un contrôle quand j'interagis avec un autre contrôle.
Pour faire simple : sur mon ruban j'ai deux cases à cocher (2 'checkbox'). Je souhaiterais pouvoir cocher l'une et que l'autre se décoche automatiquement.
J'ai essayé de jouer avec les control.ID, getPressed et autres mais sans succès..
Cela est-il possible sur Excel 2007 ou dois-je me contenter de feinter?

Merci pour vos réponses.
acrabouiboui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 21h03   #2
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
Bonjour,

Il faut d'abord mettre l'objet ruban dans une variable avec le onLoad du customUI.
Puis réagir sur onAction des cases à cocher.
InvalidateControl permet de demander la mise à jour d'un contrôle, et donc de lancer les getPressed qui coche ou décoche les cases à cocher en fonction d'une variable.
On est obligé de passer par une variable VBA.

Un exemple :

Code du ruban :
Code xml :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_OnLoad">
    <ribbon startFromScratch="true">
         <tabs>
              <tab id="tab1" label="Onglet test">
                   <group id="group1" label="Group test">
                        <checkBox id="checkBox1" onAction="Ribbon_OnAction_Press" getPressed="Ribbon_GetPressed" label="Case 1"/>
                        <checkBox id="checkBox2" onAction="Ribbon_OnAction_Press" getPressed="Ribbon_GetPressed" label="Case 2"/>
                   </group>
              </tab>
         </tabs>
    </ribbon>
</customUI>

Code VBA :
Code :
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
 
Private bcheckBox1 As Boolean
Private bcheckBox2 As Boolean
Private oRibbonUI As IRibbonUI
 
Sub Ribbon_OnLoad(ribbon As IRibbonUI)
Set oRibbonUI = ribbon
End Sub
 
Sub Ribbon_GetPressed(control As IRibbonControl, ByRef returnValue)
Select Case control.ID
    Case "checkBox1"
        returnValue = bcheckBox1
    Case "checkBox2"
        returnValue = bcheckBox2
End Select
End Sub
 
Sub Ribbon_OnAction_Press(control As IRibbonControl, pressed As Boolean)
Select Case control.ID
    Case "checkBox1"
        bcheckBox1 = pressed
        If bcheckBox1 Then bcheckBox2 = Not pressed
    Case "checkBox2"
        bcheckBox2 = pressed
        If bcheckBox2 Then bcheckBox1 = Not pressed
End Select
oRibbonUI.InvalidateControl "checkBox1"
oRibbonUI.InvalidateControl "checkBox2"
End Sub
Tutoriel ruban Excel :
http://silkyroad.developpez.com/excel/ruban/

bon courage.
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2012, 15h43   #3
Invité de passage
 
Inscription : janvier 2012
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 2
Points : 1
Points : 1
Citation:
Envoyé par Arkham46 Voir le message
InvalidateControl permet de demander la mise à jour d'un contrôle, et donc de lancer les getPressed qui coche ou décoche les cases à cocher en fonction d'une variable.
Bonjour Arkham46 et merci ! c'est l'info qu'il me manquait !
A bientôt pour de nouvelles aventures !
acrabouiboui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h50.


 
 
 
 
Partenaires

Hébergement Web