Bonjour,
Est il possible d'extraire un montant à partir d'une somme ?
Exemple :
A1=1700,03+350,53+200,45
Si j'entre en B1=2
J'aurais en C1=350,53 c'est-à-dire le deuxième montant dans A1.
Merci.
Function TabSomme(ByVal LaFormule As Variant, ByVal Position As Integer) As Variant
Dim I As Integer
Dim MaValeur As Variant
MaValeur = Split(CStr(Range("A1").Formula), "+")(Position - 1)
For I = 1 To Len(MaValeur)
Select Case Mid(MaValeur, I, 1)
Case "="
Case "."
TabSomme = TabSomme & ","
Case Else
TabSomme = TabSomme & Mid(MaValeur, I, 1)
End Select
Next I
TabSomme = CDbl(TabSomme)
End Function
@eric
Merci pour votre fonction.
En la copiant sur une autre feuille et ailleurs qu'en A1, j'ai un message d'erreur.
En repartant de votre travail, une autre fonction allégée qui me parait fonctionner (sous les contraintes imposées à savoir qu'il n'y a que des additions de chiffres)
VB:
Function ValPosition(LaFormule, Position)
Dim Idr$
'--utilisation de l'adresse de la cellule de la formule
x = Split(LaFormule.Address, "$")(1)
x1 = Split(LaFormule.Address, "$")(2)
Idr = x & x1
'--split pour obtenir la valeur recherchée
MaValeur = Split(CStr(Range(Idr).Formula), "+")(Position - 1)
ValPosition = CDbl(Replace(MaValeur, "=", "")) '--pour éviter erreur sur position 1
End Function
Function NiemeTerme(x As Range, ByVal n&)
Dim t
t = Split(Replace((Replace(Replace(x.Formula, ",", "."), "=", "")), " ", ""), "+")
If n - 1 >= 0 And n - 1 <= UBound(t) Then NiemeTerme = Val(t(n - 1)) Else NiemeTerme = ""
End Function