Cases à cocher optionnelles

Le
GGAL
Bonjour,

J'ai trois cases à cocher sur une feuille, associées à une macro qui
fonctionne un peu comme des cases optionnelles, avec cette différence : soit
toutes sont désactivées, soit une seule est activée.
Une case par ligne (i) et la cellule liée "Ai", et les macros associées à
chaque case :

Sub CT_1_QuandClic()
If Range("a1") = True Then
Range("a2") = False
Range("a3") = False
End If
ct_B
End Sub

Sub CT_2_QuandClic()
If Range("a2") = True Then
Range("a1") = False
Range("a3") = False
End If
ct_B
End Sub

Sub CT_3_QuandClic()
If Range("a3") = True Then
Range("a1") = False
Range("a2") = False
End If
ct_B
End Sub

Sub ct_B()
For Each CELL In Range("a1:a3")
j = CELL.Row
If CELL = True Then
Range("b1") = j ^ 2
Exit Sub
Else
Range("b1") = 0
End If
Next
End Sub

Évidemment, si je dispose de 20 cases, c'est pénible. Je souhaiterais donc
n'avoir qu'une seule procédure.

Merci d'avance

GGAL
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #19103361
bonjour GGAL,

utilise des Case d'option au lieu des Case à cocher

isabelle

GGAL a écrit :
Bonjour,

J'ai trois cases à cocher sur une feuille, associées à une macro qui
fonctionne un peu comme des cases optionnelles, avec cette différence : soit
toutes sont désactivées, soit une seule est activée.
Une case par ligne (i) et la cellule liée "Ai", et les macros associées à
chaque case :

Sub CT_1_QuandClic()
If Range("a1") = True Then
Range("a2") = False
Range("a3") = False
End If
ct_B
End Sub

Sub CT_2_QuandClic()
If Range("a2") = True Then
Range("a1") = False
Range("a3") = False
End If
ct_B
End Sub

Sub CT_3_QuandClic()
If Range("a3") = True Then
Range("a1") = False
Range("a2") = False
End If
ct_B
End Sub

Sub ct_B()
For Each CELL In Range("a1:a3")
j = CELL.Row
If CELL = True Then
Range("b1") = j ^ 2
Exit Sub
Else
Range("b1") = 0
End If
Next
End Sub

Évidemment, si je dispose de 20 cases, c'est pénible. Je souhaiterais donc
n'avoir qu'une seule procédure.

Merci d'avance

GGAL



GGAL
Le #19103641
Si j'utilise des cases option, j'aurais toujours une des cases activées.
Dans mon cas je veux soit aucune case activée, soit une seule case activée.
GGAL

"isabelle" a écrit :

bonjour GGAL,

utilise des Case d'option au lieu des Case à cocher

isabelle

GGAL a écrit :
> Bonjour,
>
> J'ai trois cases à cocher sur une feuille, associées à une macro qui
> fonctionne un peu comme des cases optionnelles, avec cette différence : soit
> toutes sont désactivées, soit une seule est activée.
> Une case par ligne (i) et la cellule liée "Ai", et les macros associées à
> chaque case :
>
> Sub CT_1_QuandClic()
> If Range("a1") = True Then
> Range("a2") = False
> Range("a3") = False
> End If
> ct_B
> End Sub
>
> Sub CT_2_QuandClic()
> If Range("a2") = True Then
> Range("a1") = False
> Range("a3") = False
> End If
> ct_B
> End Sub
>
> Sub CT_3_QuandClic()
> If Range("a3") = True Then
> Range("a1") = False
> Range("a2") = False
> End If
> ct_B
> End Sub
>
> Sub ct_B()
> For Each CELL In Range("a1:a3")
> j = CELL.Row
> If CELL = True Then
> Range("b1") = j ^ 2
> Exit Sub
> Else
> Range("b1") = 0
> End If
> Next
> End Sub
>
> Évidemment, si je dispose de 20 cases, c'est pénible. Je souhaiterais donc
> n'avoir qu'une seule procédure.
>
> Merci d'avance
>
> GGAL
>



isabelle
Le #19103611
bonjour GGAL,

pour désélectionner tout les cases :

Sub Macro1()
For i = 1 To ActiveSheet.OLEObjects.Count
ActiveSheet.OLEObjects("OptionButton" & i).Object.Value = False
Next
End Sub

isabelle

