Somme de cellules selon critère

Résolu
lili4915 Messages postés 13 Statut Membre -  
lili4915 Messages postés 13 Statut Membre -
Bonjour,

Je souhaiterais créer un programme qui recherche dans ma colonne B les lignes dont les chiffres sont supérieurs à 60000000 et qui somme les montants de la colonne G qui correspondent à ces mêmes lignes.

J’ai essayé avec la formule suivante mais elle m’affiche la somme de la colonne G entière et pas seulement sur les lignes dont le chiffre en B est > 60000000

Option Explicit
Const lignedeb = 2

Sub test()
Dim lignefin
Dim i
Dim somme
With ActiveSheet
lignefin = .Range("B" & Rows.Count).End(xlUp).Row
For i = 1 To Range("B" & Rows.Count).End(xlUp).Row
If Cells(i, 2).Value >= 60000000 Then
somme = Application.WorksheetFunction.Sum(Range("G" & lignedeb & ":G" & lignefin))
MsgBox (somme)
End If
Next i
End With
End Sub


Pouvez-vous m’aider ?
Merci d’avance

2 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Essaies ceci
    Const lideb = 2
    
    Sub test()
    Dim lifin As Long, i As Long, somme
    With ActiveSheet
      lifin = .Range("B" & Rows.Count).End(xlUp).Row
      somme = 0
      For i = 1 To Range("B" & Rows.Count).End(xlUp).Row
        If Range("B" & i).Value >= 60000000 Then
          somme = somme + Range("G" & i).Value
        End If
      Next i
      MsgBox somme
    End With
    End Sub

    NB. Penses à la coloration syntaxique

    Cdlmnt
    0
    1. lili4915 Messages postés 13 Statut Membre
       
      Merci de m'avoir répondu,
      il y a une incompatibilité de type avec la ligne "somme = somme + Range("G" & i).Value"

      Entre temps j'ai trouvé une formule qui fonctionne, cependant le MsgBox s'affiche autant de fois qu'il y a de lignes dans mon tableau, vous savez peut-être comment régler ce problème ?

      Option Explicit
      Const lignedeb = 2

      Sub test()
      Dim lignefin
      Dim i
      Dim somme
      With ActiveSheet
      lignefin = .Range("B" & Rows.Count).End(xlUp).Row
      For i = 1 To Range("B" & Rows.Count).End(xlUp).Row
      If Cells(i, 2).Value >= 60000000 Then
      somme = Application.WorksheetFunction.SumIf(Columns("B:B"), ">60000000", Columns("G:G"))
      MsgBox (somme)
      End If
      Next i
      End With
      End Sub


      Je m'excuse je n'ai pas trouvé la coloration syntaxique
      0