Somme de cellules selon critère

Résolu
lili4915 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
lili4915 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -
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

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
lili4915 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
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