Bonjour,

je souhaite extraire les valeurs numériques d'une chaine de caractère, et pour cela j'ai utilisé une routine que j'ai trouvé sur ce forum :

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
 
Sub extraireValeursNumeriques_DansChaine()
    Dim i As Byte, Nb As Byte
    Dim Cible As String, Resultat As String
    Dim Nombre As Double
 
    Cible = "y = 2,851108E-09x3 - 1,671366E-06x2 + 1,023384E-03x + 2,591152E-02
R² = 9,999446E-01"
    'Pour que fonction Val puisse reconnaitre les décimales: Remplacement des
    'virgules par des points
    Cible = Replace(Cible, ",", ".")
    'Pour gérer deux nombres qui se suivent: remplacement des espaces
    'par un caractère Alpha
    Cible = Replace(Cible, " ", "x")
 
    For i = 1 To Len(Cible)
        If IsNumeric(Mid(Cible, i, 1)) Then
        Nombre = Val(Mid(Cible, i, Len(Cible) - i + 1))
        Nb = Nb + 1
        Resultat = Resultat & Nombre & vbLf
        i = i + Len(Str(Nombre)) - 1
        End If
    Next
 
    MsgBox "Il y a " & Nb & " valeurs numériques dans la cellule " & vbLf & Resultat
End Sub
le problème que je rencontre c'est que les 2 premières expressions numériques sont bien rendues mais les suivantes sont séparées de leur puissance exemple :
1er expression = 2,85111E-09
2ème expression = 1,67137E-06
3ème expression = 0,001023384
4 ème expression = 3
5ème expression = 0,02591152
6ème expression = 2
7ème expression = 0,9999446
8ème expression = 1

auriez-vous une solution à me proposer?

Merci d'avance