XL 2019 Somme des valeurs d'une colonne selon un combobox

Bana XIII

XLDnaute Nouveau
Bonjour la communauté,

Je viens vous soumettre mon problème. En fait j’ai sur ma feuille “DONNEES” un tableau à 2 colonnes. La colonne A contient les indices (qui se répètent), et dans la colonne B contient les valeurs des indices.

Sur mon userform, j’ai un combobox qui me permet de choisir les indices. J’aimerais en cliquant sur le bouton “Calcul”, la somme de toutes les valeurs de l’indice sélectionné s’affiche dans le textbox1. (Voir les résultats tel que le textbox1 devrait l’afficher: K=190, L=160, M=70).



Indice
Valeur
K
100​
K
50​
L
90​
K
10​
M
50​
L
70​
K
30​
M
20​


J’ai essayé de bricoler le code suivant. Mais ça ne marche pas



Private Sub CommandButton1_Click()

Dim DR As Integer

Dim Donnée As Object

Dim Indice As String

Dim Feuille As Worksheet

Dim i As Integer



Indice = Me.ComboBox1

Set Feuille = Sheets("DONNEES")

DR = Feuille.Range("A" & Rows.Count).End(xlUp).Row



With Feuille

For Each Donnée In .Range("A3:A" & DR)

If Indice = Donnée Then

For i = 3 To DR

Me.TextBox1.Value = WorksheetFunction.Sum(Donnée.Offset(, 1), i)

'Exit For

Next i

End If

Next

End With



Set Feuille = Nothing

Set Donnée = Nothing

End Sub





Merci pour votre sollicitude !
 

Pièces jointes

  • MaSomme.xlsm
    17.1 KB · Affichages: 12
Solution
Bonjour Bana XIII, Jacky67, le forum,

Avec SumIf/SOMME.SI il n'est pas nécessaire de limiter les plages :
VB:
Private Sub ComboBox1_Change()
With Sheets("DONNEES")
    TextBox1 = Application.SumIf(.Columns(1), ComboBox1, .Columns(2))
End With
End Sub
Bonne journée.

Jacky67

XLDnaute Barbatruc
Bonjour,
Une proposition sans bouton "Calcul"

VB:
Private Sub ComboBox1_Change()
    Dim DR As Integer
    If Me.ComboBox1.ListIndex = -1 Then Me.TextBox1.Value = "": Exit Sub
    With Sheets("DONNEES")
        DR = .Range("A" & .Rows.Count).End(xlUp).Row
        Me.TextBox1.Value = Application.SumIf(.Range("A3:A" & DR), Me.ComboBox1, .Range("b3:b" & DR))
    End With
End Sub
 

Pièces jointes

  • MaSomme.xlsm
    20.4 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonjour Bana XIII, Jacky67, le forum,

Avec SumIf/SOMME.SI il n'est pas nécessaire de limiter les plages :
VB:
Private Sub ComboBox1_Change()
With Sheets("DONNEES")
    TextBox1 = Application.SumIf(.Columns(1), ComboBox1, .Columns(2))
End With
End Sub
Bonne journée.
 

Pièces jointes

  • MaSomme (1).xlsm
    19.7 KB · Affichages: 9

Bana XIII

XLDnaute Nouveau
Bonjour,
Une proposition sans bouton "Calcul"

VB:
Private Sub ComboBox1_Change()
    Dim DR As Integer
    If Me.ComboBox1.ListIndex = -1 Then Me.TextBox1.Value = "": Exit Sub
    With Sheets("DONNEES")
        DR = .Range("A" & .Rows.Count).End(xlUp).Row
        Me.TextBox1.Value = Application.SumIf(.Range("A3:A" & DR), Me.ComboBox1, .Range("b3:b" & DR))
    End With
End Sub
Super Jacky. Merci infiniment
 

Discussions similaires