Transcrire formule SOMMEPROD en VBA

Bonjour,

Je souhaite convertir une formule sommeprod en VBA mais je m'arrache les cheveux, la formule à transcrire :

=SOMMEPROD(--(BDD[Année]=CA!I19);--(BDD[Mois]=CA!I17);--(BDD[PEPS Secteur]=CA!I21);--(BDD[Montant CA offre gagnée]))

J'ai essayé ça en VBA :

Sub test()

Dim PAnnee As Range, PMois As Range, PPepsSecteur As Range, PCAGagnee As Range
Dim CA_Mois As Variant
Dim Annee As Integer, Mois As Integer
Dim Peps As String

Set PAnnee = Feuil2.Range("EZ2:EZ" & Feuil2.Range("EZ" & Rows.Count).End(xlUp).Row)
Set PMois = Feuil2.Range("FA2:FA" & Feuil2.Range("FA" & Rows.Count).End(xlUp).Row)
Set PPepsSecteur = Feuil2.Range("A2:A" & Feuil2.Range("A" & Rows.Count).End(xlUp).Row)
Set PCAGagnee = Feuil2.Range("DU2:DU" & Feuil2.Range("DU" & Rows.Count).End(xlUp).Row)

Annee = Format(Date, "YYYY")
Mois = Format(Date, "MM")
Peps = Feuil1.cb_NomPeps.Text

CA_Mois = Application.WorksheetFunction.SumProduct(PAnnee = Annee, PMois = Mois, PPepsSecteur = Peps, PCAGagnee)

Debug.Print CA_Mois

End Sub

J'ai une erreur d'incompatibilité de type '13'

Je veux passer la formule en VBA car c'est un tableau qui est mis à jour régulièrement, donc des colonnes sont supprimés/ajoutés ce qui cause une erreur avec la fonction sur la feuille de calcul. Je veux la faire passer en VBA pour avoir des plages dynamiques.

Merci,

Bonjour,

On dirait déjà que la variable Range cb_NomPeps n'est pas définie.

Par ailleurs, ne serait-ce pas plu simple de nommer des plages directement sur excel, surtout si toutes ces colonnes font partie d'un même tableau. Je dis ça car j'imagine que les plages sont de même taille, sinon le sommeprod ne peut pas marcher.

Bonjour 3GB,

Feuil1.cb_NomPeps.Text renvoi le contenu d'une ComboBox

Je ne peux pas nommer les plages directement sur excel car quand il y a une MaJ du fichier en gros, je supprime le tableau et je met le nouveau avec les ajouts à la place

Bonjour Arnaud, bonjour 3GB

As-tu un fichier anonymisé pour y travailler ?

Bonjour Steelson,

J'ai fais un fichier anonymisé semblable ci-dessous:

12sommeprodtovba.xlsm (18.86 Ko)
Option Explicit

Sub test()
Dim donnee, crit1, crit3, crit4, CA, i

donnee = [Tableau1]
crit1 = [I4]
crit3 = [I6]
crit4 = [I7]

CA = 0
For i = 1 To UBound(donnee)
    If donnee(i, 1) = crit1 And donnee(i, 3) = crit3 And donnee(i, 4) = crit4 Then CA = CA + donnee(i, 5)
Next

MsgBox CA

End Sub

Merci Steelson, j'ai réussi à l'adapter pour ce que je voulais faire !

Rechercher des sujets similaires à "transcrire formule sommeprod vba"