Extraire les caractères numériques en VB
Résolu
Vince
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
Bonjour,
Je cherche à n'extraire que les caractères numériques d'une chaine de caractères.
La commande :
if instr(x,"3060") <> 0 then
ExtFunction = Mid(x, InStr(x,"3060") , 17)
end if
me donne bien 17 caractères mais je souhaite supprimer les espaces et les lettres et n'obtenir que les chiffres.
Merci de votre aide
Je cherche à n'extraire que les caractères numériques d'une chaine de caractères.
La commande :
if instr(x,"3060") <> 0 then
ExtFunction = Mid(x, InStr(x,"3060") , 17)
end if
me donne bien 17 caractères mais je souhaite supprimer les espaces et les lettres et n'obtenir que les chiffres.
Merci de votre aide
6 réponses
-
Bonjour,
Essaye avec..ExtFunction = Mid(x, InStr(x,"3060") , 4)
Pour autant que le nombre à rechercher soit toujours de 4 chiffres.
Tu dis -
bonjour
je ne sais pas si j'ai bien compris, mais deux fonctions qui suppriment les caractères non numériques d'une chaine
Public Function X_chiffres1(x As String) As String If x = "" Then X_chiffres1 = "" Else If IsNumeric(Left(x, 1)) Then X_chiffres1 = Left(x, 1) & X_chiffres1(Right(x, Len(x) - 1)) Else X_chiffres1 = X_chiffres1(Right(x, Len(x) - 1)) End If End If End Function Public Function X_chiffres2(x As String) As String Dim s, k As Long s = "" For k = 1 To Len(x) If IsNumeric(Mid(x, k, 1)) Then s = s & Mid(x, k, 1) End If Next k X_chiffres2 = s End Function
bonne suite -
Re,
Effectivement, pourquoi extraire un nombre que l'ont connaît déjà ?
Y faudrait un point de repaire comme par exemplex = "Vendu= 3060 ; retour= 623 "
Une idée !!Sub Test() Dim x As String, d x = "Vendu= 3060 ; Retour= 623 " d = VdRe(x, 0) 'Avec 0 = 3060 : avec 1 = 623 End Sub Public Function VdRe(x As String, Optional Mode As Integer) As Double Dim S As String, i As Integer, e As Integer S = IIf(Mode = 0, "Vendu= ", "Retour=") i = InStr(x, S) If i > 0 Then S = Trim(Mid(x, i + 7)) For e = 1 To Len(S) If Not IsNumeric(Mid(S, e, 1)) Then Exit For Next e VdRe = Val(IIf(e > Len(S), S, Left(S, e - 1))) End If End Function
Ce n'est qu'une idée :DD
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques. -
Bonjour et merci à ceux qui m'ont apporté des réponses.
Ma description était peut être floue.... je cherchais à extraire 17 caractères numériques commençant par 3060.
Visiblement la solution est :
Function ExtFunction (x)
ExtFunction= "0"
if instr(x,"3060") <> 0 then
x = Replace(x," ","")
end if
if instr(x,"3060") <> 0 then
ExtFunction = Mid(x, InStr(x,"3060") , 17)
end if
End Function
MErci encore à Tous -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-