Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Résumer plusieurs formules dans une seule cellule

  • Initiateur de la discussion Initiateur de la discussion frsonge
  • 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 !

F

frsonge

Guest
Bonjour,

J'ai 30 cellules avec des formules dans chacune d'elles.
Je souhaiterais rassembler ces 30 formules en une seule.

Je pourrais recopier toutes les formules une a une et les imbriquer entre elle mais je me demandais s'il n'existe pas une option sur Excel qui permet de faire cela par magie 🙂

merci !!
 
Re : Résumer plusieurs formules dans une seule cellule

Bonjour, frsonge, et bienvenue sur XLD

Point de magie dans Excel, ni de boule de cristal sur le forum. Joignez un fichier exemple, et ceux qui trouveront une solution à votre problème se feront un plaisir de la partager 🙂
 
Re : Résumer plusieurs formules dans une seule cellule

Bonsoir frsonge,

A long time ago, quand je fréquentais Answers US, j'avais commencé à écrire une macro de ce type. C'est pourquoi elle est commentée en anglais (anglais basique comme le visual)
Je la joins sans aucune assurance de réussite. Je crois bien que je ne l'avais pas déverminé à fond à l'époque ( d'où la présence du GOTO !).

Le mode d'emploi est dans le fichier!
Code:
Sub SubRefInFormula()

'Substitute into a formula the references with the formulas written in those references.

Dim xCol As String, xLig As String, xRef As String
Dim xFor1 As String, xFor2 As String
Dim Xsource As Range, xSub As Range, xDest As Range
Dim IsArray As Boolean

On Error GoTo FIN
    ' Selection of the initial formula
    Set Xsource = Application.InputBox(Title:="Initial cell...", _
                                                prompt:=" Select the cell containing the initial formula :?", _
                                                Type:=8)
    xFor1 = Xsource.FormulaLocal
    IsArray = Xsource.HasArray
    
    ' Selection of the destination cell (could be the same ==> dangerous !)
    Set xDest = Application.InputBox(Title:="Destination cell...", _
                                                prompt:=" Select the cell that will contain the final formula :?", _
                                                Type:=8)

AutreSubstitution:
    'Loop until user clicks on 'Cancel' in the dialog box
    Set xSub = Application.InputBox(Title:="Cell containing a formula", _
         prompt:=" Select a cell with a formula to insert into the final formula :?" & _
         vbLf & " - Cancel when no more replacement -", _
         Type:=8)
    If Not xSub.HasFormula Then GoTo AutreSubstitution
    ' The result formula may be an array formula or not
    IsArray = IsArray Or xSub.HasArray
    ' Delete the sign "=" at the beginning of the formula
    xFor2 = xSub.FormulaLocal
    If Left(xFor2, 1) = "=" Then xFor2 = Right(xFor2, Len(xFor2) - 1)
    ' Get the row number and the column letters.
    xCol = xSub.Address(True, False, xlA1)
    xCol = Left(xCol, InStr(xCol, "$") - 1)
    xLig = xSub.Address(True, False, xlA1)
    xLig = Right(xLig, Len(xLig) - InStr(xLig, "$"))
     ' replace the string like $A1
    xRef = "$" & xCol & xLig
    xFor1 = Replace(xFor1, xRef, "(" & xFor2 & ")")
     ' replace the string like A$1
    xRef = xCol & "$" & xLig
    xFor1 = Replace(xFor1, xRef, "(" & xFor2 & ")")
     ' replace the string like $A$1
    xRef = "$" & xCol & "$" & xLig
    xFor1 = Replace(xFor1, xRef, "(" & xFor2 & ")")
     ' replace the string like A1
    xRef = xCol & xLig
    xFor1 = Replace(xFor1, xRef, "(" & xFor2 & ")")
    ' insert the new formula into the destination cell
    xDest.FormulaLocal = xFor1
    
GoTo AutreSubstitution

FIN:
    xDest.Select
    ' If Dest has a formula and if Dest might have an ARRAy formula
    If xDest.HasFormula And IsArray Then
        MsgBox "The result formula is certainly an array formula." & vbCrLf & vbCrLf & _
        "Do not forget to validate it with Ctrl+Shift+Enter !"
        ' Edit the Dest formula so the user can immediately validate the formula
        ' with Ctrl+Shift+Enter if he want the dest formula to be an array formula.
        Application.SendKeys ("{F2}")
    End If
End Sub

Function TheFormulaLocal(xRG As Range) As String
    TheFormulaLocal = xRG.FormulaLocal
End Function

Function TheFormula(xRG As Range) As String
    TheFormula = xRG.Formula
End Function
 

Pièces jointes

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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
315
Réponses
2
Affichages
283
Réponses
5
Affichages
173
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…