Somme de cellules selon critère [Résolu] - Forum VB / VBA

Somme de cellules selon critère Excel : couleur automatique cellule selon critères (Résolu) » Forum - Excel Fonction "afficher le contenu d'une cellule avec critères" (Résolu) » Forum - Excel Recherche d'un nombre de cellules suivant critere autre cellule (Résolu) » Forum - Excel Macro mise en forme de cellules suivant critères de dates (Résolu) » Forum - Excel Colorier une cellule selon critère (Résolu) » Forum - Programmation

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

Forum

Somme de cellules selon critère Excel : couleur automatique cellule selon critères (Résolu) » Forum - Excel Fonction "afficher le contenu d'une cellule avec critères" (Résolu) » Forum - Excel Recherche d'un nombre de cellules suivant critere autre cellule (Résolu) » Forum - Excel Macro mise en forme de cellules suivant critères de dates (Résolu) » Forum - Excel Colorier une cellule selon critère (Résolu) » Forum - Programmation

Web: www.shapebootstrap.net

4 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply
réponses:
  • lili4915

    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

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Peut être que dans ta colonne G ou B tu n'as pas que des numériques, tu ajoutes un test

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 lifin     If IsNumeric(Range("G" & i).Value) And IsNumeric("B" & i).Value Then       If Range("B" & i).Value >= 60000000 Then         somme = somme + Range("G" & i).Value       End If     End If   Next i   MsgBox somme End With End Sub

Pour ta procedure, tu déplaces le MsgBox après Next i (en dehors de la boucle for i ...)
Pour la coloration syntaxique, tu selectionnes le code puis la flèche vers le bas en haut à droite de la fenêtre d'édition

Cdlmnt

Reply
réponses:
  • lili4915

    Merci beaucoup pour votre aide, bonne journée !

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed