Additionner des valeurs liées à des checkbox

Bonsoir à tous,

Voila un petit moment que je n'avais plus été bloqué mais me revoilà !!!!!

Mon soucis cette fois ci concerne l'utilisation de checkBox. En faite j'ai deux checkBox une noté prod et l'autre fab quand je clique sur prod par exemple je récupère une valeur qui est placer sur ma feuille total prix et que j'affiche dans une Textbox.

Je fait pareil pour la checkBox fab pour faire sa aucun problème.

Mon soucis arrive au moment ou je coche les deux checkBox. En effet j'aurais souhaité qu'au moment ou je coche les deux checkBox les deux valeurs s'additionnes dans ma Textbox.

Dans cette exemple je n'ai mis que deux CheckBox mais dans mon application j'en ai 7.

En espérant que quelqu'un trouvera une solution, je met un exemple de mon fichier pour que se soit plus clair.

Merci d'avance.

Bonjour,

Rien ne t'empêche de mettre un valeur dan ton textbox3 à chaque fois que tu cliques sur un CheckBox...

Bon dans ton exemple c'est un peu rudimentaire mais l'idée de base c'est ça :

Private Sub CheckBox1_Click()
Dim i%
If TextBox3 = "" Then
TextBox3 = 25
Else
TextBox3 = CInt(TextBox3) + 25
End If
End Sub
Private Sub CheckBox2_Click()
Dim i%
If TextBox3 = "" Then
TextBox3 = 5
Else
TextBox3 = CInt(TextBox3) + 5
End If
End Sub
Private Sub CheckBox3_Click()
Dim i%
If TextBox3 = "" Then
TextBox3 = 100
Else
TextBox3 = CInt(TextBox3) + 100
End If
End Sub

Après, c'est sur qu'en pratique on ferait pas ça. Surtout avec 9 Checkbox. d'autant plus que tes CheckBox ont pas vraiment une valeur en soit mais doivent permettre de récupérer une valeur...

Bon tu as l'idée générale, à toi de broder , mais il faut nous donner à plancher sur du concret, pas sur un vague exemple réduit à son trognon...

A+

En fait dans mon exemple quand je coche la checkBox1 et que je clique sur valider, je vient recuperer ma valeurs dans la cellule A4 de la feuille total prix que jaffiche dans ma TextBox.

Je fait la même chose quand je coche ma CheckBox2 je récupère la valeurs de la feuille total prix cellule B4 que je vient mettre dans ma TextBox.

Par contre j'aimerais que lorsque je coche la checkbox1 et la checkbox2 les deux valeurs s'additionne donc affiche la valeur de la cellule A4 + B4 .

Biensure avec 7 CheckBox il ya plus de condition car par exemple je peut cocher la checkBox1 et la CheckBox2 ou alors juste la deux et la 3 ou alors la 1 et la 3 mais également les trois.

Jarrive a recuperer la valeur seul mais pas les valeurs cumulées en fonction de ce que je coche.

En espérant avoir été un peu plus clair dans mes explications.

Merci.

bonjour

Tu as regardé la macro que je t'ai mis ?

Tu as essayé ?

Moi j'ai mis des valeurs : 25 , 5 et 100

Tu remplaces mes valeurs par la valeur des cellules correspondantes à chaque CheckBox et tu as ta réponse...

A+


je t'accorde que ma réponse est aussi simpliste que ta question... mais quand on donne un trognon d'ébauche de classeur, on ne peux pas s'attendre à une réponse très documentée : J'ai supposé que tu étais capable de faire le lien vers ton vrai classeur et que seul l'idée générale t'intéressait.

Ma réponse ne fonctionne pas si l'utilisateur décoche un Checkbox coché par erreur...

Le code suivant corrige cette observation :

Private Sub CheckBox1_Click()
Dim i%, valeur%
valeur = [A4]
If CheckBox1 Then
   If TextBox3 = "" Then
      TextBox3 = valeur
   Else
      TextBox3 = CInt(TextBox3) + valeur
   End If
Else
   TextBox3 = CInt(TextBox3) - valeur
End If
End Sub

Private Sub CheckBox2_Click()
Dim i%, valeur%
valeur = [B4]
If CheckBox2 Then
   If TextBox3 = "" Then
      TextBox3 = valeur
   Else
      TextBox3 = CInt(TextBox3) + valeur
   End If
Else
   TextBox3 = CInt(TextBox3) - valeur
End If
End Sub

Private Sub CheckBox3_Click()
Dim i%, valeur%
valeur = [C4]
If CheckBox3 Then
   If TextBox3 = "" Then
      TextBox3 = valeur
   Else
      TextBox3 = CInt(TextBox3) + valeur
   End If
Else
   TextBox3 = CInt(TextBox3) - valeur
End If
End Sub

Remarque :

Dans la pratique pour 9 CheckBox on utiliserait plutôt des modules de classes.

Mais cela est réservé à des utilisateurs très affûtés es VBA...

A+