GGAL a écrit :
Si j'utilise des cases option, j'aurais toujours une des cases activées.
Dans mon cas je veux soit aucune case activée, soit une seule case activée.
GGAL

"isabelle" a écrit :


bonjour GGAL,

utilise des Case d'option au lieu des Case à cocher

isabelle

GGAL a écrit :

Bonjour,

J'ai trois cases à cocher sur une feuille, associées à une macro qui
fonctionne un peu comme des cases optionnelles, avec cette différence : soit
toutes sont désactivées, soit une seule est activée.
Une case par ligne (i) et la cellule liée "Ai", et les macros associées à
chaque case :

Sub CT_1_QuandClic()
If Range("a1") = True Then
Range("a2") = False
Range("a3") = False
End If
ct_B
End Sub

Sub CT_2_QuandClic()
If Range("a2") = True Then
Range("a1") = False
Range("a3") = False
End If
ct_B
End Sub

Sub CT_3_QuandClic()
If Range("a3") = True Then
Range("a1") = False
Range("a2") = False
End If
ct_B
End Sub

Sub ct_B()
For Each CELL In Range("a1:a3")
j = CELL.Row
If CELL = True Then
Range("b1") = j ^ 2
Exit Sub
Else
Range("b1") = 0
End If
Next
End Sub

Évidemment, si je dispose de 20 cases, c'est pénible. Je souhaiterais donc
n'avoir qu'une seule procédure.

Merci d'avance

GGAL








GGAL
Le #19103591
Non ce n'est pas ça.
J'ai une solution partielle, qui fonctionne du bas vers le haut, mais pas
dans l'autre sens :

Sub ct_x()
For h = 1 To 3
If Range("a" & h) = True Then
For j = 1 To 3
If j <> h Then Range("a" & j) = False
Next j
Range("b1") = h ^ 2
Exit Sub
Else
Range("b1") = 0
End If
Next h
End Sub


GGAL

"isabelle" a écrit :

bonjour GGAL,

pour désélectionner tout les cases :

Sub Macro1()
For i = 1 To ActiveSheet.OLEObjects.Count
ActiveSheet.OLEObjects("OptionButton" & i).Object.Value = False
Next
End Sub

isabelle

GGAL a écrit :
> Si j'utilise des cases option, j'aurais toujours une des cases activées.
> Dans mon cas je veux soit aucune case activée, soit une seule case activée.
> GGAL
>
> "isabelle" a écrit :
>
>
>> bonjour GGAL,
>>
>> utilise des Case d'option au lieu des Case à cocher
>>
>> isabelle
>>
>> GGAL a écrit :
>>
>>> Bonjour,
>>>
>>> J'ai trois cases à cocher sur une feuille, associées à une macro qui
>>> fonctionne un peu comme des cases optionnelles, avec cette différence : soit
>>> toutes sont désactivées, soit une seule est activée.
>>> Une case par ligne (i) et la cellule liée "Ai", et les macros associées à
>>> chaque case :
>>>
>>> Sub CT_1_QuandClic()
>>> If Range("a1") = True Then
>>> Range("a2") = False
>>> Range("a3") = False
>>> End If
>>> ct_B
>>> End Sub
>>>
>>> Sub CT_2_QuandClic()
>>> If Range("a2") = True Then
>>> Range("a1") = False
>>> Range("a3") = False
>>> End If
>>> ct_B
>>> End Sub
>>>
>>> Sub CT_3_QuandClic()
>>> If Range("a3") = True Then
>>> Range("a1") = False
>>> Range("a2") = False
>>> End If
>>> ct_B
>>> End Sub
>>>
>>> Sub ct_B()
>>> For Each CELL In Range("a1:a3")
>>> j = CELL.Row
>>> If CELL = True Then
>>> Range("b1") = j ^ 2
>>> Exit Sub
>>> Else
>>> Range("b1") = 0
>>> End If
>>> Next
>>> End Sub
>>>
>>> Évidemment, si je dispose de 20 cases, c'est pénible. Je souhaiterais donc
>>> n'avoir qu'une seule procédure.
>>>
>>> Merci d'avance
>>>
>>> GGAL
>>>
>>>



MichDenis
Le #19103581
Bonjour GGal,

Je n'ai pas trop compris ce que tu veux réellement ...

