bonjour je dispose du code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Function estChif(ByVal s As String) As Boolean
'Renvoie vrai si le caractère s est un chiffre.
  estChif = Asc("0") <= Asc(s) And Asc(s) <= Asc("9")
End Function
 
Function extractionNb(ByVal s As String, ByVal d As Integer) As String
'Renvoie le premier nombre contenu dans la chaîne de caractères s,
'à partir de la position d ; renvoie -1 s'il n'y en a pas.
  Dim n As Integer, i As Integer, p As String
  n = Len(s): i = d
  Do
    If i > n Then
      extractionNb = -1: Exit Function
    ElseIf estChif(Mid(s, i, 1)) Then
      Exit Do
    Else
      i = i + 1
    End If
  Loop
  p = Mid(s, i, 1): i = i + 1
  Do
    If i > n Then
      extractionNb = p: Exit Function
    ElseIf estChif(Mid(s, i, 1)) Then
      p = p & Mid(s, i, 1): i = i + 1
    Else
      extractionNb = p: Exit Function
    End If
  Loop
End Function

Malheureusement lorsque j utilise une fonction test je remarque que mon code ne prend pas en compte les nombres decimaux

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Sub TestExtraction()
Dim code As String, d As Integer
code = "10y10y 200wc A300.12 vs 500"
MsgBox ("le nombre cherche vaut : " & extractionNb(code, 15) & Chr(10))
End Sub
ce test par exemple ne me renvoie que la valeur 300
Comment faire pour tenir compte des nombres decimaux a , et a . ? merci de votre aide