Oui j'ai bien essayer et sa ne fonctionne pas car si je clique 10 fois sur ma CheckBox j'additionne et moi je veut seulement additionner les valeurs des CheckBox entre elle et si j'en décocher 1 sa m'affiche le prix de une seul.

En faite ce que je souhaite faire avec cette application c'est une visualisation du cout de mon stock donc si je veut regarder le prix de la prod seulement je clique sur prod et pareil pour fab et si je veut voir les deux sa me donne le prix des deux réunie.

Hum...

Ce code limite à un clic par CheckBox.

Private Sub CheckBox1_Click()
Dim i%, valeur%
valeur = [A4]
If CheckBox1 Then
   If CheckBox1.Tag = "" Then
      CheckBox1.Tag = "1"
      If TextBox3 = "" Then
         TextBox3 = valeur
      Else
         TextBox3 = CInt(TextBox3) + valeur
      End If
   End If
Else
   TextBox3 = CInt(TextBox3) - valeur
   CheckBox1.Tag = ""
End If
End Sub

Private Sub CheckBox2_Click()
Dim i%, valeur%
valeur = [B4]
If CheckBox2 Then
   If CheckBox2.Tag = "" Then
      CheckBox2.Tag = "1"
      If TextBox3 = "" Then
         TextBox3 = valeur
      Else
         TextBox3 = CInt(TextBox3) + valeur
      End If
   End If
Else
   TextBox3 = CInt(TextBox3) - valeur
   CheckBox2.Tag = ""
End If
End Sub

Private Sub CheckBox3_Click()
Dim i%, valeur%
valeur = [C4]
If CheckBox3 Then
   If CheckBox3.Tag = "" Then
      CheckBox3.Tag = "1"
      If TextBox3 = "" Then
         TextBox3 = valeur
      Else
         TextBox3 = CInt(TextBox3) + valeur
      End If
   End If
Else
   TextBox3 = CInt(TextBox3) - valeur
   CheckBox3.Tag = ""
End If
End Sub

Même observation que précédemment.

A+

sa fonctionne tjrs pas.

En faite un action sur la CheckBox j'appuie sur valider sa m'affiche le resultat liée a cette CheckBox si je coche mon autre CheckBox en plus de la première deja cocher les deux valeurs se cumule.

Merci quand même pour votre recherche et le temps passer pour me venir en aide cest très sympatique.

Ben...

C'est quand même bien ce que tu as demandé :

"...j'aurais souhaité qu'au moment ou je coche les deux checkBox les deux valeurs s'additionnes dans ma Textbox."

Alors tu ne veux le total que quand tu appuies sur le bouton "Valider" ? C'est ça ?

A+

Oui c'est sa et quand je décoche la CheckBox et que je clique sur valider je remet ma TextBox a zero

Re,

Private Sub CheckBox1_Click()
Dim i%, valeur%
valeur = [A4]
If CheckBox1 Then
   If CheckBox1.Tag = "" Then
      CheckBox1.Tag = "1"
      If TextBox3 = "" Then
         TextBox3 = valeur
         TextBox3.Tag = valeur
      Else
         TextBox3.Tag = CInt(TextBox3.Tag) + valeur
      End If
   End If
Else
   TextBox3.Tag = CInt(TextBox3.Tag) - valeur
   CheckBox1.Tag = ""
   TextBox3 = ""
End If
End Sub

Private Sub CheckBox2_Click()
Dim i%, valeur%
valeur = [B4]
If CheckBox2 Then
   If CheckBox2.Tag = "" Then
      CheckBox2.Tag = "1"
      If TextBox3 = "" Then
         TextBox3 = valeur
         TextBox3.Tag = valeur
      Else
         TextBox3 = valeur
         TextBox3.Tag = CInt(TextBox3.Tag) + valeur
      End If
   End If
Else
   TextBox3.Tag = CInt(TextBox3.Tag) - valeur
   CheckBox2.Tag = ""
   TextBox3 = ""
End If
End Sub

Private Sub CheckBox3_Click()
Dim i%, valeur%
valeur = [C4]
If CheckBox3 Then
   If CheckBox3.Tag = "" Then
      CheckBox3.Tag = "1"
      If TextBox3 = "" Then
         TextBox3 = valeur
         TextBox3.Tag = valeur
      Else
         TextBox3 = valeur
         TextBox3.Tag = CInt(TextBox3.Tag) + valeur
      End If
   End If
Else
   TextBox3.Tag = CInt(TextBox3.Tag) - valeur
   CheckBox3.Tag = ""
   TextBox3 = ""
End If
End Sub

Private Sub CommandButton3_Click()
On Error Resume Next
TextBox3 = CInt(TextBox3.Tag)
End Sub

A+

Sa ne fonctionne toujours pas quand je décoche des CheckBox sa me met des resultat négatif en plus sa ne fonctionne que une fois sur deux apres sa ne m'affiche plus rien alors que ma CheckBox est bien cocher.

Voici un exemple d'un code qui fonctionne comme je veux mais qui est beaucoup trop long pour utiliser 7 CheckBox.

Private sub CommandButton3_Click()

Dim i, j As Long

i = Sheets ("Total prix").Range("A4")