Mais si tu utilises des boutons radio émanant de la boîte à outils formulaires
et que tu les déposes directement sur la feuille de calcul, tous ces boutons
vont avoir la même cellule liée. Et, dans cette cellule liée va s'afficher le
numéro du bouton radio activé. Habituellement, ce numéro est affecté à ces
boutons radio par l'ordre de création.

En conséquence, si tu saisis dans la cellule liée 3, c'est le bouton radio No3
(ordre de création) qui va être activé. Si la cellule liée est vide, aucun des
boutons radio ne sera activé.

En conséquence, tu n'as qu'à gérer le contenu de la cellule liée pour activer ou
désactiver le bouton radio.

Ma question, que veux-tu faire ?





"GGAL"
Bonjour,

J'ai trois cases à cocher sur une feuille, associées à une macro qui
fonctionne un peu comme des cases optionnelles, avec cette différence : soit
toutes sont désactivées, soit une seule est activée.
Une case par ligne (i) et la cellule liée "Ai", et les macros associées à
chaque case :

Sub CT_1_QuandClic()
If Range("a1") = True Then
Range("a2") = False
Range("a3") = False
End If
ct_B
End Sub

Sub CT_2_QuandClic()
If Range("a2") = True Then
Range("a1") = False
Range("a3") = False
End If
ct_B
End Sub

Sub CT_3_QuandClic()
If Range("a3") = True Then
Range("a1") = False
Range("a2") = False
End If
ct_B
End Sub

Sub ct_B()
For Each CELL In Range("a1:a3")
j = CELL.Row
If CELL = True Then
Range("b1") = j ^ 2
Exit Sub
Else
Range("b1") = 0
End If
Next
End Sub

Évidemment, si je dispose de 20 cases, c'est pénible. Je souhaiterais donc
n'avoir qu'une seule procédure.

Merci d'avance

GGAL
isabelle
Le #19103881
http://cjoint.com/?eoffjIjvbe
isabelle

GGAL a écrit :
Non ce n'est pas ça.
J'ai une solution partielle, qui fonctionne du bas vers le haut, mais pas
dans l'autre sens :

Sub ct_x()
For h = 1 To 3
If Range("a" & h) = True Then
For j = 1 To 3
If j <> h Then Range("a" & j) = False
Next j
Range("b1") = h ^ 2
Exit Sub
Else
Range("b1") = 0
End If
Next h
End Sub


GGAL

"isabelle" a écrit :


bonjour GGAL,

pour désélectionner tout les cases :

Sub Macro1()
For i = 1 To ActiveSheet.OLEObjects.Count
ActiveSheet.OLEObjects("OptionButton" & i).Object.Value = False
Next
End Sub

isabelle

GGAL a écrit :

Si j'utilise des cases option, j'aurais toujours une des cases activées.
Dans mon cas je veux soit aucune case activée, soit une seule case activée.
GGAL

"isabelle" a écrit :



bonjour GGAL,

utilise des Case d'option au lieu des Case à cocher

isabelle

GGAL a écrit :


Bonjour,

J'ai trois cases à cocher sur une feuille, associées à une macro qui
fonctionne un peu comme des cases optionnelles, avec cette différence : soit
toutes sont désactivées, soit une seule est activée.
Une case par ligne (i) et la cellule liée "Ai", et les macros associées à
chaque case :

Sub CT_1_QuandClic()
If Range("a1") = True Then
Range("a2") = False
Range("a3") = False
End If
ct_B
End Sub

Sub CT_2_QuandClic()
If Range("a2") = True Then
Range("a1") = False
Range("a3") = False
End If
ct_B
End Sub

Sub CT_3_QuandClic()
If Range("a3") = True Then
Range("a1") = False
Range("a2") = False
End If
ct_B
End Sub

Sub ct_B()
For Each CELL In Range("a1:a3")
j = CELL.Row
If CELL = True Then
Range("b1") = j ^ 2
Exit Sub
Else
Range("b1") = 0
End If
Next
End Sub

Évidemment, si je dispose de 20 cases, c'est pénible. Je souhaiterais donc
n'avoir qu'une seule procédure.

Merci d'avance

GGAL













GGAL
Le #19103871
En effet les cases à cocher sont sur la feuille de calcul sur une ligne, et
la cellule liée à cette case est sur la même ligne.
Si une case est cochée, les autres sont décochées. Si je reclique sur une
case déjà cochée, toutes les cases sont décochées.
PS : Ton texte est difficile à lire : toutes les lettres accentuées ont
disparu.

GGAL

"MichDenis" a écrit :

