sumproduct

stephanec

XLDnaute Nouveau
Bonjour,

Dans un Userform j'ai 3 combobox alimentés par Colonne A B C sur feuille


Je met sur combobox3 formule sumproduct ci dessous

Me.TextBox1.Value = Application.Evaluate("SumProduct((a2:a7=""" & Me.ComboBox1 & """)*(b2:b7= """ & Me.ComboBox2 & """)*(c2:c7 = """ & Me.ComboBox3 & """)*(d2:d7)*(e2:e7))")

Or si colonne C est numérique fonction me retourne 0.

Sur feuille test avec sommeprod cela marche?

Qui peut m'éclairer? Merci
 

job75

XLDnaute Barbatruc
Re : sumproduct

Bonjour stephanec, bienvenue sur XLD,

Testez ceci :

Code:
Private Sub ComboBox3_Change()
TextBox1 = Evaluate("Sum((a2:a7=""" & ComboBox1 & """)*(b2:b7= """ & _
ComboBox2 & """)*(c2:c7 = " & ComboBox3 & ")*d2:d7*e2:e7)")
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : sumproduct

Re,

Il me semble qu'une ListBox, avec une liste triée et sans doublons bien sûr, est mieux adaptée.

Fichier joint.

Bonne soirée.
 

Pièces jointes

  • sommeprod(1).xls
    69.5 KB · Affichages: 24
  • sommeprod(1).xls
    69.5 KB · Affichages: 25
  • sommeprod(1).xls
    69.5 KB · Affichages: 19

job75

XLDnaute Barbatruc
Re : sumproduct

Bonjour stephanec,

Avec ceci pas besoin de On Error Resume Next, il y a toujours un #DIV/0! en 4ème colonne :

Code:
Private Sub UserForm_Initialize()
Dim s As Boolean
s = ThisWorkbook.Saved
With Sheets("Liste")
  .[A:D].Clear
  [A1].CurrentRegion.Resize(, 3).Copy .[A1]
  With .[A1].CurrentRegion
    If .Rows.Count = 1 Then Exit Sub
    .Sort .Columns(1), 1, , .Columns(2), 1, .Columns(3), 1, Header:=xlYes
    With .Offset(1).Resize(, 4)
      .Columns(4).FormulaR1C1 = "=1/OR(RC1<>R[1]C1,RC2<>R[1]C2,RC3<>R[1]C3)"
      .Columns(4) = .Columns(4).Value
      .Sort .Columns(4), 1, Header:=xlNo 'tri pour accélérer la suppression
      Intersect(.Cells, .SpecialCells(xlCellTypeConstants, 16).EntireRow).Delete xlUp
      .Columns(4).Clear
      ListBox1.RowSource = .Address(External:=True)
    End With
  End With
End With
If s Then ThisWorkbook.Saved = True 'pour éviter l'invite à la fermeture
End Sub
Fichier (2).

A+
 

Pièces jointes

  • sommeprod(2).xls
    70 KB · Affichages: 20
  • sommeprod(2).xls
    70 KB · Affichages: 21
  • sommeprod(2).xls
    70 KB · Affichages: 19

job75

XLDnaute Barbatruc
Re : sumproduct

Re,

Une autre solution avec un Dictionary et la macro Quick sort dans le fichier joint.

La ListBox a 4 colonnes, la 4ème est de largeur 0, donc masquée.

A+
 

Pièces jointes

  • Sans sommeprod(1).xls
    62.5 KB · Affichages: 23
Dernière édition:

job75

XLDnaute Barbatruc
Re : sumproduct

Re,

Tant qu'à faire autant afficher la 4ème colonne de la ListBox et supprimer la TextBox.

Noter que pour cadrer les nombres à droite j'utilise Courier New, police à chasse fixe.

Fichier (2).

Edit : ajouté Round pour arrondir la 4ème colonne.

A+
 

Pièces jointes

  • Sans sommeprod(2).xls
    58.5 KB · Affichages: 20
Dernière édition:

Discussions similaires

Réponses
5
Affichages
1 K

Statistiques des forums

Discussions
312 684
Messages
2 090 917
Membres
104 699
dernier inscrit
Azyra