Cherche tutoriel SUMPRODUCT en VBA

Staple1600

XLDnaute Barbatruc
Bonsoir


Qui aurait:

des exemples d'utilisation de SUMPRODUCT en vba
(utilisation dans Userform avec Evaluate)

des liens à sujets

un tutoriel (la j'en demande peu-etre trop)

En tout cas merci à l'avance à ceux
qui pourront me fournir quelque infos que ce soit.
 

Staple1600

XLDnaute Barbatruc
Re : Cherche tutoriel SUMPRODUCT en VBA

Bonjour


Merci MichelXLD

(Bah justement j'avais été voir sur tes pages Wiki et j'avais
trouvé un exemple)

mais chez moi ca générait un message d'erreur.

Pour être plus précis, j'essaye de trouver une solution
avec sommeproduct en vba pour ce post
https://www.excel-downloads.com/threads/stat.68110/
(et pour le moment je seche pour ce qui est d'utiliser SUMPRODUCT en vba
bien que j'y arrive avec les formules)
 

Staple1600

XLDnaute Barbatruc
Re : Cherche tutoriel SUMPRODUCT en VBA

rebonjour

Voila ce qu'est j'ai trouvé chez toi:

Utiliser une fonction matricielle SOMMEPROD par macro

La macro correspond à cette formule:
SOMMEPROD((E58:E183=H60)*(C58:C183=I60)*(B58:B183=J60)*(F58:F183))
Les arguments H60, I60 et J60 seront maintenant des données saisie dans les Textbox d'un Userform

msgBox Evaluate("=SUMPRODUCT((E58:E183 =""" & textBox1.Text & """) * " & _
"(C58:C183 =""" & textBox2.Text & """) * (B58:B183 =""" & textBox3.Text & """) * (F58:F183))")

Donc j'ai essayé d'adapter sans succès

Alors j'ai été voir chez nos amis anglosaxons

J'ai essayé ceci:

Private sub commandbutton etc
'Ceci est la formule qui fonctionne dans la feuille
'SOMMEPROD((MOIS($A$2:$A$25)=MOIS($I$10))*($B$2:$B$25=$I$11)*($D$2:$D$25="X"))
' et que j'essaie de traduire en VBA dans l'userform
'pour le meomet je ne m'occupe pas des textbox'
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Dim lenom As Range
Dim ladate As Range
Dim chaine As String

Set rng1 = Sheets(1).Range("A2:A25")
Set rng2 = Sheets(1).Range("B2:B25")
Set rng3 = Sheets(1).Range("D2:D25")
chaine = "X"
'J'obtiens #VALEUR en b26
Sheets(1).Range("B26") = Evaluate("SumProduct((Month(" & rng1.Address & "))= Month(ladate)) * ((" & rng2.Address & ")= lenom.Value))*((" & rng3.Address & ")= """ & chaine & """))")
'et un message d'erreur avec msgbox
'MsgBox x
End Sub

(Pardon pour ma syntaxe surement pas tres orthodoxe)
 

ChTi160

XLDnaute Barbatruc
Re : Cherche tutoriel SUMPRODUCT en VBA

Salut Staple1600
bonsoir le fil
voila ce que j'ai fait 2 possibilités on colle la formule dans la cellule B26
ou on utilise Evaluate via une variable ou directement dans la cellule
Sub Zonedetexte1_QuandClic()
Dim rng1 As String
Dim rng2 As String
Dim rng3 As String
Dim rng4 As String
Dim rng5 As String
Dim chaine As String
Dim Rep As Byte
rng1 = Workbooks("Classeur1.xls").Sheets(1).Range("""A2:A25""")
rng2 = Workbooks("Classeur1.xls").Sheets(1).Range("""B2:B25""")
rng3 = Workbooks("Classeur1.xls").Sheets(1).Range("""D2: D25""")

rng4 = Workbooks("Classeur1.xls").Sheets(1).Range("I10")
rng5 = Workbooks("Classeur1.xls").Sheets(1).Range("I11")
chaine = "X"

'Sheets(1).Range("B26").FormulaLocal = "=SOMMEPROD((MOIS(" & rng1 & ")=MOIS(" & rng4 & "))*(" & rng2 & "=" & rng5 & ")*(" & rng3 & "=""" & chaine & """))"

'Rep = Evaluate("SumProduct((month(" & rng1 & ")=Month(" & rng4 & "))*(" & rng2 & "=" & rng5 & ")*(" & rng3 & "=""" & chaine & """))")
Sheets(1).Range("B26") = Evaluate("SumProduct((month(" & rng1 & ")=Month(" & rng4 & "))*(" & rng2 & "=" & rng5 & ")*(" & rng3 & "=""" & chaine & """))")
'Sheets(1).Range("B26") = Rep
End Sub
arfffffffff il faut """ = "
en espèrant avoir pu t'aider,car je crois que comme beaucoup ici ,tu es un mordu Lol ;)
Bonne fin de Soirée
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Cherche tutoriel SUMPRODUCT en VBA

Bonsoir

J'ai essayé ton code ChTi160

Et VBA me dit:
Type incompatible (erreur 13)

j'ai regardé la solution de Thierry

mais je suis pas encore trés familiarisé avec les tableaux (array)

Je retourne chercher pourquoi j'ai cette erreur

(Si quelqu'un peut trouver avant moi, j'en serai content)

Bonne soirée
 

Staple1600

XLDnaute Barbatruc
Re : Cherche tutoriel SUMPRODUCT en VBA

Bonjour

j'ai essayé ton exemple ChTi160 (ca fonctionne) Merci
j'ai voulu l'intégrer dans un userform
avec un Label1 avec TextBox1

J'ai repris le code de ta macro
Voila les modifs que j'ai faite
et évidemment ca ne fonctionne pas

Private Sub CommandButton1_Click()
'...
Dim tbMois As String
'...
tbMois = CDate(TextBox1.Value)
'...
Rep = Evaluate("SumProduct((Month(" & rng1 & ")=Month(" & tbMois & "))*(" & rng2 & "=" & rng5 & ")*(" & rng3 & "=""" & chaine & """))")
Label1.Caption = Rep
End Sub

Si tu passes par là, merci de m'aider

Bon week à tous
 

ChTi160

XLDnaute Barbatruc
Re : Cherche tutoriel SUMPRODUCT en VBA

Salut Staple1600

si tu pouvais mettre un morceau de fichier avec ce que tu as et le résultat voulu cela aiderait Lol
car comme cela je ne vois pas lol :D enfin je ne vois rien lol :confused:

Merci d'avance
 

Staple1600

XLDnaute Barbatruc
Re : Cherche tutoriel SUMPRODUCT en VBA

Voila un fichier exemple

qui fonctionne

mais ne pourrais-t-on aller vers une syntaxe plus simple?


Et quelle est la différence avec

Application.SumProduct(range1,range2)

Merci.
 
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Cherche tutoriel SUMPRODUCT en VBA

bonjour le fil

dans txtbmois,tu entres le n° du mois et c'est ok
j'ai mis bebere en commentaire au dessus des 2 lignes que j'ai changé

à bientôt
 

Pièces jointes

  • test3b.zip
    21.5 KB · Affichages: 115
  • test3b.zip
    21.5 KB · Affichages: 127
  • test3b.zip
    21.5 KB · Affichages: 112

Staple1600

XLDnaute Barbatruc
Re : Cherche tutoriel SUMPRODUCT en VBA

Bonjour


Merci à tous les intervenants pour leur aide

J'en appelle (non pas à la tendresse)
mais à ceux d'entre vous (et celles)
qui sont atteints du syndrome de simplication du code VBA

pour m'aiguiller dans ma quête

(voir pièce jointe
et commentaires dans le code)

Merci encore
et bonne journée à tous.
 
Dernière édition:

Discussions similaires