Somme de cellules selon critère

Résolu/Fermé
lili4915 Messages postés 13 Date d'inscription lundi 11 juin 2018 Statut Membre Dernière intervention 14 juin 2018 - Modifié le 13 juin 2018 à 16:06
lili4915 Messages postés 13 Date d'inscription lundi 11 juin 2018 Statut Membre Dernière intervention 14 juin 2018 - 14 juin 2018 à 09:33
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
13 juin 2018 à 17:23
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 lundi 11 juin 2018 Statut Membre Dernière intervention 14 juin 2018
13 juin 2018 à 17:32
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