Bonjour GGal,

Je n'ai pas trop compris ce que tu veux rellement ...

Mais si tu utilises des boutons radio manant de la bote outils formulaires
et que tu les dposes directement sur la feuille de calcul, tous ces boutons
vont avoir la mme cellule lie. Et, dans cette cellule lie va s'afficher le
numro du bouton radio activ. Habituellement, ce numro est affect ces
boutons radio par l'ordre de cration.

En consquence, si tu saisis dans la cellule lie 3, c'est le bouton radio No3
(ordre de cration) qui va tre activ. Si la cellule lie est vide, aucun des
boutons radio ne sera activ.

En consquence, tu n'as qu' grer le contenu de la cellule lie pour activer ou
dsactiver le bouton radio.

Ma question, que veux-tu faire ?





"GGAL"
Bonjour,

J'ai trois cases cocher sur une feuille, associes une macro qui
fonctionne un peu comme des cases optionnelles, avec cette diffrence : soit
toutes sont dsactives, soit une seule est active.
Une case par ligne (i) et la cellule lie "Ai", et les macros associes
chaque case :

Sub CT_1_QuandClic()
If Range("a1") = True Then
Range("a2") = False
Range("a3") = False
End If
ct_B
End Sub

Sub CT_2_QuandClic()
If Range("a2") = True Then
Range("a1") = False
Range("a3") = False
End If
ct_B
End Sub

Sub CT_3_QuandClic()
If Range("a3") = True Then
Range("a1") = False
Range("a2") = False
End If
ct_B
End Sub

Sub ct_B()
For Each CELL In Range("a1:a3")
j = CELL.Row
If CELL = True Then
Range("b1") = j ^ 2
Exit Sub
Else
Range("b1") = 0
End If
Next
End Sub

videmment, si je dispose de 20 cases, c'est pnible. Je souhaiterais donc
n'avoir qu'une seule procdure.

Merci d'avance

GGAL




GGAL
Le #19103841
http://cjoint.com/?eofYbZYQaw

L'exemple ci-joint fonctionne. Mais si j'ai une vingtaine de cases, la
programmation sera fastidieuse. Je souhaiterais donc une seule procédure
compacte et élégante.

GGAL

"MichDenis" a écrit :

Désolé, si tu as un problème, je ne sais pas qu'elle en est sa nature !

En changeant la valeur d'une cellule, tu affectes quel bouton radio
est activé et, si la cellule est vide, aucun bouton radio est activé.

Si tu veux autre chose, tu ne l'exprime pas !





"GGAL" de discussion :
En effet les cases à cocher sont sur la feuille de calcul sur une ligne,
et
la cellule liée à cette case est sur la même ligne.
Si une case est cochée, les autres sont décochées. Si je reclique sur
une
case déjà cochée, toutes les cases sont décochées.
PS : Ton texte est difficile à lire : toutes les lettres accentuées ont
disparu.

GGAL

"MichDenis" a écrit :

> Bonjour GGal,
>
> Je n'ai pas trop compris ce que tu veux rellement ...
>
> Mais si tu utilises des boutons radio manant de la bote outils
formulaires
> et que tu les dposes directement sur la feuille de calcul, tous ces
boutons
> vont avoir la mme cellule lie. Et, dans cette cellule lie va s'afficher
le
> numro du bouton radio activ. Habituellement, ce numro est affect ces
> boutons radio par l'ordre de cration.
>
> En consquence, si tu saisis dans la cellule lie 3, c'est le bouton radio
No3
> (ordre de cration) qui va tre activ. Si la cellule lie est vide, aucun
des
> boutons radio ne sera activ.
>
> En consquence, tu n'as qu' grer le contenu de la cellule lie pour
activer ou
> dsactiver le bouton radio.
>
> Ma question, que veux-tu faire ?
>
>
>
>
>
> "GGAL" de discussion :
>
> Bonjour,
>
> J'ai trois cases cocher sur une feuille, associes une macro qui
> fonctionne un peu comme des cases optionnelles, avec cette diffrence :
soit
> toutes sont dsactives, soit une seule est active.
> Une case par ligne (i) et la cellule lie "Ai", et les macros associes
> chaque case :
>
> Sub CT_1_QuandClic()
> If Range("a1") = True Then
> Range("a2") = False
> Range("a3") = False
> End If
> ct_B
> End Sub
>
> Sub CT_2_QuandClic()
> If Range("a2") = True Then
> Range("a1") = False
> Range("a3") = False
> End If
> ct_B
> End Sub
>
> Sub CT_3_QuandClic()
> If Range("a3") = True Then
> Range("a1") = False
> Range("a2") = False
> End If
> ct_B
> End Sub
>
> Sub ct_B()
> For Each CELL In Range("a1:a3")
> j = CELL.Row
> If CELL = True Then
> Range("b1") = j ^ 2
> Exit Sub
> Else
> Range("b1") = 0
> End If
> Next
> End Sub
>
> videmment, si je dispose de 20 cases, c'est pnible. Je souhaiterais donc
> n'avoir qu'une seule procdure.
>
> Merci d'avance
>
> GGAL
>
>



