Somme de textbox.value

Bonjour à toutes et tous,

Je vous sollicite encore pour une question de débutant.

Dans un userform, je cherche à ajouter à ma textbox19.value une valeur (+0.3 ou +0.5) en fonction des dates de naissance dans des textbox5 et textbox18.

J'ai écrit ce code:

Private Sub CommandButton3_Click()

If TextBox18.Value > 2006 Then TextBox19.Value = TextBox19.Value + 0.3
If TextBox18.Value < 2006 Then TextBox19.Value = TextBox19.Value + 0.5

If TextBox5.Value > 2006 Then TextBox19.Value = TextBox19.Value + 0.3
If TextBox5.Value < 2006 Then TextBox19.Value = TextBox19.Value + 0.5

End Sub

ça fonctionne pour la première textbox mais ensuite les valeur ne sont plus ajoutées.

Pourriez-vous m'aider à compléter cette macro?

Merci d'avance pour vos conseils

Bonjour,

Les TextBox n'ont pas de value : Comme leur nom l'indique elles ne contiennent que du texte.

En mettant .Value tu forces VBA à faire des autoconversion "au pif" : ça marche des fois surtout quand c'est des nombres entiers mais quand il s'agit de nombre avec virgules ou des dates il faut utiliser les fonctions de conversion.

A+

Bonjour,

Private Sub CommandButton3_Click()
DIM matextbox as Single
matextbox=TextBox19.Value

If TextBox18.Value > 2006 Then matextbox = TextBox19.Value + 0.3
end if
If TextBox18.Value < 2006 Then matextbox = TextBox19.Value + 0.5
end if
If TextBox5.Value > 2006 Then matextbox = matextbox + 0.3
end if
If TextBox5.Value < 2006 Then matextbox = matextbox + 0.5
end if
Textbox19.value=matextbox
End Sub

Merci à tous les deux pour vos réponses.

J'ai essayé votre proposition XmenPL mais il m'indique "erreur de compilation : EndIf sans bloc IF".

Merci à tous les deux pour vos réponses.

J'ai essayé votre proposition XmenPL mais il m'indique "erreur de compilation : EndIf sans bloc IF".

Comme j'ai pas le fichier peux pas tester.

Mais la réponse est dans le code erreur "End if" sans If

Essaies de retirer les trois premiers end if .

Ou en supprimant des conditions puisque si c'est pas supérieur c'est automatiquement inférieur.

Private Sub CommandButton3_Click()
DIM matextbox as Single
matextbox=TextBox19.Value

If TextBox18.Value > 2006 Then matextbox = TextBox19.Value + 0.3
Else
matextbox = TextBox19.Value + 0.5
end if
If TextBox5.Value > 2006 Then matextbox = matextbox + 0.3
Else
matextbox = matextbox + 0.5
end if
Textbox19.value=matextbox
End Sub

Salut LudoSer,

Salut l'équipe,

Perso, je l'écrirais ainsi...

If Val(Me.TextBox18.Text) > 2006 Then Me.TextBox19.Text = CStr(Val(Me.TextBox19.Text) + 0.3)
If Val(Me.TextBox18.Text) < 2006 Then Me.TextBox19.Text = CStr(Val(Me.TextBox19.Text) + 0.5)

A+

Merci Curulis57 pour votre proposition. J'ai essayé de compléter comme ça:

Private Sub CommandButton3_Click()
If Val(Me.TextBox18.Text) > 2006 Then Me.TextBox19.Text = CStr(Val(Me.TextBox19.Text) + 0.3)
If Val(Me.TextBox18.Text) < 2006 Then Me.TextBox19.Text = CStr(Val(Me.TextBox19.Text) + 0.5)
If Val(Me.TextBox5.Text) > 2006 Then Me.TextBox19.Text = CStr(Val(Me.TextBox19.Text) + 0.3)
If Val(Me.TextBox5.Text) < 2006 Then Me.TextBox19.Text = CStr(Val(Me.TextBox19.Text) + 0.5)

