Checkbox compter les cases à cocher (vba)

Résolu
japlo Messages postés 44 Statut Membre -  
japlo Messages postés 44 Statut Membre -
Bonjour,
je recherche une fonction permettant de comptabliser le nombre de case cocher dans un formulaire et de les aditionner dans dans un tableau .

Private Sub CommandButton2_Click()
Dim Val1
Val1 = Sheets("Feuil1").[A1].Value = CheckBox1
Resultat = Val1 + 1
Sheets("Feuil1").[A1].Value = (Resultat)
UserForm1.Hide
End Sub

J'avais pensé à ceci mais mon résultat reste permanent 1

10 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Je pense que c'est quelque chose comme ça que tu veux...
    Private Sub CommandButton1_Click()
    Dim Compteur As Integer, Check As Integer
    Dim Obj As OLEObject
        'boucle sur les objets de la Feuil1
        For Each Obj In Sheets("Feuil1").OLEObjects
            'verifie s'il s'agit d'un CheckBox
            If TypeOf Obj.Object Is MSForms.CheckBox Then
                Compteur = Compteur + 1
                If Obj.Object.Value Then Check = Check + 1
            End If
        Next Obj
        Sheets("Feuil1").[A1].Value = "Nombre de CheckBox = " & Compteur
        Sheets("Feuil1").[A2].Value = "CheckBox checker = " & Check
    End Sub

    A+
    0
  2. japlo Messages postés 44 Statut Membre 2
     
    Salut,

    en fait je vais essayer d'etre plus précis.
    j'ai une feuille ecxel (feuil1) avec un bouton, lorsque je clic dessus cela m'ouvre un formulaire dans le lequel nous retrouvons un voir plus de CheckBox et un bouton de validation servant de fermeture du formulaire.

    Je veux qu'a chaque fois que j'ouvre mon formulaire et qu'un CheckBox est coché le résultat se marque en a1 de la feuille 1 par exemple et qu'il s'addition à chaque fois.

    Private Sub CheckBox1_Click()
    Dim Compteur As Integer, Check As Integer
    Dim Obj As OLEObject
    'boucle sur les objets de la Feuil1
    For Each Obj In Sheets("Feuil1").OLEObjects
    'verifie s'il s'agit d'un CheckBox
    If TypeOf Obj.Object Is MSForms.CheckBox Then
    Compteur = Compteur + 1
    If Obj.Object.Value Then Check = Check + 1
    End If
    Next Obj
    Sheets("Feuil1").[A1].Value = "Nombre de CheckBox = " & Compteur
    Sheets("Feuil1").[A2].Value = "CheckBox checker = " & Check
    End Sub

    Private Sub CommandButton1_Click()
    UserForm1.Hide
    End Sub

    Sinon j'avais trouvé cette petite fonction qui marche tres bien mais que je n'arrive pas à adapter

    Dim Val1
    'Dim Resultat As Integer (pour un résultat en entier)
    Val1 = Sheets("Feuil1").[A1].Value
    Resultat = Val1 + 1
    Sheets("Feuil1").[A1].Value = (Resultat)

    a+
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Difficile de comprendre ce que tu veux faire mais comme tu dis que ça fonctionne avec ton exemple..
    Private Sub CheckBox1_Click() 
        Sheets("Feuil1").[A1].Value = Sheets("Feuil1").[A1].Value +1
    End Sub

    ??
    0
  4. japlo Messages postés 44 Statut Membre 2
     
    Salut écoute à apparement ça fonctionnerai comme ça le seul truc c'est que je voudrai que mon formulaire soit toujours vierge lorsque je l'ouvre.

    Private Sub CheckBox1_Click()
    Sheets("Feuil1").[A1].Value = Sheets("Feuil1").[A1].Value + 1
    End Sub

    Private Sub CheckBox2_Click()
    Sheets("Feuil1").[b1].Value = Sheets("Feuil1").[b1].Value + 1
    End Sub

    Private Sub CommandButton1_Click()
    UserForm1.Hide

    End Sub

    A+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. japlo Messages postés 44 Statut Membre 2
     
    En fait j'ai trouvé

    'Opération de tranfert de donnée en A1
    Private Sub CheckBox1_Click()
    Sheets("Feuil1").[A1].Value = Sheets("Feuil1").[A1].Value + 1
    End Sub
    'Opération de tranfert de donnée en B1
    Private Sub CheckBox2_Click()
    Sheets("Feuil1").[b1].Value = Sheets("Feuil1").[b1].Value + 1
    End Sub
    Private Sub CommandButton1_Click()
    CheckBox1.Value = False
    CheckBox2.Value = False
    'Fermeture du formulaire
    UserForm1.Hide
    End Sub

    L'incovéniant est que si tu fais une erreur de case et que tu veux la décocher ça te rajoute +1 encore alors qu'il serait plus judicieux que ça fasse -1 cela eviterait les erreurs.
    0
  7. japlo Messages postés 44 Statut Membre 2
     
    En fait je dis des anneries lorsque je ferme le formulaire vue que ça le décoche ça rajoute +1 une fois de plus ce qui nous fait 2 en réalité !!!
    Donc comme je n'ai plus le probleme lors de la fermeture
    'Opération de tranfert de donnée en A1
    Private Sub CheckBox1_Click()
    Sheets("Feuil1").[A1].Value = Sheets("Feuil1").[A1].Value + 1
    End Sub
    'Opération de tranfert de donnée en B1
    Private Sub CheckBox2_Click()
    Sheets("Feuil1").[b1].Value = Sheets("Feuil1").[b1].Value + 1
    End Sub
    Private Sub CommandButton1_Click()
    CheckBox1.Value = False
    Sheets("Feuil1").[A1].Value = Sheets("Feuil1").[A1].Value - 1
    CheckBox2.Value = False
    Sheets("Feuil1").[b1].Value = Sheets("Feuil1").[b1].Value - 1
    'Fermeture du formulaire
    UserForm1.Hide
    End Sub

    Reste donc toujours le soucis sité précédement lorsque tu décoche la case ????
    0
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Private Sub CheckBox1_Click()
    Sheets("Feuil1").[A1].Value = Sheets("Feuil1").[A1].Value + Abs(CheckBox1.value)
    End Sub
    0
  9. japlo Messages postés 44 Statut Membre 2
     
    Cool c'est deja presque parfait !!!!

    'Opération de tranfert de donnée en A1
    Private Sub CheckBox1_Click()
    Sheets("Feuil1").[A1].Value = Sheets("Feuil1").[A1].Value + Abs(CheckBox1.Value)
    End Sub
    'Opération de tranfert de donnée en B1
    Private Sub CheckBox2_Click()
    Sheets("Feuil1").[b1].Value = Sheets("Feuil1").[b1].Value + Abs(CheckBox2.Value)
    End Sub
    Private Sub CommandButton1_Click()
    CheckBox1.Value = False
    CheckBox2.Value = False
    'Fermeture du formulaire
    UserForm1.Hide
    End Sub

    Le seul truc qui me chagrine encore c'est l'histoire d'erreur de case cocher pour que la comptabilité revienne à l'etat anterieur.

    Merci à toi pour ton aide

    Cordialement japlo
    0
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Sheets("Feuil1").[A1].Value = Sheets("Feuil1").[A1].Value + IIf(CheckBox1.Value, 1, -1)

    Et pour le bouton..
    Avec Hide tu ne ferme pas le UF, tu le cache, c'est pour cela que tu doit remettre tes checkbox à false.
    Met simplement..
    Private Sub CommandButton1_Click()  
        Unload Me 
    End If

    A+
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
    0
  11. japlo Messages postés 44 Statut Membre 2
     
    Salut,

    je croix que nous arrivons au terme de la question voici donc le projet.

    'Opération de tranfert de donnée en A1
    Private Sub CheckBox1_Click()
    Sheets("Feuil1").[A1].Value = Sheets("Feuil1").[A1].Value + IIf(CheckBox1.Value, 1, -1)
    End Sub
    'Opération de tranfert de donnée en B1
    Private Sub CheckBox2_Click()
    Sheets("Feuil1").[b1].Value = Sheets("Feuil1").[b1].Value + IIf(CheckBox2.Value, 1, -1)
    End Sub
    'Fermeture du formulaire
    Private Sub CommandButton2_Click()
    Unload Me
    End Sub

    Merci pour ton intervention
    Cordialement japlo
    0