GGAL
Le #19104381
C'est cela dans le fonctionnement des checkbox !
Toutefois je n'arrive pas à placer une formule en fonction des cellules
liées :

A1=vrai, alors B1=1 (en fonction du numéro de ligne)
A2=vrai, alors B1=2
A3=vrai, alors B1=3
et si A1¢£úux, alors B1=0


GGAL

"MichDenis" a écrit :

Tu peux affecter une même macro pour tous tes boutons CheckBox
émanant de ta boîte d'outils formulaire. Pour ce faire, tu peux utiliser
ce genre de procédure :

Dans une module standard, tu copies ces deux macros:
L'exemple utilise la Feuil1, évidemment il faudra que tu adaptes.
L'exemple suppose que tous tes checkbox sont affectés à la même macro.

La conséquence de ceci, tous tes checkbox vont se comporter comme
des boutons radio.

'--------------------------------
Sub Affecter_Une_Macro_au_CheckBox()

Dim Nom As String
With Feuil1 'Nom Feuille à adapter
For Each sh In .Shapes
With sh
If TypeName(.OLEFormat.Object) = "CheckBox" Then
.OLEFormat.Object.OnAction = "MacroCheckBox"
End If
End With
Next
End With

End Sub
'--------------------------------

'--------------------------------
Sub MacroCheckBox()
Dim Nom As String
Nom = Replace(Application.Caller, "Case à cocher", "Check Box")
With Feuil1 'Nom Feuille à adapter
For Each sh In .Shapes
With sh
If TypeName(.OLEFormat.Object) = "CheckBox" Then
If .OLEFormat.Object.Name <> Nom Then
.OLEFormat.Object.Value = 0
End If
End If
End With
Next
End With
End Sub
'--------------------------------




"GGAL" de discussion :
http://cjoint.com/?eofYbZYQaw

L'exemple ci-joint fonctionne. Mais si j'ai une vingtaine de cases, la
programmation sera fastidieuse. Je souhaiterais donc une seule procédure
compacte et élégante.

GGAL

"MichDenis" a écrit :