End Sub

Mais comme avec le premier code que j'ai indiqué, le total ne se fait pas.

Peut-être le problème de conversion dont parlait Galopin01...

Des ENDIF causent le même résultat que précédemment.

Merci Curulis57 pour votre proposition. J'ai essayé de compléter comme ça:

Private Sub CommandButton3_Click()
If Val(Me.TextBox18.Text) > 2006 Then Me.TextBox19.Text = CStr(Val(Me.TextBox19.Text) + 0.3)
If Val(Me.TextBox18.Text) < 2006 Then Me.TextBox19.Text = CStr(Val(Me.TextBox19.Text) + 0.5)
If Val(Me.TextBox5.Text) > 2006 Then Me.TextBox19.Text = CStr(Val(Me.TextBox19.Text) + 0.3)
If Val(Me.TextBox5.Text) < 2006 Then Me.TextBox19.Text = CStr(Val(Me.TextBox19.Text) + 0.5)

End Sub

Mais comme avec le premier code que j'ai indiqué, le total ne se fait pas.

Peut-être le problème de conversion dont parlait Galopin01...

Des ENDIF causent le même résultat que précédemment.

Et le code avec les else ?

Salut l'équipe,

je n'avais pas vraiment fait attention : ce sont des dates de naissance écrites comme ceci ?

01/02/2006

Alors, ce sera plutôt ainsi :

If Val(Right(Me.TextBox18.Text, 4)) > 2006 Then Me.TextBox19.Text = CStr(Val(Me.TextBox19.Text) + 0.3)

A+

Non, il n'y a que les années de naissance.

Malheureusement ça ne fonctionne pas.

C'est comme si les valeurs ajoutées +0.3 ou +0.5 n'étaient calculées qu'une fois avec les infos de la première textbox.

Si j'indique deux dates de naissance dans les deux textbox, j'ai bien +0.3 ou +0.5 suite aux infos de la première mais pour la deuxième, on dirait qu'il n'y a pas de calcul.

Re,

J'ai testé de mon coté en utilisant les 0.3 et 0.5 comme variables pour l'additionner à la fin du code à la

valeur de la textbox19.

Private Sub CommandButton1_Click()
Dim matextbox As Single
Dim moncalcul1 As Single
Dim moncalcul2 As Single
matextbox = CDbl(TextBox19.Value)

If CDbl(TextBox18.Value) > 2006 Then moncalcul1 = 0.3
If CDbl(TextBox18.Value) < 2006 Then moncalcul1 = 0.5

If CDbl(TextBox5.Value) > 2006 Then moncalcul2 = 0.3
If CDbl(TextBox5.Value) < 2006 Then moncalcul2 = 0.5

TextBox19.Value = matextbox + moncalcul1 + moncalcul2
End Sub

Cela évite de toucher à la valeur de la textbox.19 tant qu'on n'a pas trouvé les valeurs qu'on va lui rajouter

à la fin.

Merci encore mais j'ai toujours le même résultat. Je ne comprends absolument pas pourquoi. Toutes ces macros semblent adaptées.

Je crois que je vais essayer de faire plusieurs textbox, une par année de naissance (qui afficheront +0.5 ou +0.3) dont j'additionnerai les valeurs sur la textbox19.

Je vais tester.

Merci encore mais j'ai toujours le même résultat. Je ne comprends absolument pas pourquoi. Toutes ces macros semblent adaptées.

Je crois que je vais essayer de faire plusieurs textbox, une par année de naissance (qui afficheront +0.5 ou +0.3) dont j'additionnerai les valeurs sur la textbox19.

Je vais tester.

Je pense qu'il doit y avoir un autre évènement dans ton fichier qui pose problème car mon exemple fonctionne

8classeur1.xlsm (19.15 Ko)

C'est aussi ce que je me dis.

En tout cas merci pour le temps consacré à mon problème.

J'ai la solution, reste plus qu'à trouver comment l'appliquer.

Au plaisir,

Rechercher des sujets similaires à "somme textbox value"