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: