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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
🙂
 
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

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

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

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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
110
  • Question Question
Microsoft 365 Catégorisation
Réponses
5
Affichages
544
Réponses
5
Affichages
330
Réponses
2
Affichages
60
Réponses
2
Affichages
196
Réponses
10
Affichages
101
Réponses
10
Affichages
58
Réponses
16
Affichages
789
Retour