XL 2016 Extraire montant a partir d'une somme.

kaki31

XLDnaute Occasionnel
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.
:)
 

Eric KERGRESSE

XLDnaute Occasionnel
Bonjour,

A tester :

VB:
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
 

Pièces jointes

  • Kaki31.xlsm
    15.3 KB · Affichages: 7

zebanx

XLDnaute Accro
Bonjour Kaki31,Eric, le forum

@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

A discuter. Bonne journée
zebanx
 

Pièces jointes

  • Kaki31.xlsm
    21.6 KB · Affichages: 1

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous :),

Une autre p'tite fonction personnalisée :
VB:
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
 

Pièces jointes

  • kaki31- Nème terme d'une somme- v1.xlsm
    17 KB · Affichages: 3

Dranreb

XLDnaute Barbatruc
Bonsoir.
Il semble que cette fonction perso soit suffisante :
VB:
Function TermeSomme(ByVal Cel As Range, ByVal N As Integer) As Double
   TermeSomme = Application.Evaluate(Split(Cel.Formula, "+")(N - 1))
   End Function
En C1 :
Code:
=TermeSomme(A1;B1)
Devrait même pouvoir restituer des valeurs de cellules spécifiées comme termes.
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
298

Statistiques des forums

Discussions
312 211
Messages
2 086 286
Membres
103 170
dernier inscrit
HASSEN@45