XL 2016 Extraire montant a partir d'une somme.

  • Initiateur de la discussion Initiateur de la discussion kaki31
  • Date de début Date de début

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

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

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

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
1
Affichages
296
Réponses
7
Affichages
554
  • Question Question
Microsoft 365 Catégorisation
Réponses
5
Affichages
541
Réponses
5
Affichages
324
Réponses
2
Affichages
187
Réponses
4
Affichages
367
Réponses
16
Affichages
769
Réponses
8
Affichages
237
Réponses
2
Affichages
294

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
315 283
Messages
2 118 012
Membres
113 408
dernier inscrit
lausablk