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

checkbox dans userform

knaekes

XLDnaute Occasionnel
Bonjour,

je souhaite que lorsque je coche une checkbox dans le userfom, que toutes les autres case soient décochées. J'ai écris une macro mais je ne trouve pas l'erreur !
voici le fichier avec les macros

merci
 

Pièces jointes

  • checkbox.xlsm
    25.8 KB · Affichages: 50
  • checkbox.xlsm
    25.8 KB · Affichages: 57
  • checkbox.xlsm
    25.8 KB · Affichages: 51

Pierrot93

XLDnaute Barbatruc
Re : checkbox dans userform

Bonjour,

pas ouvert ton fichier, mais plutôt que des "checkbox" utiliser des "optionbuttons", ces objets s'excluent l'un l'autre..

bon après midi
@+

Edition : bonjour Dull, en effet...
 
Dernière édition:

Dull

XLDnaute Barbatruc
Re : checkbox dans userform

Salut knaekes, le Forum

Petite question... pourquoi ne pas utiliser des OptionButtons en lieu et place de CheckBoxes

A te lire

EDITION:
Salut Pierrot... même question

Bonne Journée
 

job75

XLDnaute Barbatruc
Re : checkbox dans userform

Bonjour knaekes, salut Pierrot, Dull

CheckBox ou OptionButton peu importe, ce sont 12 objets à traiter.

Et plutôt que d'écrire 12 macros identiques utiliser un Module de classe.

A+
 

knaekes

XLDnaute Occasionnel
Re : checkbox dans userform

Bonjour à tous

en fait ma syntaxe de départ était mauvaise:
j'ai remplacé checkbox_click par checkbox_change
ce qui donne:

Code:
Private Sub CheckBox1_Change()
If UserForm1.Controls("CheckBox" & 1) = True Then
For i = 1 To 12
    If i = 1 Then GoTo suite
    UserForm1.Controls("CheckBox" & i) = False
suite:
Next i
End If
End Sub

Private Sub CheckBox2_Change()
If UserForm1.Controls("CheckBox" & 2) = True Then
For i = 1 To 12
    If i = 2 Then GoTo suite
    UserForm1.Controls("CheckBox" & i) = False
suite:
Next i
End If
End Sub
Private Sub CheckBox3_Change()
If UserForm1.Controls("CheckBox" & 3) = True Then
For i = 1 To 12
    If i = 3 Then GoTo suite
    UserForm1.Controls("CheckBox" & i) = False
suite:
Next i
End If
End Sub
Private Sub CheckBox4_Change()
If UserForm1.Controls("CheckBox" & 4) = True Then
For i = 1 To 12
    If i = 4 Then GoTo suite
    UserForm1.Controls("CheckBox" & i) = False
suite:
Next i
End If
End Sub
Private Sub CheckBox5_Change()
If UserForm1.Controls("CheckBox" & 5) = True Then
For i = 1 To 12
    If i = 1 Then GoTo suite
    UserForm1.Controls("CheckBox" & 5) = False
suite:
Next i
End If
End Sub

cela fonctionne, mais comme l'a signalé job 75 cela fait x macro semblables, et serait à priori optimisable en utilisant un module de classe. Malheureusement je ne n'en ai pour l'instant aucune notion (il faudra que j'y jette un coup d'oeil prochainement )
 

job75

XLDnaute Barbatruc
Re : checkbox dans userform

Bonjour Laetitia

Pourquoi ne pas utiliser classiquement l'événement Click :

Code:
Private Sub cbx_Click()
Dim i As Byte, c As Control
If cbx Then
  For i = 1 To 12
    Set c = cbx.Parent.Controls("CheckBox" & i)
    If c.Name <> cbx.Name Then c = False
  Next
End If
End Sub
Fichier joint.

 

Pièces jointes

  • check(1).xls
    53 KB · Affichages: 52

laetitia90

XLDnaute Barbatruc
Re : checkbox dans userform

re tous

pour l'ami Job
pas de raison importante dans ce cas précis
je me suis dit au lieu de prendre le 3 ieme evenement "click" pourquoi pas prendre le premier
on aurait peu prendre le deuxieme mousse Up

tu sais j'ecris au "Feeling " comme je le ressens a l'instant T
bonne soirée
a+ leti

ps : je crois bien que l'ami knaekes a meme pas vu qu'on lui a écris un module de classe
 

knaekes

XLDnaute Occasionnel
Re : checkbox dans userform

bonsoir,

si si, j'ai bien vu le module de classe (j'avais simplement oublié de vous remercier)
Mais ça marche à merveille et en plus j'ai appris de nvlles choses
donc merci à vous !
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…