Fonction Somme sous VBA

Résolu
ti_mouton Messages postés 153 Statut Membre -  
ti_mouton Messages postés 153 Statut Membre -
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

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    « la plage de cellule (AE7 : Dernière Ligne) »
    La dernière ligne de quelle colonne ????
    1
    1. ti_mouton Messages postés 153 Statut Membre
       
      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
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Tu veux donc faire la somme de B7 à AE & Dernière ligne ???
      0
    3. ti_mouton Messages postés 153 Statut Membre
       
      Non, juste de AE7 jusqu'à la dernière ligne de la colonne AE
      0
    4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Donc Range("AE7:AE" & DL)
      0
    5. ti_mouton Messages postés 153 Statut Membre
       
      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
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
    1. ti_mouton Messages postés 153 Statut Membre
       
      parfait, merci beaucoup !
      0