Extraire les caractères numériques en VB

Résolu/Fermé
Vince - 6 mai 2012 à 19:15
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 - 7 mai 2012 à 17:31
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
A voir également:

6 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
7 mai 2012 à 11:34
Bonjour,
Essaye avec..
    ExtFunction = Mid(x, InStr(x,"3060") , 4)

Pour autant que le nombre à rechercher soit toujours de 4 chiffres.
Tu dis
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 7/05/2012 à 11:58
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
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 7/05/2012 à 12:47
Re,
Effectivement, pourquoi extraire un nombre que l'ont connaît déjà ?
Y faudrait un point de repaire comme par exemple
    x = "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.
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
7 mai 2012 à 15:16
A désespérer....
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
7 mai 2012 à 17:31
yes !!
0