> Désolé, si tu as un problème, je ne sais pas qu'elle en est sa nature
!
>
> En changeant la valeur d'une cellule, tu affectes quel bouton radio
> est activé et, si la cellule est vide, aucun bouton radio est activé.
>
> Si tu veux autre chose, tu ne l'exprime pas !
>
>
>
>
>
> "GGAL" groupe
> de discussion :
> En effet les cases à cocher sont sur la feuille de calcul sur une
ligne,
> et
> la cellule liée à cette case est sur la même ligne.
> Si une case est cochée, les autres sont décochées. Si je reclique sur
> une
> case déjà cochée, toutes les cases sont décochées.
> PS : Ton texte est difficile à lire : toutes les lettres accentuées
ont
> disparu.
>
> GGAL
>
> "MichDenis" a écrit :
>
> > Bonjour GGal,
> >
> > Je n'ai pas trop compris ce que tu veux rellement ...
> >
> > Mais si tu utilises des boutons radio manant de la bote outils
> formulaires
> > et que tu les dposes directement sur la feuille de calcul, tous ces
> boutons
> > vont avoir la mme cellule lie. Et, dans cette cellule lie va
s'afficher
> le
> > numro du bouton radio activ. Habituellement, ce numro est affect ces
> > boutons radio par l'ordre de cration.
> >
> > En consquence, si tu saisis dans la cellule lie 3, c'est le bouton
radio
> No3
> > (ordre de cration) qui va tre activ. Si la cellule lie est vide, aucun
> des
> > boutons radio ne sera activ.
> >
> > En consquence, tu n'as qu' grer le contenu de la cellule lie pour
> activer ou
> > dsactiver le bouton radio.
> >
> > Ma question, que veux-tu faire ?
> >
> >
> >
> >
> >
> > "GGAL" groupe
> de discussion :
> >
> > Bonjour,
> >
> > J'ai trois cases cocher sur une feuille, associes une macro qui
> > fonctionne un peu comme des cases optionnelles, avec cette diffrence :
> soit
> > toutes sont dsactives, soit une seule est active.
> > Une case par ligne (i) et la cellule lie "Ai", et les macros associes
> > chaque case :
> >
> > Sub CT_1_QuandClic()
> > If Range("a1") = True Then
> > Range("a2") = False
> > Range("a3") = False
> > End If
> > ct_B
> > End Sub
> >
> > Sub CT_2_QuandClic()
> > If Range("a2") = True Then
> > Range("a1") = False
> > Range("a3") = False
> > End If
> > ct_B
> > End Sub
> >
> > Sub CT_3_QuandClic()
> > If Range("a3") = True Then
> > Range("a1") = False
> > Range("a2") = False
> > End If
> > ct_B
> > End Sub
> >
> > Sub ct_B()
> > For Each CELL In Range("a1:a3")
> > j = CELL.Row
> > If CELL = True Then
> > Range("b1") = j ^ 2
> > Exit Sub
> > Else
> > Range("b1") = 0
> > End If
> > Next
> > End Sub
> >
> > videmment, si je dispose de 20 cases, c'est pnible. Je souhaiterais
donc
> > n'avoir qu'une seule procdure.
> >
> > Merci d'avance
> >
> > GGAL
> >
> >
>



GGAL
Le #19105011
OK.

Entre-temps, j'ai un peu réféchi et complété la macro.
Merci pour tout.

GGAL


Sub MacroCheckBox()
Dim Nom As String
Nom = Replace(Application.Caller, "Case à cocher", "Check Box")
With ActiveSheet
For Each sh In .Shapes
With sh
If TypeName(.OLEFormat.Object) = "CheckBox" Then
If .OLEFormat.Object.Name <> Nom Then
.OLEFormat.Object.Value = 0
End If
End If
End With
Next
--------------------------------------------------
For Each cell In Range("a1:a3")
j = cell.Row
If Range("a" & j) = True Then
Range("b1") = j 'ou autre chose
Exit Sub
Else
Range("b1") = 0 'ou autre chose
End If
Next
---------------------------------------------------
End With
End Sub

"MichDenis" a écrit :

Si tu as 5 cases à cocher et chacune d'elles à une cellule liée
de A1 à A5, dans la cellule de ton choix, tu peux utiliser ce
type de formule pour trouver le numéro de la ligne
où la case à cocher est activée.

=SI(ESTNA(EQUIV(VRAI;A1:A5;0));0;EQUIV(VRAI;A1:A5;0))

Si aucune case est cochée, la formule retourne 0





"GGAL" de discussion :
C'est cela dans le fonctionnement des checkbox !
Toutefois je n'arrive pas à placer une formule en fonction des cellules
liées :

A1=vrai, alors B1=1 (en fonction du numéro de ligne)
A2=vrai, alors B1=2
A3=vrai, alors B1=3
et si A1¢£úux, alors B1=0


GGAL

"MichDenis" a écrit :

