Decomposer une formule Excel en plusieurs lignes

Bonjour à tous

j'ai un fichier dans lequel j'ai des onglets de détail et des onglets de récapitulation des données.

Or mon chef me demande maintenant de mettre le détail des formules de recap dans l'onglet détail

donc soit il faut que pour chaque formule de rechapé, j'aille copier éléments par éléments l'intitulé de la ligne sur l'onglet détail et que je copie/colle sur le feuille recap après avoir insérer des lignes...

N'y aurait-il pas un moyen d'automatiser tout çà ?

je vous joins un fichier pour plus de clarté (c'est très simplifié, dans la réalité il y a une centaine d'onglet et plusieurs centaines de lignes par onglet)

Merci d'avance

Bonjour,

Solution par TCD en ajoutant un champ de plus dans le détail.

Bonjour

Merci pour votre réponse rapide, mais ce n'est pas possible car mon exemple est simplifié comme je le disais

Dans la réalité la formule comporte entre 20 et 30 éléments qui sont choisis parmi des centaines de lignes des feuilles détails

Bonsoir

personne ne sais comment je pourrai procéder ?

merci d'avance

Bonsoir,

Sub Dégrouper(plg As Range, dest As Range)
    Dim tbl(), frm, i%, j%, g%
    For i = 1 To plg.Rows.Count
        g = g + 1: ReDim Preserve tbl(1 To 3, 1 To g)
        tbl(1, g) = plg.Cells(i, 1)
        tbl(3, g) = plg.Cells(i, 2)
        frm = plg.Cells(i, 2).Formula
        frm = Split(Replace(frm, "=", ""), "+")
        For j = 0 To UBound(frm)
            g = g + 1: ReDim Preserve tbl(1 To 3, 1 To g)
            With Range(frm(j))
                tbl(1, g) = .Cells(1, 0): tbl(2, g) = .Cells(1, 1)
            End With
        Next j
    Next i
    dest.Resize(UBound(tbl, 2), 3).Value = WorksheetFunction.Transpose(tbl)
End Sub

Sub DétaillerPlage()
    Dim plS As Range, plC As Range
    With ActiveSheet
        Set plS = .Range("A4:B6")
        Set plC = .Range("F4")
    End With
    Dégrouper plS, plC
End Sub

Tu testes en appuyant sur le bouton, qui lance la 2e macro, laquelle lance la 1re, qui fait le boulot.

C'est dans la 1re macro que tu définis la plage à traiter et la plage de destination (n'indiquer que la cellule supérieure gauche pour la destination).

Il faudra aussi que tu veilles à avoir des formules correctes, en supprimant le premier + qui suit immédiatement le signe =. Il n'est pas prévu de débuter une formule par un +, je n'en ai donc pas tenu compte, mais sa présence déclenchera une erreur !

Il est vrai que la formule logique aurait dû être faite avec SOMME... La macro est prévue pour traiter des formules additionnant des cellules individuelles. Cependant si on devait traiter des formules utilisant la fonction SOMME, je veux bien la reprendre pour l'adapter à ce cas...

Cordialement.

Rechercher des sujets similaires à "decomposer formule lignes"