Texte NumDansChaine

Magic_Doctor

XLDnaute Barbatruc
VB:
Function NumDansChaine$(chaîne As String, Optional n As Byte = 1)
'**********************************************************************************
'Récupère un chiffre dans une chaîne de caractères qui peut en contenir plusieurs
'BOISGONTIER / david84 / mapomme / Rouge
'**********************************************************************************
'- chaîne : la chaîne de caractères qui peut comprendre 1, voire davantage de chiffres séparés par du texte
'- n : la position d'un chiffre dans la chaîne
'Exemples : NumDansCadena("Romina a 1 magnifique petit chat, 2 énormes chiens et 155,35 pesos dans son sac à main",1) --> 1
'           NumDansCadena("Romina a 1 magnifique petit chat, 2 énormes chiens et 155,35 pesos dans son sac à main",2) --> 2
'           NumDansCadena("Romina a 1 magnifique petit chat, 2 énormes chiens et 155,35 pesos dans son sac à main",3) --> 155,35
'           NumDansCadena("Romina a 1 magnifique petit chat, 2 énormes chiens et 155,35 pesos dans son sac à main",n > 3) [il n'y a que 3 chiffres dans la chaîne] --> ""

Dim Obj As Object, a As Object
    Set Obj = CreateObject("vbscript.regexp")
    Obj.Global = True
    Obj.Pattern = "\d+(" & Application.DecimalSeparator & "\d+)?"
    Set a = Obj.Execute(chaîne)
    On Error GoTo Resultat_Nul
    NumDansChaine = a(n - 1)
    Exit Function
Resultat_Nul:
    NumDansChaine = ""
End Function
 

Magic_Doctor

XLDnaute Barbatruc
Une autre manière :
VB:
Function NumDansChaine(chaîne As String, Optional n As Byte = 1)
'Récupère un chiffre dans une chaîne de caractères
'BOISGONTIER / david84 / mapomme / job75
'- chaîne : la chaîne de caractères qui comprend 1, voire davantage de chiffres séparés par du texte
'- n : la position d'un chiffre dans la chaîne
'Exemple : NumDansCadena("Romina a 1 magnifique petit chat, 2 énormes chiens et 155,35 pesos dans son sac à main",1) --> 1
'          NumDansCadena("Romina a 1 magnifique petit chat, 2 énormes chiens et 155,35 pesos dans son sac à main",2) --> 2
'          NumDansCadena("Romina a 1 magnifique petit chat, 2 énormes chiens et 155,35 pesos dans son sac à main",3) --> 155,35

    Dim Obj As Object, a As Object

    Set Obj = CreateObject("vbscript.regexp")
    Obj.Global = True
    Obj.Pattern = "\d+(" & Application.DecimalSeparator & "\d+)?"
    Set a = Obj.Execute(chaîne)
 
    If n = 0 Or n > a.Count Then NumDansChaine = "" Else NumDansChaine = CDbl(a(n - 1))
 
End Function
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 107
dernier inscrit
cdel