Fonction IsNumeric
Waner14
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je suis en galère ...
Je cherche a vérifier les 3 derniers caractères de ma variable sont des chiffres..
RD = Right(NOM_VRF1, 3)
Si se sont des chiffres, les copier sinon vérifier que les 2 derniers sinon que le dernier.
RD = Right(NOM_VRF1, 3)
RDCheck = IsNumeric(RD1)
If RDCheck = True Then
RD = Right(NOM_VRF1, 3)
RD1 = Val(RD)
RDCheck = IsNumeric(RD1)
ElseIf RDCheck = True Then
RD = Right(NOM_VRF1, 2)
RD1 = Val(RD)
RDCheck = IsNumeric(RD1)
ElseIf RDCheck = True Then
RD = Right(NOM_VRF1, 1)
RD1 = Val(RD)
RDCheck = IsNumeric(RD1)
ElseIf RDCheck = True Then
RD = Right(NOM_VRF1, 1)
Else
RD = 3
End If
Sauf que si il y a une lettre dans la variable, IsNumeric renverra uniquement false.
Avez une solution svp.
Je vous remercie d'avance.
Cdlt,
Je suis en galère ...
Je cherche a vérifier les 3 derniers caractères de ma variable sont des chiffres..
RD = Right(NOM_VRF1, 3)
Si se sont des chiffres, les copier sinon vérifier que les 2 derniers sinon que le dernier.
RD = Right(NOM_VRF1, 3)
RDCheck = IsNumeric(RD1)
If RDCheck = True Then
RD = Right(NOM_VRF1, 3)
RD1 = Val(RD)
RDCheck = IsNumeric(RD1)
ElseIf RDCheck = True Then
RD = Right(NOM_VRF1, 2)
RD1 = Val(RD)
RDCheck = IsNumeric(RD1)
ElseIf RDCheck = True Then
RD = Right(NOM_VRF1, 1)
RD1 = Val(RD)
RDCheck = IsNumeric(RD1)
ElseIf RDCheck = True Then
RD = Right(NOM_VRF1, 1)
Else
RD = 3
End If
Sauf que si il y a une lettre dans la variable, IsNumeric renverra uniquement false.
Avez une solution svp.
Je vous remercie d'avance.
Cdlt,
4 réponses
Bonjour tout le monde
une regexp le lundi matin, dur,dur....
pour le fun (?)
mais on doit trouver sans utiliser regexp
une regexp le lundi matin, dur,dur....
pour le fun (?)
Sub ccm()
Dim RD
RD = Right(Range("B2"), 3)
MsgBox extrait_chiffres(RD)
End Sub
'---------------------------------------------------------------------------
Function extrait_chiffres(ByRef texto) As Integer
Dim reg As Object
Dim extraction As Object
Dim digit
Set reg = CreateObject("vbscript.regexp")
reg.Global = True
reg.Pattern = "(\d?\d?\d)"
Set extraction = reg.Execute(texto)
For Each digit In extraction
extrait_chiffres = extrait_chiffres & (digit.Value)
If IsNumeric(extrait_chiffres) Then Nbre = Nbre + 1
Next digit
If Nbre = 0 Then
MsgBox "aucun chiffre dans les 3 derniers caractères"
End
End If
Set extraction = Nothing
Set reg = Nothing
End Function
mais on doit trouver sans utiliser regexp
Salut,
Tu te compliques la vie.
La demande est de vérifier que les 3 derniers caractères sont des chiffres, donc pas besoin de repasser par un IsNumeric (qui n'existe pas en .net)
Le pattern est un truc comme ça (de tête pas vérifié) ".+\d{3}$" qui signifie n'importe quoi plein de fois, suivi de 3 chiffres et fin de texte.
Tu te compliques la vie.
La demande est de vérifier que les 3 derniers caractères sont des chiffres, donc pas besoin de repasser par un IsNumeric (qui n'existe pas en .net)
Le pattern est un truc comme ça (de tête pas vérifié) ".+\d{3}$" qui signifie n'importe quoi plein de fois, suivi de 3 chiffres et fin de texte.
Je m'disais aussi !
sans regexp et + compréhensible à mon avis
a adapter (msgbox pour la démo)
à transformer en nombre (rep*1)car "rep" est du texte
Michel
sans regexp et + compréhensible à mon avis
a adapter (msgbox pour la démo)
Option Explicit
'-------------------------------
Sub ccm()
Dim Fin, cptr As Byte, xxx, rep
Fin = StrReverse((Right(Range("B2"), 3)))
For cptr = 1 To 3
xxx = Mid(Fin, cptr, 1)
If IsNumeric(xxx) Then
rep = rep & xxx
Else
Exit For
End If
Next
If rep = "" Then
MsgBox "aucun nombre"
Else
MsgBox StrReverse(rep)
End If
End Sub
à transformer en nombre (rep*1)car "rep" est du texte
Michel
Je viens de tester le pattern, j'y ai ajouté un groupement (les parenthèses) pour extraire les chiffres bien que Warmer14 ne l'ai pas demandé.
Comme il n'a toujours pas dit quel VB il utilise, je ne propose pas d'implémentation (de toute façon je ne sais faire qu'en .Net;) )

On voit sur la capture d'un site de teste en ligne que la variable est validée (Matched String) et que les 3 chiffres sont extraits dans $1
PS si je mets datdatz1234 en entrée ça match aussi est 234 est extrait.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Comme il n'a toujours pas dit quel VB il utilise, je ne propose pas d'implémentation (de toute façon je ne sais faire qu'en .Net;) )

On voit sur la capture d'un site de teste en ligne que la variable est validée (Matched String) et que les 3 chiffres sont extraits dans $1
PS si je mets datdatz1234 en entrée ça match aussi est 234 est extrait.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Vba vb6 vbs vb.net.. on peut utiliser les regex dans tous ces langages. :-)
Oui je sais, mais y'a des réfractaires qui disent que like est un peu plus simple....