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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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.
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

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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
367
Réponses
40
Affichages
2 K
Réponses
5
Affichages
474
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
482
Retour