Fonction Somme sous VBA

Résolu/Fermé
ti_mouton Messages postés 143 Date d'inscription vendredi 29 mai 2015 Statut Membre Dernière intervention 5 septembre 2020 - Modifié par ti_mouton le 27/07/2015 à 14:21
ti_mouton Messages postés 143 Date d'inscription vendredi 29 mai 2015 Statut Membre Dernière intervention 5 septembre 2020 - 28 juil. 2015 à 12:07
Bonjour,

Je cherche à appliquer la fonction somme à la cellule E3. Cette fonction vient récupérer des données dans différentes feuilles de calcul. Il s'agit de faire la somme des éléments contenu dans la plage de cellule (AE7 : Dernière Ligne) de chaque feuille.
Voici mon code, mais il ne fonctionne pas:

Dim DL As Integer
DL = Sheets("BLOCS").Cells(Application.Rows.Count, 2).End(xlUp).Row
Range("E3").FormulaR1C1 = WorksheetFunction.Sum(WorksheetFunction.Sum("AE7" & DL) + WorksheetFunction.Sum(Sheets("ENVIRONNEMENT").Range("AE7" & DL)) + WorksheetFunction.Sum(Sheets("BORD. VOIRIES").Range("AE7" & DL)) + WorksheetFunction.Sum(Sheets("PDTS NEGOCIES").Range("AE7" & DL)))


J'ai le message d'erreur suivant : Impossible de lire la propriété SUM

Merci pour votre aide

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
27 juil. 2015 à 15:11
Bonjour,

« la plage de cellule (AE7 : Dernière Ligne) »
La dernière ligne de quelle colonne ????
1
ti_mouton Messages postés 143 Date d'inscription vendredi 29 mai 2015 Statut Membre Dernière intervention 5 septembre 2020
27 juil. 2015 à 15:23
C'est censé être la dernière ligne de la colonne B. En fait, mon tableau de données s'étend de la colonne B à la colonne AO. La colonne B est la seule colonne du tableau qui ne contient pas de cellule vide.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
27 juil. 2015 à 15:51
Tu veux donc faire la somme de B7 à AE & Dernière ligne ???
0
ti_mouton Messages postés 143 Date d'inscription vendredi 29 mai 2015 Statut Membre Dernière intervention 5 septembre 2020
27 juil. 2015 à 16:03
Non, juste de AE7 jusqu'à la dernière ligne de la colonne AE
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
27 juil. 2015 à 16:04
Donc Range("AE7:AE" & DL)
0
ti_mouton Messages postés 143 Date d'inscription vendredi 29 mai 2015 Statut Membre Dernière intervention 5 septembre 2020
27 juil. 2015 à 16:19
J'ai suivi vos conseils mais j'ai toujours le même code erreur :-(

Voici la totalité du code dont je dispose (et qui a été entièrement développé par des membres du forum, que je remercie grandement !) :

Sub EffaceEtFiltreBLOCS()
Dim Plage As Range
Dim DL As Integer
DL = Sheets("BLOCS").Cells(Application.Rows.Count, 2).End(xlUp).Row

'neutralise le recalcule
Application.Calculation = xlCalculationManual
With Sheets("BLOCS")
' regroupement de tes deux plages dans une seule
Set Plage = Union(.Range(.Cells(6, 2), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 10)), .Range(.Cells(7, 11), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 40)))

'effacement des deux plage
Plage.ClearContents
End With
'remise en place du recalcule automatique
Application.Calculation = xlCalculationAutomatic

' partie liée au filtre avancé
With Sheets("Base SID")
Set Plage = .Range(.Cells(4, 1), .Cells(.Cells(.Rows.Count, 4).End(xlUp).Row, 9))
Plage.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("BLOCS").[B1:B2], CopyToRange:=Sheets("BLOCS").[B6], Unique:=False
End With
'Mise en forme
With Sheets("BLOCS")
.Select
Range("B6:J6").Font.Bold = True
Range("B6:J6").Font.Size = 16
Range("B6:J6").Font.ColorIndex = 2
Range("B6:J6").Interior.ColorIndex = 41
Range("B6:J6").HorizontalAlignment = xlCenter

Set PlageAE = .Range(.Cells(7, 31), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 31))
PlageAE.FormulaR1C1 = .Cells(2, 31).FormulaR1C1

Range("E3").FormulaR1C1 = WorksheetFunction.Sum(WorksheetFunction.Sum("AE7:AE" & DL) + WorksheetFunction.Sum(Sheets("ENVIRONNEMENT").Range("AE7:AE" & DL)) + WorksheetFunction.Sum(Sheets("BORD. VOIRIES").Range("AE7:AE" & DL)) + WorksheetFunction.Sum(Sheets("PDTS NEGOCIES").Range("AE7:AE" & DL)))
End With

End Sub


Le code bug arrivé à la ligne que j'ai rajouté : Range("E3") ...
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
Modifié par Patrice33740 le 27/07/2015 à 17:30
Re,

J'aurais écris :
PlageAE.Formula = .Cells(2, 31).Formula
    
Range("E3").Formula = WorksheetFunction.Sum("AE7:AE" & DL) + _
                      WorksheetFunction.Sum(Sheets("ENVIRONNEMENT").Range("AE7:AE" & DL)) + _
                      WorksheetFunction.Sum(Sheets("BORD. VOIRIES").Range("AE7:AE" & DL)) + _
                      WorksheetFunction.Sum(Sheets("PDTS NEGOCIES").Range("AE7:AE" & DL))


Mais en précisant le nom de la feuille pour le premier Sum !
Cordialement
Patrice
1
ti_mouton Messages postés 143 Date d'inscription vendredi 29 mai 2015 Statut Membre Dernière intervention 5 septembre 2020
28 juil. 2015 à 12:07
parfait, merci beaucoup !
0