XL 2010 nombre decimal non pris en compte par if <x< then

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

adnanoht

XLDnaute Nouveau
Bonjour tous le monde,
j'ai besoin de votre aide. en fait j'ai une code VBA qui permet de selon les valeur saisie sur un textbox d'un userform de remplir et changer la couleur d'une cellule.

If TextBox15.Value >= 6.5 And TextBox15.Value <= 9 Then
Range("n" & dernlign + 14).Value = "OK": Range("n" & dernlign + 14).Interior.Color = RGB(0, 255, 0)
Else: Range("n" & dernlign + 14).Value = "NOK": Range("n" & dernlign + 14).Interior.Color = RGB(255, 96, 0)
End If

par exemple si je tape 6.9 dans le textbox la cellule concerné devrai contenir OK et elle doit être en vert. alors que ce que j'ai c'est le contraire.
donc ce que je comprend c’est que les nombre décimaux ne sont pas pris en compte, c'est correct?
ma question est qu'est ce que je doit changer pour que cela marche?

Merci d'avance!
 
Bonjour,

CDBL exige une virgule (pour les claviers francisés) ou Application.DecimalSeparator comme séparateur décimal dans les chaînes de caractères représentant des nombres décimaux.

Si vos textboxes contiennent des chose comme "12.36" => CDBL plante
S'ils contiennent "12,36" => CDBL ne plantera pas.

Contournements possibles:
1 - valeur = Cdbl(replace(TextBox15.Text,".",","))
2 - valeur = Cdbl(Replace(TextBox15.Text,".",application.DecimalSeparator))
3 - remplacer le point par la virgule à la saisie ou sur évènement Exit du textbox

Exemple de remplacement lors de la saisie:
VB:
Private Sub TextBox15_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 46 Then KeyAscii = 44 'Remplace point par virgule
End Sub

Cordialement
,
 
Dernière édition:
Bonjour,

@danielco, apparemment votre textBox comporte une Virgule donc pas de problème CDBL .

Msgbox Cdbl("12.36") => problème
MsgBox Cdbl("12,36") => pas problème
MsgBox val("12.36") => pas problème
MsgBox val("12,36") => affiche 12 (s'arrête sur le premier caractère non numérique)

Bonne soirée
 
Dernière édition:
Re,

Eh bien dans le cas ou la chaîne de caractère contient un séparateur décimal qui n'est pas celui du système(Application.DecimalSeparator) ou tout autre caractère ne pouvant être interprété comme numérique.

Souvent la saisie des nombres se fait avec le pavé numérique et le point du pavé numérique n'est pas toujours remplacé par la virgule (TextBox: non Cellule: oui).

Vous avez essayé les 4 msgBox ?

Cordialement
 
re
bonjour
VB:
Private Sub TextBox1_Change()
 TextBox1 = Replace(TextBox1, ".", ",")
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 KeyCode = IIf(KeyCode = 110, 188, KeyCode)
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = IIf(KeyAscii = 44, 46, KeyAscii)
End Sub
 
Bonjour,

Merci tous pour votre aide, c'est vraiment magnifique ce forum. J'ai contourné le problème en faisant référence aux cellules où sont saisie ces textbox. c'est à dire en remplaçant dans le code : ça TextBox15.Value par Range("l" & dernlign + 14).Value
C'est un peu de la triche mais ca marche XD

Cordialement,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
468
Réponses
2
Affichages
1 K
Réponses
8
Affichages
914
Réponses
1
Affichages
1 K
Retour