Somme des valeurs de plusieurs plages à condition fixée

Bonsoir,

J'ai passé la journée sur un problème non résolu. Le voici.

Je dispose d'une colonne avec des nombres entiers positifs.

Voici l'algorithme :

Pour chaque objet dans C1 (ou A) avec pour condition que dans C3 il y ait le mot "DBM" alors faire somme des valeurs de C2

Ci-dessous un essai approchant la solution mais rien n'a abouti. Sur l'ensemble des approches envisagées dont une figure ci-dessous, j'ai obtenu la somme du nombre de valeurs pour chaque objet dans le respect de la condition, non pas la somme des valeurs.

J'ai préparé un fichier acceptant les macros. C'est sale de présenter comme ça le code et le fichier mais c'est juste pour vous montrer. Il y a deux boucles absentes. De plus, les indices ne correspondent pas au fichier mais peu importe c'est pour vous montrer une approche parmi d'autres. En fait, c'est un extrait d'un grand ensemble que j'élabore.

J'ai tenté d'utiliser :

Application.WorksheetFunction.Sum(Range())

Sans parler des tableaux.

14test.xlsm (13.41 Ko)
If Sheets("31").Cells(j, "Y") = "DBM" Then

                If Sheets("31").Cells(j, "O") = 1 Then
                            c = c + 1
                            Sheets(Sheet_name).Cells(i, "W") = c
                End If
                If Sheets("31").Cells(j, "O") > 1 Then
                            Sheets(Sheet_name).Cells(i, "W") = c + Sheets("31").Cells(j, "O")
                End If

End If

Merci du coup de main.

Hello,

Copie colle ça en G2 et tire la formule vers le bas et c'est good

=SOMME.SI.ENS(B:B;A:A;F2;C:C;"DBM")

@+

Bonjour à tous !

Une rapide et basique approche Power Query (nativement intégré dans Power Query) ?

Un tableau structuré, quelques clics et voilà une manière robuste d'obtenir le résultat attendu sans devoir se préoccuper d'amender la liste des "C1".

A noter : M365 offre la possibilité, pour une volumétrie "classique", d'utiliser la fonction GROUPER.PAR.

Bonjour à vous ! ,

Je connais SOMME.SI.ENS. Elle est intéressante. D'ailleurs, je m'en suis servi il y a peu pour autre chose.

Je n'ai pas insisté sur ce point mais cette étape doit être faite sur VBA, le but étant de déléguer à un outil d'automatisation des opérations faites manuellement.

Pour POWER QUERY, c'est vrai que je n'ai pas l'habitude d'utiliser ça. Je vais regarder un coup et me former parce que c'est utile. Mais pour l'instant, cela doit se faire sous VBA.

Bonjour à tous de nouveau !

Pour POWER QUERY, c'est vrai que je n'ai pas l'habitude d'utiliser ça. Je vais regarder un coup et me former parce que c'est utile. Mais pour l'instant, cela doit se faire sous VBA.

C'est bien noté !

Je vous remercie de ce retour.

Les spécialistes VBA du forum ne devraient pas tarder à vous proposer des solutions.

Concernant Power Query, je ne peux que vous recommander de vous investir dans cet outil. Le retour sur investissement est exceptionnel.

Hello,

En VBA, tu peux utiliser directement la fonction sumifs :

Sub SommeObjet()
    Dim ws As Worksheet
    Dim derniereLigneF As Long
    Dim i As Long
    Dim somme As Double

    ' Modifie si ta feuille n’est pas la première
    Set ws = ThisWorkbook.Sheets("Feuil1") 

    ' Trouver la dernière ligne dans la colonne F
    derniereLigneF = ws.Cells(ws.Rows.Count, "F").End(xlUp).Row

    'Boucle sur tout les objets
    For i = 2 To derniereLigneF '
            somme = Application.WorksheetFunction.SumIfs(ws.Range("B:B"), ws.Range("A:A"), Range("F" & i), ws.Range("C:C"), "DBM")
            ws.Cells(i, "G").Value = somme
    Next i

End Sub

@+

des colonnes entières !!!!!!!!!!

avec des tableaux structurés

Hey l’ami,

Bon je reconnais j’ai été fainéant et n’ai pas déterminé la dernière ligne non vidé

@+

Bonjour,

C'est super tout ça. Tout fonctionne bien. J'ai modifié quelques paramètres de sorte que l'une des solutions soit utilisable.

Vraiment merci ! Je regarderai POWER QUERY plus en détail même si je n'éprouve pas le besoin de l'utiliser pour l'instant.

Rechercher des sujets similaires à "somme valeurs plages condition fixee"