Trouver les valeurs qui composent une formule

aeque

XLDnaute Occasionnel
Bonjour le forum

Encore une fois j'ai besoin de vos lumières.

J'aimerai pouvoir retrouver les montants qui compose une formule

Exemple : en A1 ma formule est
Code:
=(4000,50+250+2030+4000)*0,92

en B1 j'aimerai avoir 4000,50

C1 : 250

D1 : 2030 etc ....

à noter que la formule en A1 peut être aléatoire avec un ou plusieurs montants

Merci beaucoup

Aeque
 

Staple1600

XLDnaute Barbatruc
Re : Trouver les valeurs qui composent une formule

Bonsoir à tous

aeque
Avec Excel 2013, on peut déjà utiliser
Code:
=FORMULETEXTE(A1)
Et ensuite on peut utiliser les fonctions classiques STXT et CHERCHE
Exemple pour extraire le premier terme
Code:
=SUBSTITUE(STXT(FORMULETEXTE(A1);2;CHERCHE("+";FORMULETEXTE(A1))-2);"(";"")
cette formule renvoie 4000
 

Modeste geedee

XLDnaute Barbatruc
Re : Trouver les valeurs qui composent une formule

Bonsour®
une approche ... :rolleyes:
VB:
Sub Macro1()
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, OtherChar _
        :="+", FieldInfo:=Array(1, 2), TrailingMinusNumbers:=True
    Columns("A:A").Select

    Cells.Replace What:="=", Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:="(", Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:=")", Replacement:=" ", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=True, OtherChar:= _
        "+", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), _
        Array(6, 1)), TrailingMinusNumbers:=True
    
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Trouver les valeurs qui composent une formule

Bonsoir à tous, Modeste Geedee

Donc si on penche vers VBA, alors une autre approche par fonction personnalisée
Code:
Function xformule(ByVal r As Range, sep$, x As Byte) As String
xformule = Split(r.Formula, sep)(x)
End Function
s'utilise ainsi
=xformule(A1;"+";0)
pour renvoyer le premier terme
=xformule(A1;"+";1)
pour renvoyer le second terme

Allez cette fois-ci, rideau ! Bonne nuit à tous.
 

R@chid

XLDnaute Barbatruc
Re : Trouver les valeurs qui composent une formule

Bonsoir @ tous,
N'est pas parfaite mais ça peut dire quelques choses,
Dans le gestionnaire de noms, créer un nouveau champ nommé,
MesValeurs :
Code:
=EVALUER("{"&SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(LIRE.CELLULE(6;Feuil1!$A$1);"=";);")";);"(";);"*";"+");"+";";")&"}")

en B1,
Code:
=SIERREUR(INDEX(MesValeurs;COLONNE()-1);"")
@ tirer vers la droite

@ + +
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 033
Membres
104 010
dernier inscrit
Freba