TUTOS.EU

Isoler un chiffre dans une variable contenant du texte

Trouver et retourner que le premier chiffre contenu dans un texte

'Dans une chaine de caractère, retourne la première série de chiffres consécutive
'Par exemple pour "Bol  234 5 raid 6" on retournera 234

Dim ChiffreDebut, ChiffreFin, MonChiffre

UneLigneDeResultat = "Bol  234 5 raid 6"

Wscript.echo "Chaine analysée : " & UneLigneDeResultat

ChiffreDebut = 0 'Valeur par défaut
ChiffreFin = 0 'Valeur par défaut
Compteur = 1 'On se positionne au début de la ligne

'Analyse de la ligne de gauche à droite
Do

	If IsNumeric(Mid(UneLigneDeResultat, Compteur, 1)) = True Then 'Si le caractère scruté est un chiffre
		ChiffreDebut = Compteur
		Exit Do
	Else 'Si on n'a pas encore trouvé de chiffre, on incrémente de 1
		Compteur = Compteur + 1
	End If

Loop While (ChiffreDebut = 0 And (Compteur =< Len(UneLigneDeResultat))) ' (IsNumeric(Mid(UneLigneDeResultat, Compteur, 1)) = False)

If ChiffreDebut > 0 Then 'Si on a trouvé le début d'un chiffre

	'Wscript.echo ChiffreDebut

	ChiffreFin = ChiffreDebut 'Par défaut la fin du chiffre est un digit après le début
	Compteur = ChiffreDebut 'On se positionne au début du chiffre trouvé
	Do

		If IsNumeric(Mid(UneLigneDeResultat, Compteur, 1)) = False Then 'Si le caractère scruté n'est plus un chiffre
			ChiffreFin = Compteur - 1
			Exit Do
		Else 'Si on a encore trouvé un chiffre, alors on avant au caractère suivant mais on note le résultat
			ChiffreFin = Compteur
			Compteur = Compteur + 1
		End If

	Loop While (Compteur =< Len(UneLigneDeResultat)) 'Tant que l'on n'est pas arrivé à la fin de la ligne
	'Wscript.echo ChiffreFin
	
	MonChiffre = Mid(UneLigneDeResultat, ChiffreDebut, (ChiffreFin - ChiffreDebut) + 1)
	Wscript.echo MonChiffre

Else
	Wscript.echo "Pas de chiffre trouvé"
End If
Lien vers le fichier : cliquez ici Copier le code

2