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.