CheckBox.Value ne change pas de valeur quand on click

Résolu
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

  1. 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
    1. Bonjour Franck,

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

      Cordialement
      Raphaël
      0
      1. Modérateur
        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
    2. 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
      1. Modérateur
        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
    3. 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