Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

lier des checkbox...

  • Initiateur de la discussion Initiateur de la discussion vidda72
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

V

vidda72

Guest
Bonjour à toutes et tous.
Voici mon problème, je ne trouve pas la solution pour lier des checkbox, sur la même ligne j'ai deux checkbox, fait non fait. Le choix de l'une fait décocher l'autre, malgrés plusieurs sujet à ce sujet 😛, je n'arrive pas, ou ne comprend pas le fonctionnement, pouvez vous s'il vous plait m'aider ou me guider dans ma tâche, merci.
 

Pièces jointes

Re : lier des checkbox...

Bonjour,

Afin d'alléger ton fichier en ne mettant pas x macros, tu peux utiliser les zones de groupe et les option button.
Fonctionnement, dans une zone de groupe il ne peut y avoir qu'un seul option button activé
 

Pièces jointes

Re : lier des checkbox...

Ok, mais avec un userform ? comment créer une zone de groupe? Désolé je suis vraiment débutant et autodidacte, donc pas simple d'apprendre.
 
Re : lier des checkbox...

Bonjour,

Voici une solution très simple, même si un peu longue. Attention les cases à cocher doivent être en activeX et non pour formulaire.

Il y a plus court, mais plus compliqué car il faut jouer avec les modules de classes, mais je ne m'y connais pas trop dans ce domaine.

BàT.

John
 

Pièces jointes

Re : lier des checkbox...

Sinon voici un exemple pour un module de classe.

Pour les tests et démos, ouvrez un nouveau classeur.
Incorporez, l'un en dessous de l'autre, dans la colonne C ...
OptionButton1 et OptionButton2 propriété GroupName = Feuil1A
OptionButton3 et OptionButton4 propriété GroupName = Feuil1B
CheckBox1, CheckBox2 et CheckBox3

Sauvez le classeur sous le nom Collections.xls

Dans un module

Option Explicit
Public Collect As Collection
Public CollectC As Collection


Public Sub InitOption()
Dim Obj As OLEObject
Dim Cl As Classe1
Set Cl = Nothing
Set Collect = New Collection
Workbooks("Collections.xls").Activate
'boucle sur les objets de la Feuil1
For Each Obj In Sheets("Feuil1").OLEObjects
'verifie s'il s'agit d'un OptionButton
If TypeOf Obj.Object Is MSForms.OptionButton Then

Set Cl = New Classe1
Set Cl.OptionButtonGroup = Obj.Object
Collect.Add Cl
End If
Next Obj

End Sub

Public Sub InitCheck()
Dim Obj As OLEObject
Dim CO As Classe1
Set CO = Nothing
Set CollectC = New Collection
Workbooks("Collections.xls").Activate
'boucle sur les objets de la Feuil1
For Each Obj In Sheets("Feuil1").OLEObjects
'verifie s'il s'agit d'une Checkbox
If TypeOf Obj.Object Is MSForms.CheckBox Then

Set CO = New Classe1
Set CO.CheckBoxGroup = Obj.Object
CollectC.Add CO
End If
Next Obj

End Sub

'Routine à appeler pour Initialiser ou Réinitialiser les collections.
'Nécessaire si le code VBA a été modifié.
Sub ActivationCollect()
InitOption
InitCheck
End Sub

Dans un module de classe

Pour ouvrir un module de classe >> Insertion >> Module de classe.
Copiez ce code...

'--------------------------------------
'Dans un module de classe nommé "Classe1"
'
Option Explicit

Public WithEvents OptionButtonGroup As MSForms.OptionButton
Public WithEvents CheckBoxGroup As MSForms.CheckBox


'Evenement Click sur les CheckBox de la feuille de calcul.
Private Sub CheckBoxGroup_Click()

'Renvoie le nom et la valeur de la CheckBox cliquée
MsgBox CheckBoxGroup.Name & ": " & CheckBoxGroup.Value

'Exemple qui renvoie dans la colonne A, la valeur de CheckBox
Cells(CheckBoxGroup.TopLeftCell.Row, 1) = CheckBoxGroup.Value
End Sub

'Evenement Click sur les CheckBox de la feuille de calcul.
Private Sub OptionButtonGroup_Click()

'Renvoie le nom et la valeur de l'OptionButton cliquée
MsgBox OptionButtonGroup.Name & ": " & OptionButtonGroup.GroupName

'Exemple qui renvoie dans la colonne A, la valeur de l'OptionButton
Cells(OptionButtonGroup.TopLeftCell.Row, 1) = OptionButtonGroup.Value
End Sub

Et dans le module du classeur

Private Sub Workbook_Open()
InitOption
InitCheck
End Sub

BàT

John
 
Re : lier des checkbox...

Oui pour toi, enfin si tu y arrives avec ça...

En fait c'est une solution qui peut permettre de n'utiliser qu'un module de classe pour gérer tous les checkbox de ta feuille afin d'éviter à chaque fois de devoir utiliser le "Private Sub CheckBox1_Click()" de chaque checkbox. Ce qui raccourcirai le code 🙂

BàT.

John
 
Re : lier des checkbox...

Ok, mais avec un userform ? comment créer une zone de groupe? Désolé je suis vraiment débutant et autodidacte, donc pas simple d'apprendre.

Pas de soucis, je suis moi même autodidacte et j'apprend encore énormément au contact de ce forum ;-)

Dans un userform, la zone de groupe s'appelle "cadre" ou 'frame" en anglais.
Tu insères un cadre et tu positionnes tes boutons d'option d'option dedans. Toujours la même règle: 1 seul bouton activé par cadre.

Sinon, la zone de groupe se trouve dans la barre d'outils "formulaire" (affichage / barre d'outils / formulaire)
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 macro TCD
Réponses
4
Affichages
366
Réponses
13
Affichages
738
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…