CheckBox.Value ne change pas de valeur quand on click

Résolu/Fermé
panda02 Messages postés 6 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 12 décembre 2014 - Modifié par pijaku le 10/12/2014 à 11:21
panda02 Messages postés 6 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 12 décembre 2014 - 12 déc. 2014 à 14:41
Bonjour,


J'ai un petit soucis avec les valeurs des Checkbox. J'ai un macro dans Excel qui me donne un formulaire dans lequel on peut sélectionner une trentaine de checkbox, pour simplifier le travail certaines checkbox permettent de dé/cocher une série d'autre. Pour ce faire j'utilise le code suivant:

Private Sub CheckBoxDetails_Click()
' (dé)coche les boutons du sous menu quand on (dé)coche la case "détails"

If CheckBoxDetails.Value = True Then
CheckBoxDiver.Value = True
CheckBoxEquip.Value = True
CheckBoxPot.Value = True
CheckBoxLent.Value = True
Else
CheckBoxDiver.Value = False
CheckBoxEquip.Value = False
CheckBoxPot.Value = False
CheckBoxLent.Value = False
End If

End Sub


Le souci c'est que si l'utilisateur coche le CheckBox Details et ensuite décoche une des sous CheckBox, quand j'interroge la valeur des CheckBox il me trouve "true" même celle qui a été décochée par l'utilisateur.

Comment faire pour que la valeur affichée des CheckBox dans le userform soit bien mise à jour pour pouvoir les utiliser ensuite.


Merci

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
10 déc. 2014 à 11:26
Bonjour,

Il doit y avoir un autre souci...
Mes tests fonctionnent exactement comme souhaité :
https://www.cjoint.com/?DLklHA6tO5J
0
panda02 Messages postés 6 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 12 décembre 2014
10 déc. 2014 à 11:59
Bjr Franck,

merci, je vais regarder ça de chez moi fin de semaine (mon employeur bloque l'accès à ton lien)

Je te dirai si ça marche à ce moment là

Cordialement
Raphaël
0
panda02 Messages postés 6 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 12 décembre 2014
11 déc. 2014 à 09:20
Bonjour Franck,


sauf erreur de ma part, le fichier que tu l'as envoyé est vide


Cordialement
Raphaël
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
11 déc. 2014 à 09:56
Bonjour,

sauf erreur de ma part, le fichier que tu l'as envoyé est vide
Erreur de ta part ;-)

OUvre le fichier, tape ALT+F11, double clic sur UserForm et tapes F5
0
panda02 Messages postés 6 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 12 décembre 2014
Modifié par pijaku le 11/12/2014 à 11:07
en effet erreur de ma part (je passe par macro pour accéder là et macro était vide)

donc oui avec ton userform ça fonctionne.
Le codage du mien étant identique au tien je ne comprends pas pourquoi ça ne marche pas. J'ai vu que tu ne mettais pas '.value' donc j'ai essayé en effaçant chez moi mais pas mieux.

donc voilà comment je récupère ces valeurs pour créer un fichier

If UserForm3.CheckBoxDiver.Value = True Then
    For j = 13 To 23
        variable1 = variable1 & "<B>" & Cells(lgtitrfr, j).Value & "</B> : " & ActiveCell.Offset(0, j - 1).Value & "<br>" & Chr(13)
    Next j
End If
                                
If UserForm3.CheckBoxCoordin.Value = True Then
    variable1 = variable1 & "<B>" & Cells(lgtitrfr, 24).Value & "</B> : " & ActiveCell.Offset(0, 23).Value & "<br>" & Chr(13)
End If
                            
If UserForm3.CheckBoxEquip.Value = True Then
    For j = 25 To 29
        variable1 = variable1 & "<B>" & Cells(lgtitrfr, j).Value & "</B> : " & ActiveCell.Offset(0, j - 1).Value & "<br>" & Chr(13)
    Next j
End If
                                
If UserForm3.CheckBoxPot.Value = True Then
    For j = 30 To 32
        variable1 = variable1 & "<B>" & Cells(lgtitrfr, j).Value & "</B> : " & ActiveCell.Offset(0, j - 1).Value & "<br>" & Chr(13)
    Next j
End If
                                
If UserForm3.CheckBoxLent.Value = True Then
    For j = 33 To 43
        variable1 = variable1 & "<B>" & Cells(lgtitrfr, j).Value & "</B> : " & ActiveCell.Offset(0, j - 1).Value & "<br>" & Chr(13)
    Next j
End If


peut-être que ça te donnera une idée de ce qui coince.
avant que je ne tente de faire un bouton qui regroupe ça fonctionnait parfaitement le fichier créer prenait bien exactement les info demandée en fonction des cases cochées. donc je pense qu'il y a une petite astuce de rafraîchissement de la valeur qui ne se fait pas ou qqch comme ça.

Une autre idée ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
11 déc. 2014 à 11:17
Ce code, c'est pour après, pour la validation. Ton souci est en amont.
Sans le classeur je ne peux pas t'aider. Pour me l'envoyer, passe par cjoint, ou alors envoie moi ton adresse mail par MP (clic sur mon pseudo et "lui écrire un message")...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
panda02 Messages postés 6 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 12 décembre 2014
12 déc. 2014 à 14:41
Merci, indirectement tu m'a guidé vers mon erreur,

en fait en tout début de récupération des données j'avais un if case 'tout' cochée récupération de toute les données et si case 'tout' pas cochée vérification des case x pour récupérer les données x.

Du coup même si je décochais les case ma macro n'allait même pas voire leur valeur puisque 'tout' reste coché

Il m'a donc suffit d'effacer 3 lignes et tout fonctionne correctement

Merci
problème résolu
0