Case à cocher Excel (non-booléenne)
Résolu
bighaze
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
bighaze Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
bighaze Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dois effectuer un travail sur Excel qui nécessite des cases à cocher avec macro mais qui présentent plus de deux état. Je m'explique : j'aimerai que quand l'on clique une fois dessus, la case soit cocher normalement (par exemple) et que en re-cliquant dessus, plutôt que de retourner à son état de base, celle-ci affiche un point, ou une croix, etc... puis, en cliquant une troisième fois, celle-ci soit décochée.
Merci d'avance !
Je dois effectuer un travail sur Excel qui nécessite des cases à cocher avec macro mais qui présentent plus de deux état. Je m'explique : j'aimerai que quand l'on clique une fois dessus, la case soit cocher normalement (par exemple) et que en re-cliquant dessus, plutôt que de retourner à son état de base, celle-ci affiche un point, ou une croix, etc... puis, en cliquant une troisième fois, celle-ci soit décochée.
Merci d'avance !
A voir également:
- Case à cocher Excel (non-booléenne)
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne dans une case excel - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
5 réponses
Bonjour,
si tu prends une case à cocher ActiveX tu peux mettre sa propriété TripleState à True.
Tu auras : non coché, coché grisé, coché.
eric
si tu prends une case à cocher ActiveX tu peux mettre sa propriété TripleState à True.
Tu auras : non coché, coché grisé, coché.
eric
bighaze
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
Merci pour ton aide. Ca m'a beaucoup avancé mais malgré cela je trouve que la différence entre les 3 états n'est pas assez flagrante. J'ai donc essayé de changer la police mais je bloque maintenant sur un autre problème. (je le poste à la suite)
Une case à cocher est booléenne et donc ne peut présenter que 2 états: vrai- faux
on peut toujours tenter avec un textbox de la forme d'un checkbox ou peut-^tre avec la linkedcell du checkbox
on peut toujours tenter avec un textbox de la forme d'un checkbox ou peut-^tre avec la linkedcell du checkbox
Re-bonjour à tous !
Suite à la réponse d'Eric, j'ai pu trouver une checkbox à trois états mais je trouve que ceux-ci ne sont pas assez différenciable. En effet le but est d'avoir un changement qui soit plus visible qu'une croix grisé de façon à ce que l'opérateur puisse voir la différence assez facilement. J'ai donc pensé à une nouvelle chose c'est de garder l'idée de la TripleState checkbox mais de changer la police en fonction de la valeur que prend la checkbox. Seulement voilà : j'ai trouvé pas mal de chose sur internet qui m'ont fait arriver ici :
__________________________________________________________
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
With ActiveSheet.CheckBox1
.Font.Name = "Times New Roman"
.Font.Size = 14
ElseIf CheckBox1.Value = False Then
With ActiveSheet.CheckBox1
.Font.Name = "Calibri"
.Font.Size = 11
End With
ElseIf CheckBox1.Value = Null Then
With ActiveSheet.CheckBox1
.Font.Name = "Calibri"
.Font.Size = 24
End With
End If
End Sub
__________________________________________________________
Malheureusement, la valeur 'Null' (case grisé) n'est pas reconnu et la police s'affiche de la même manière que dans le cas de la case décoché.
J'ai déjà essayé :
- de simplement laisser "Else" dans la 3ème condition
- de mettre la valeur différent de 'True' et différente de 'False' dans la 3ème condition
Voilà voilà ! C'est la première fois que je fais du vba c'est donc un mix de ce que j'ai trouvé sur internet et que j'ai pensé juste.
Merci pour votre aide !
A bientôt!
Suite à la réponse d'Eric, j'ai pu trouver une checkbox à trois états mais je trouve que ceux-ci ne sont pas assez différenciable. En effet le but est d'avoir un changement qui soit plus visible qu'une croix grisé de façon à ce que l'opérateur puisse voir la différence assez facilement. J'ai donc pensé à une nouvelle chose c'est de garder l'idée de la TripleState checkbox mais de changer la police en fonction de la valeur que prend la checkbox. Seulement voilà : j'ai trouvé pas mal de chose sur internet qui m'ont fait arriver ici :
__________________________________________________________
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
With ActiveSheet.CheckBox1
.Font.Name = "Times New Roman"
.Font.Size = 14
ElseIf CheckBox1.Value = False Then
With ActiveSheet.CheckBox1
.Font.Name = "Calibri"
.Font.Size = 11
End With
ElseIf CheckBox1.Value = Null Then
With ActiveSheet.CheckBox1
.Font.Name = "Calibri"
.Font.Size = 24
End With
End If
End Sub
__________________________________________________________
Malheureusement, la valeur 'Null' (case grisé) n'est pas reconnu et la police s'affiche de la même manière que dans le cas de la case décoché.
J'ai déjà essayé :
- de simplement laisser "Else" dans la 3ème condition
- de mettre la valeur différent de 'True' et différente de 'False' dans la 3ème condition
Voilà voilà ! C'est la première fois que je fais du vba c'est donc un mix de ce que j'ai trouvé sur internet et que j'ai pensé juste.
Merci pour votre aide !
A bientôt!
Je viens de tomber sur ça :
________________________________________
Private Sub CheckBox1_Change()
If IsNull(CheckBox1.Value) Then
CheckBox1.Caption = "Value is Null"
ElseIf CheckBox1.Value = False Then
CheckBox1.Caption = "Value is False"
ElseIf CheckBox1.Value = True Then
CheckBox1.Caption = "Value is True"
End If
End Sub _______________________________
J'ai donc remplacer par l'expression "IsNull()" mais rien ne change.
________________________________________
Private Sub CheckBox1_Change()
If IsNull(CheckBox1.Value) Then
CheckBox1.Caption = "Value is Null"
ElseIf CheckBox1.Value = False Then
CheckBox1.Caption = "Value is False"
ElseIf CheckBox1.Value = True Then
CheckBox1.Caption = "Value is True"
End If
End Sub _______________________________
J'ai donc remplacer par l'expression "IsNull()" mais rien ne change.
Hello,
Ayant déjà bien avancé dans l'apprentissage du VBA je ne suis aussi qu'un débutant.
Cette histoire de triple state checkbox est un peu compliqué pour moi, mais je propose on ne sait jamais. Au lieu d'utiliser l'event "click" de la checkbox, pourquoi ne pas utiliser l'event "Change" :
Si j'ai bien compris son fonctionnement, le code se lancera au changement de statut de la checkbox
Ayant déjà bien avancé dans l'apprentissage du VBA je ne suis aussi qu'un débutant.
Cette histoire de triple state checkbox est un peu compliqué pour moi, mais je propose on ne sait jamais. Au lieu d'utiliser l'event "click" de la checkbox, pourquoi ne pas utiliser l'event "Change" :
Private Sub CheckBox1_Change() End Sub
Si j'ai bien compris son fonctionnement, le code se lancera au changement de statut de la checkbox
Je viens de voir, et je pense que tu n'as pas fait attention aussi puisque tu ne le précises pas, mais un coup tu utilises l'event Click et un coup l'event Change. As-tu essayé avec :
Il te manque un End With d'ailleurs. Le premier.
EDIT : J'ai changé = Null par IsNull
Private Sub CheckBox1_Change() If IsNull(CheckBox1.Value) Then With ActiveSheet.CheckBox1 .Font.Name = "Calibri" .Font.Size = 24 End With ElseIf CheckBox1.Value = False Then With ActiveSheet.CheckBox1 .Font.Name = "Calibri" .Font.Size = 11 End With ElseIf CheckBox1.Value = True Then With ActiveSheet.CheckBox1 .Font.Name = "Times New Roman" .Font.Size = 14 End With End If End Sub
Il te manque un End With d'ailleurs. Le premier.
EDIT : J'ai changé = Null par IsNull
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
perso je trouve bizarre de jouer sur la taille du texte.
Pourquoi ne pas changer la couleur du texte ou du fond ?
eric
perso je trouve bizarre de jouer sur la taille du texte.
Pourquoi ne pas changer la couleur du texte ou du fond ?
eric
Re-bonjour,
En fait j'ai déjà un code couleur défini pour le fond et/ou le cadre puisque je dois définir des niveaux de maintenance sur certaines pièces à partir du schéma d'un montage hydraulique. Le problème est donc que je ne peux pas vraiment changer le fond et le cadre puisque ceux-ci sont de couleur prédéfini.
Je vais bien sûr changer la couleur du texte et pas seulement modifié la taille (ce que j'ai envoyé comme partie de code n'était qu'une ébauche pour savoir si c'était réalisable et si je m'engageais sur cette voie là.)
Bonne journée
Julien
En fait j'ai déjà un code couleur défini pour le fond et/ou le cadre puisque je dois définir des niveaux de maintenance sur certaines pièces à partir du schéma d'un montage hydraulique. Le problème est donc que je ne peux pas vraiment changer le fond et le cadre puisque ceux-ci sont de couleur prédéfini.
Je vais bien sûr changer la couleur du texte et pas seulement modifié la taille (ce que j'ai envoyé comme partie de code n'était qu'une ébauche pour savoir si c'était réalisable et si je m'engageais sur cette voie là.)
Bonne journée
Julien