> Tu peux affecter une même macro pour tous tes boutons CheckBox
> émanant de ta boîte d'outils formulaire. Pour ce faire, tu peux
utiliser
> ce genre de procédure :
>
> Dans une module standard, tu copies ces deux macros:
> L'exemple utilise la Feuil1, évidemment il faudra que tu adaptes.
> L'exemple suppose que tous tes checkbox sont affectés à la même
macro.
>
> La conséquence de ceci, tous tes checkbox vont se comporter comme
> des boutons radio.
>
> '--------------------------------
> Sub Affecter_Une_Macro_au_CheckBox()
>
> Dim Nom As String
> With Feuil1 'Nom Feuille à adapter
> For Each sh In .Shapes
> With sh
> If TypeName(.OLEFormat.Object) = "CheckBox" Then
> .OLEFormat.Object.OnAction = "MacroCheckBox"
> End If
> End With
> Next
> End With
>
> End Sub
> '--------------------------------
>
> '--------------------------------
> Sub MacroCheckBox()
> Dim Nom As String
> Nom = Replace(Application.Caller, "Case à cocher", "Check Box")
> With Feuil1 'Nom Feuille à adapter
> For Each sh In .Shapes
> With sh
> If TypeName(.OLEFormat.Object) = "CheckBox" Then
> If .OLEFormat.Object.Name <> Nom Then
> .OLEFormat.Object.Value = 0
> End If
> End If
> End With
> Next
> End With
> End Sub
> '--------------------------------
>
>
>
>
> "GGAL" groupe
> de discussion :
> http://cjoint.com/?eofYbZYQaw
>
> L'exemple ci-joint fonctionne. Mais si j'ai une vingtaine de cases, la
> programmation sera fastidieuse. Je souhaiterais donc une seule
procédure
> compacte et élégante.
>
> GGAL
>
> "MichDenis" a écrit :
>
> > Désolé, si tu as un problème, je ne sais pas qu'elle en est sa
nature
> !
> >
> > En changeant la valeur d'une cellule, tu affectes quel bouton radio
> > est activé et, si la cellule est vide, aucun bouton radio est
activé.
> >
> > Si tu veux autre chose, tu ne l'exprime pas !
> >
> >
> >
> >
> >
> > "GGAL" > groupe
> > de discussion :
> > En effet les cases à cocher sont sur la feuille de calcul sur une
> ligne,
> > et
> > la cellule liée à cette case est sur la même ligne.
> > Si une case est cochée, les autres sont décochées. Si je reclique
sur
> > une
> > case déjà cochée, toutes les cases sont décochées.
> > PS : Ton texte est difficile à lire : toutes les lettres accentuées
> ont
> > disparu.
> >
> > GGAL
> >
> > "MichDenis" a écrit :
> >
> > > Bonjour GGal,
> > >
> > > Je n'ai pas trop compris ce que tu veux rellement ...
> > >
> > > Mais si tu utilises des boutons radio manant de la bote outils
> > formulaires
> > > et que tu les dposes directement sur la feuille de calcul, tous ces
> > boutons
> > > vont avoir la mme cellule lie. Et, dans cette cellule lie va
> s'afficher
> > le
> > > numro du bouton radio activ. Habituellement, ce numro est affect
ces
> > > boutons radio par l'ordre de cration.
> > >
> > > En consquence, si tu saisis dans la cellule lie 3, c'est le bouton
> radio
> > No3
> > > (ordre de cration) qui va tre activ. Si la cellule lie est vide,
aucun
> > des
> > > boutons radio ne sera activ.
> > >
> > > En consquence, tu n'as qu' grer le contenu de la cellule lie pour
> > activer ou
> > > dsactiver le bouton radio.
> > >
> > > Ma question, que veux-tu faire ?
> > >
> > >
> > >
> > >
> > >
> > > "GGAL" > groupe
> > de discussion :
> > >
> > > Bonjour,
> > >
> > > J'ai trois cases cocher sur une feuille, associes une macro qui
> > > fonctionne un peu comme des cases optionnelles, avec cette diffrence
:
> > soit
> > > toutes sont dsactives, soit une seule est active.
> > > Une case par ligne (i) et la cellule lie "Ai", et les macros
associes
> > > chaque case :
> > >
> > > Sub CT_1_QuandClic()
> > > If Range("a1") = True Then
> > > Range("a2") = False
> > > Range("a3") = False
> > > End If
> > > ct_B
> > > End Sub
> > >
> > > Sub CT_2_QuandClic()
> > > If Range("a2") = True Then
> > > Range("a1") = False
> > > Range("a3") = False
> > > End If
> > > ct_B
> > > End Sub
> > >
> > > Sub CT_3_QuandClic()
> > > If Range("a3") = True Then
> > > Range("a1") = False
> > > Range("a2") = False
> > > End If
> > > ct_B
> > > End Sub
> > >
> > > Sub ct_B()
> > > For Each CELL In Range("a1:a3")
> > > j = CELL.Row
> > > If CELL = True Then
> > > Range("b1") = j ^ 2
> > > Exit Sub
> > > Else
> > > Range("b1") = 0
> > > End If
> > > Next
> > > End Sub
> > >
> > > videmment, si je dispose de 20 cases, c'est pnible. Je souhaiterais
> donc
> > > n'avoir qu'une seule procdure.
> > >
> > > Merci d'avance
> > >
> > > GGAL
> > >
> > >
> >
>



Publicité
Poster une réponse
Anonyme