j = Sheets ("Total prix").Range("B4")

TextBox3.Value = ""

If checkbox1 = True Then

Textbox3.Value = i

End if

If checkbox2 = True Then

Textbox3.Value = j

End if

If checkbox1 and checkbox2 = True Then

Textbox3.Value = i + j

End if

End sub

Ce code fonctionne très bien mais le soucis c'est qu'il ya 49 possibilités différentes donc c un peu long a faire.

Autant pour moi...

Private Sub CheckBox1_Click()
Dim i%, valeur%
valeur = [A4]
TextBox3.Tag = IIf(TextBox3.Tag = "", "0", TextBox3.Tag)
If CheckBox1 Then
   If CheckBox1.Tag = "" Then
      CheckBox1.Tag = valeur
      If TextBox3 = "" Then
         TextBox3 = valeur
         TextBox3.Tag = CInt(TextBox3.Tag) + valeur
      Else
         TextBox3 = valeur
         TextBox3.Tag = CInt(TextBox3.Tag) + valeur
      End If
   End If
Else
   TextBox3.Tag = CInt(TextBox3.Tag) - valeur
   CheckBox1.Tag = ""
   TextBox3 = ""
End If
End Sub

Private Sub CheckBox2_Click()
Dim i%, valeur%
valeur = [B4]
TextBox3.Tag = IIf(TextBox3.Tag = "", "0", TextBox3.Tag)
If CheckBox2 Then
   If CheckBox2.Tag = "" Then
      CheckBox2.Tag = valeur
      If TextBox3 = "" Then
         TextBox3 = valeur
         TextBox3.Tag = CInt(TextBox3.Tag) + valeur
      Else
         TextBox3 = valeur
         TextBox3.Tag = CInt(TextBox3.Tag) + valeur
      End If
   End If
Else
   TextBox3.Tag = CInt(TextBox3.Tag) - valeur
   CheckBox2.Tag = ""
   TextBox3 = ""
End If
End Sub

Private Sub CheckBox3_Click()
Dim i%, valeur%
valeur = [C4]
TextBox3.Tag = IIf(TextBox3.Tag = "", "0", TextBox3.Tag)
If CheckBox3 Then
   If CheckBox3.Tag = "" Then
      CheckBox3.Tag = valeur
      If TextBox3 = "" Then
         TextBox3 = valeur
         TextBox3.Tag = CInt(TextBox3.Tag) + valeur
      Else
         TextBox3 = valeur
         TextBox3.Tag = CInt(TextBox3.Tag) + valeur
      End If
   End If
Else
   TextBox3.Tag = CInt(TextBox3.Tag) - valeur
   CheckBox3.Tag = ""
   TextBox3 = ""
End If
End Sub

Private Sub CommandButton3_Click()
On Error Resume Next
TextBox3 = CInt(TextBox3.Tag)
End Sub

A+


J'ai aussi cette méthode là un peu plus courte et un peu dans le genre de ce que tu suggères :

Private Sub CheckBox1_Click()
Dim i%, valeur%
valeur = [A4]
If CheckBox1 Then
   TextBox3 = valeur
Else
   TextBox3 = ""
End If
End Sub

Private Sub CheckBox2_Click()
Dim i%, valeur%
valeur = [B4]
If CheckBox2 Then
   TextBox3 = valeur
Else
   TextBox3 = ""
End If
End Sub

Private Sub CheckBox3_Click()
Dim i%, valeur%
valeur = [C4]
If CheckBox3 Then
   TextBox3 = valeur
Else
   TextBox3 = ""
End If
End Sub

Private Sub CommandButton3_Click()
Dim c, tmp, i%
c = Sheets("Total prix").Range("A4:C4")
For i = 1 To 3
   If Me.Controls("CheckBox" & i) Then tmp = tmp + c(1, i)
Next
TextBox3 = tmp
End Sub

Bonjour,

Merci c'est bien ce que je voulais par contre quand je copie la formule du bouton valider jai un message 9 l'indice n'appartient pas a la sélection.

En faite jai un multipage avec sur la premiere des CheckBox qui prenne les infos d'une page et sur l'autre des CheckBox qui recupere des infos d'une autre page le code et donc quasiment identique.

Donc pour la premiere page sa fonctionne mais pour la second sa ne fonctionne que a moitier.

Merci

Bonjour,

C'est tout ce que je peux faire avec le fichier joint.

A+

Ce que j'ai pris la seconde façon de faire sur ma premiere page et pour la deuxième jai pris ta premiere formule par contre encore un défaut qui apparaît sa me met "dépassement de capaciter" jai changer les variables en as long mais rien y fait. Jai des valeurs supérieurs a 100000.

Bonjour,

CLng devrait convenir pour les Entiers longs sinon mettre en Single ou Currency (CSng ou CCur)

sinon fournir le fichier.

A+

Merci sa marche javais également essayer en mettant CLng et sa fonctionne aussi je sait si sa change beaucoup de chose mais sa fonctionne en tout cas merci beaucoup

Rechercher des sujets similaires à "additionner valeurs liees checkbox"