VBA - Appliquer la valeur d'une checkbox uniquement après avoir appuyé sur "Valider"

  • Initiateur de la discussion Initiateur de la discussion jeremy54000
  • 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 !

J

jeremy54000

Guest
Bonjour à tous,

J'ai un petit souci : J'ai un Userform contenant des checkbox. Cependant, je souhaite que la valeur des checkbox n'apparaisse que lorsque l'on clique sur "VALIDER". Apparemment, le code que j'ai entré outrepasse la commande "VALIDER".

Quelqu'un aurait-il une solution simple ?

Merci ! 😱
 
Re : VBA - Appliquer la valeur d'une checkbox uniquement après avoir appuyé sur "Vali

As-tu écris ton code sous forme de procédure évènementielle dans le formulaire concerné ?
Par exemple si tu écris ton code pour l'évènement click du bouton valider, je pense que ça devrait fonctionner.
 
Re : VBA - Appliquer la valeur d'une checkbox uniquement après avoir appuyé sur "Vali

As-tu écris ton code sous forme de procédure évènementielle dans le formulaire concerné ?
Par exemple si tu écris ton code pour l'évènement click du bouton valider, je pense que ça devrait fonctionner.

J'ai mis mon code sous =
Private Sub Validation_Click()
Sheets("feuil1").Select
[D4] = CheckBox1.Value
CheckBox1.Caption = ""
 
Re : VBA - Appliquer la valeur d'une checkbox uniquement après avoir appuyé sur "Vali

Peut être que je me trompe mais je pense que le [D4] pose problème. Je pense qu'il vaudrait mieux écrire Range("D4").value = checkbox1.value

Le [D4] c'est une autre façon d'écrire Range("D4") ? Je n'ai jamais vu cette syntaxe là jusqu'à présent.
 
Re : VBA - Appliquer la valeur d'une checkbox uniquement après avoir appuyé sur "Vali

Peut être que je me trompe mais je pense que le [D4] pose problème. Je pense qu'il vaudrait mieux écrire Range("D4").value = checkbox1.value

Le [D4] c'est une autre façon d'écrire Range("D4") ? Je n'ai jamais vu cette syntaxe là jusqu'à présent.

C'est la même chose... Je viens de tester.
 
Re : VBA - Appliquer la valeur d'une checkbox uniquement après avoir appuyé sur "Vali

Tu as une solution purement VB (donc qui n'a pas grand-chose à voir avec Excel) qui consiste à mettre sur la case à cocher l'image d'une case à cocher en faisant attention à les superposer au pixel près. Lorsqu'on clique sur l'image, on coche la case qui est derrière. Lorsqu'on valide, on rend toutes les images invisibles. Petit exemple.
 

Pièces jointes

Re : VBA - Appliquer la valeur d'une checkbox uniquement après avoir appuyé sur "Vali

Tu as une solution purement VB (donc qui n'a pas grand-chose à voir avec Excel) qui consiste à mettre sur la case à cocher l'image d'une case à cocher en faisant attention à les superposer au pixel près. Lorsqu'on clique sur l'image, on coche la case qui est derrière. Lorsqu'on valide, on rend toutes les images invisibles. Petit exemple.

Merci, mais en fait, cela ne répond pas à mon problème. Je cherche à ce que une checkbox cochée dans un userform ne renvoie un true vers une cellule uniquement après avoir cliqué sur un bouton validation. Car actuellement, la checkbox cochée dans le userform applique directement la valeur sans avoir besoin de valider.
 
Re : VBA - Appliquer la valeur d'une checkbox uniquement après avoir appuyé sur "Vali

Alors c'est encore plus simple, puisqu'on n'a plus besoin d'images.
Il suffit de mettre toutes tes instructions dans le bouton "Valider" et de ne rien chercher à intercepter.
Re-petit exemple.
 

Pièces jointes

Re : VBA - Appliquer la valeur d'une checkbox uniquement après avoir appuyé sur "Vali

Alors c'est encore plus simple, puisqu'on n'a plus besoin d'images.
Il suffit de mettre toutes tes instructions dans le bouton "Valider" et de ne rien chercher à intercepter.
Re-petit exemple.

Merci beaucoup, et désolé pour la réponse si tardive...
Par contre, j'ai besoin d'apporter des mises-à-jour à ce document. Par conséquent, il faut que le Userform recharge les cellules déjà cochées. Mais lorsque j'assigne la cellule à la checkbox (ControlSource), je n'ai plus le fameux X qui apparait, mais les valeurs vrai/faux avec des checkboxs à moitié grisées... Comment garder le X ?
 

Pièces jointes

Re : VBA - Appliquer la valeur d'une checkbox uniquement après avoir appuyé sur "Vali

Je t'avais dit de ne rien chercher à intercepter et tu interceptes.

Le comportement des CheckBox est le suivant :
- si tu laisses la propriété .ControlSource vide, tes CheckBox ne connaissent que deux états : .Value = True, la case est cochée .Value = False la case est décochée

- en revanche, si tu associes tes CheckBox à des cellules (.ControlSource), tu interceptes. La propriété .Value peut prendre 3 valeurs :
.Value est vide : case cochée, mais en grisé (inactive)
.Value = True : case cochée (active)
.Value = False : case décochée (active)

Si tu veux retrouver ta Userform comme tu l'as laissée, il faut la recharger en fonction du contenu de B3,B4 et B5 dans UserForm_Activate().
 

Pièces jointes

Re : VBA - Appliquer la valeur d'une checkbox uniquement après avoir appuyé sur "Vali

Merci beaucoup ! Je suis vraiment incorrigible... J'avais commencé à écrire un code ressemblant à cela, mais j'avais mis ".caption"...

Je t'avais dit de ne rien chercher à intercepter et tu interceptes.

Le comportement des CheckBox est le suivant :
- si tu laisses la propriété .ControlSource vide, tes CheckBox ne connaissent que deux états : .Value = True, la case est cochée .Value = False la case est décochée

- en revanche, si tu associes tes CheckBox à des cellules (.ControlSource), tu interceptes. La propriété .Value peut prendre 3 valeurs :
.Value est vide : case cochée, mais en grisé (inactive)
.Value = True : case cochée (active)
.Value = False : case décochée (active)

Si tu veux retrouver ta Userform comme tu l'as laissée, il faut la recharger en fonction du contenu de B3,B4 et B5 dans UserForm_Activate().
 
Re : VBA - Appliquer la valeur d'une checkbox uniquement après avoir appuyé sur "Vali

bonjour tous 🙂🙂
on peut simplifier le code??


Code:
Dim i As Byte
Private Sub UserForm_Initialize()
 For i = 1 To 3: Controls("CheckBox" & (i)) = IIf(Cells(i + 2, 2) <> "", 1, 0): Next i
End Sub
Private Sub Valider_Click()
 For i = 1 To 3: Cells(i + 2, 2) = IIf(Controls("CheckBox" & (i)), "X", ""): Next i
 Unload Me
End Sub
 
- 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

K
Réponses
12
Affichages
2 K
D
Réponses
2
Affichages
690
dokaz
D
B
Réponses
4
Affichages
2 K
benoitoleron
B
Réponses
8
Affichages
1 K
E
Réponses
10
Affichages
11 K
Ethiryn - Glarilak
E
F
Réponses
3
Affichages
969
fra340
F
Retour