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 31 32 33
| Sub extraireValeursNumeriques_DansChaine()
Dim x As Integer, Nb As Integer
Dim Cible As String, Resultat As String
Dim Nombre As Single
Cible = "12,3azerty23,5 67"
'il faut remplacer les virgules par des points
'Pour que fonction Val puisse reconnaitre les décimales.
Cible = Replace(Cible, ",", ".")
'Remplacement des espaces par un caractère Alphabétique, pour
'gérer deux nombres qui se suivent.
Cible = Replace(Cible, " ", "$")
'Boucle sur tous les caractères de la chaîne cible.
'(La fonction Len renvoie le nombre de caractères contenu dans la variable "Cible").
For x = 1 To Len(Cible)
'Si le caractère est de type numérique
If IsNumeric(Mid(Cible, x, 1)) Then
'Extrait la donnée numérique de la chaîne
Nombre = Val(Mid(Cible, x, Len(Cible) - x + 1))
Nb = Nb + 1
'Enregistre la valeur dans la variable de résultat
Resultat = Resultat & Nombre & vbLf
'--- Force l'incémentation de la variable compteur (x) du nombre de caractères
'que contient la donnée numérique extraite:
x = x + Len(Str(Nombre)) - 1
' ---
End If
Next
MsgBox "Il y a " & Nb & " valeurs numériques dans la chaîne:" & vbLf & Resultat
End Sub |
Partager