Somme de textbox.value Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
L
LudoSer
Jeune membre
Jeune membre
Messages : 25
Inscrit le : 13 décembre 2017
Version d'Excel : 2019

Message par LudoSer » 3 décembre 2019, 10:59

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
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'313
Appréciations reçues : 144
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 3 décembre 2019, 11:10

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+
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 2'358
Appréciations reçues : 158
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 3 décembre 2019, 11:16

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
L
LudoSer
Jeune membre
Jeune membre
Messages : 25
Inscrit le : 13 décembre 2017
Version d'Excel : 2019

Message par LudoSer » 3 décembre 2019, 11:28

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".
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 2'358
Appréciations reçues : 158
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 3 décembre 2019, 11:32

LudoSer a écrit :
3 décembre 2019, 11:28
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. :P
Mais la réponse est dans le code erreur "End if" sans If

Essaies de retirer les trois premiers end if .
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 2'358
Appréciations reçues : 158
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 3 décembre 2019, 11:35

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
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'545
Appréciations reçues : 205
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 3 décembre 2019, 11:42

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)
8-)
A+
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 2'358
Appréciations reçues : 158
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 3 décembre 2019, 11:44

curulis57 a écrit :
3 décembre 2019, 11:42
(°v°)°
L
LudoSer
Jeune membre
Jeune membre
Messages : 25
Inscrit le : 13 décembre 2017
Version d'Excel : 2019

Message par LudoSer » 3 décembre 2019, 11:59

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.
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 2'358
Appréciations reçues : 158
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 3 décembre 2019, 12:00

LudoSer a écrit :
3 décembre 2019, 11:59
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 ?
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message