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 !

garth_algar

XLDnaute Junior
Bonjour,
Je souhaiterai utiliser l'équivalent du SOMMEPROD d'Excel en VBA, apparemment ce serait SumProduct, mais il n'y a pas de fichier d'aide. J'ai donc utilsé une syntaxe équivalente à celle du sommeprod, mais ça ne doit pas être la bonne. Voici ma fonction :


Function RECHERCHEVV(critere1 As Variant, critere2 As Variant, plage As Range, n_col_crit2 As Integer, n_col_rech As Integer) As Variant

Dim col1 As Range
Dim col2 As Range
Dim col3 As Range
Dim numcol1 As Integer

numcol1 = plage.Column
Set col1 = Application.Intersect(Columns(numcol1), plage)
Set col2 = Application.Intersect(Columns(numcol1 + n_col_crit2 - 1), plage)
Set col3 = Application.Intersect(Columns(numcol1 + n_col_rech - 1), plage)

RECHERCHEVV = Application.SumProduct((col1 = critere1) * (col2 = critere2) * (col3))


J'obtiens un #Valeur lorsque je l'utilise, et si j'enlève le "Application." j'ai une erreur de complilation : sub ou fonction non définie et le dernier col3 est surligné.
Est-ce que quelqu'un repère mon(mes) erreur(s) ?
Merci d'avance
 
Re : VBA : SumProduct

Bonjour,

Je ne comprends pas ce que tu veux faire avec ton code. Il y a sûrement des façons plus simples à y arriver. Mais, fais juste un essai. Remplace ton code comme suivant :

Code:
RECHERCHEVV = WorksheetFunction.SumProduct((col1 = critere1) * (col2 = critere2) * (col3))

Peut être que ça marchera.
 
Re : VBA : SumProduct

Bonjour,

J'ai finalement réussi en modifiant la dernière ligne ainsi :

RECHERCHEVV = Evaluate("SumProduct((" & col1.Address & "=" & critere1 & ") * (" & col2.Address & "=" & critere2 & ") * (" & col3.Address & "))")

Cependant la fonction ne marche qui si je tape la formule dans la feuille où se trouve la plage.
Est-ce que quelqu'un saurait me dire ce qu'il faut changer ou ajouter pour pouvoir utiliser une plage dans n'importe quel feuille dans n'importe classeur ?
Merci d'avance
 
- 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

  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
819
Réponses
12
Affichages
552
Réponses
7
Affichages
658
Retour