VBA Renvoyer le résultat d'une cellule dont la valeur peut varier

Résolu/Fermé
Sophiie77 - 30 sept. 2020 à 10:56
 Sophiie77 - 30 sept. 2020 à 12:13
Bonjour,

Je me lance dans l'écriture d'une macro Excel et je suis complétement bloquée car malgré mes recherche je ne parviens pas à obtenir le résultat voulu.

Dans cette macro, je parviens à faire des sous-totaux dans un tableau de valeurs, ensuite j'aimerai que le total final (la dernière ligne du tableau) se remplisse également dans la cellule "E6", en simple je voudrai faire un "=E255" dans la cellule E6 mais en demandant de récupérer la dernière cellule non vide du tableau.
Avec ma macro, je parviens à récupérer la valeur de la dernière cellule non vide mais celle-ci vient à changer (suite à une actualisation de valeur par exemple) la cellule E6 ne se met pas à jour.

Sub Soustotal()
'
' Soustotal Macro
'

'
Range("B9").Select
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(4, 5, 6, 7, _
8, 9, 10, 11), Replace:=True, PageBreaks:=False, SummaryBelowData:=True
ActiveSheet.Outline.ShowLevels RowLevels:=2
Range("B21:L225").Select
Selection.SpecialCells(xlCellTypeVisible).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
With Selection.Font
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0
End With
Selection.Font.Bold = False
Selection.Font.Bold = True
ActiveSheet.Outline.ShowLevels RowLevels:=3
Range("E6").Select
Application.CutCopyMode = False
der_lig = Range("E" & Rows.Count).End(xlUp).Row
ActiveCell.FormulaR1C1 = Cells(der_lig, 5)
Range("E6").Select
Selection.AutoFill Destination:=Range("E6:L6"), Type:=xlFillDefault

End Sub



Merci de votre aide et bonne journée.
Sophie
A voir également:

2 réponses

f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708
30 sept. 2020 à 11:34
Bonjour,
Comprends pas tout, mais a defaut, pour ecrire une formule
der_lig = Range("E" & Rows.Count).End(xlUp).Row
ActiveCell.FormulaLocal = "=E" & der_lig
1
Merci beaucoup! C'est exactement ce que je cherchais et je n'y parvenais pas avec ActiveCell.FormulaR1C1.

Très bonne journée à vous
0