Magic_Doctor
XLDnaute Barbatruc
Bonsoir,
J'ai cette fonction :
Elle marche très bien.
Le seul problème est le suivant : si je choisis, pour le paramètre "n" de la fonction, une valeur qui dépasse le nombre de chiffres présents dans la chaîne, la fonction me renvoie "#¡VALEUR!". Or, je voudrais qu'elle me renvoie "", plutôt que d'avoir à écrire dans la cellule réceptrice :
=SI(ESERROR(NumDansCadena(D2;F1));"";NumDansCadena(D2;F1))
Comment s'y prendre ?
J'ai cette fonction :
VB:
Function NumDansCadena(chaîne As String, Optional n As Byte = 1) As Double
'Récupère un chiffre dans une chaîne de caractères
'BOISGONTIER / david84 / mapomme
'- 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)
NumDansCadena = a(n - 1)
End Function
Le seul problème est le suivant : si je choisis, pour le paramètre "n" de la fonction, une valeur qui dépasse le nombre de chiffres présents dans la chaîne, la fonction me renvoie "#¡VALEUR!". Or, je voudrais qu'elle me renvoie "", plutôt que d'avoir à écrire dans la cellule réceptrice :
=SI(ESERROR(NumDansCadena(D2;F1));"";NumDansCadena(D2;F1))
Comment s'y prendre ?
Dernière édition: