comment traduire sumprod en VBA

  • Initiateur de la discussion Initiateur de la discussion booba
  • Date de début Date de début

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 !

B

booba

Guest
bonjour le forum,
comme le sujet l'indique, je voudrais faire une petite macro avec sumprod, comment je peux opérer?
en vous remerkiant
 
Salut,

Pour retrouver des fonctions en vba, le plus simple est de taper la formule dans une cellule, de faire un enregistrement automatique en revalidant la formule par F2 puis Enter et d'aller voir dans le code VBA l'équivalent en Anglais.

Après ça, en VBA, on utilise la formule suivante :
Application.worksheetFunction
Exemple avec SUMIF pour trouver la somme des débits pointés et la somme des crédits pointés.

Set zone1 = ActiveSheet.Range(Cells(2, 9), Cells(DerLgn, 9))
Set Zone2 = ActiveSheet.Range(Cells(2, 6), Cells(DerLgn, 6))
Set Zone3 = ActiveSheet.Range(Cells(2, 7), Cells(DerLgn, 7))
TotalDébits = Format(Round(Application.WorksheetFunction.SumIf(zone1, '=' & Pointage, Zone2), 2), '##,##0.00 €')
TotalCrédits = Format(Round(Application.WorksheetFunction.SumIf(zone1, '=' & Pointage, Zone3), 2), '##,##0.00 €'

Dans les lignes de SET, il faut bien sûr cerner les zones qui vont intervenir dans les paramètres de la formule.

Bon courage,
 
Bonjour Mikeline !

Il existe différentes possibilités.
Dis nous en davantage pour t'aider à trouver la bonne.
Une solution classique est de créer un variable qui te servira de compteur et qui s'ajoutera des valeurs suivant certaines conditions.
Il faut comprendre que la fonction Sommeprod crée des vecteurs avec des valeurs boléennes (vrai ou faux = 0 ou 1, ou True ou False), qui se multiplient à des matrices de valeurs.
Le principe est le même en vba.

On fait en général tourner les tests en boucle avec des For...Next

Par exemple, si tu veux ajouter les valeurs de la colonne C si la colonne A est égale à la Valeur1 et si la colonne B est égale à la Valeur2, ceci de la ligne 2 à 10, cela donnerai :

Sub compteur()

Dim i as byte
Dim compteur
For i = 2 to 10
If Range('A' & i) = Valeur1 And Range('B' & i) = Valeur2 then compteur = compteur + Range('C' & i)
Next i
MsgBox compteur

End Sub

A plus.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Réponses
32
Affichages
739
Réponses
3
Affichages
201
  • Résolu(e)
Microsoft 365 DATEDIF
Réponses
11
Affichages
404
  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
615
  • Résolu(e)
Microsoft 365 problème
Réponses
19
Affichages
889
Réponses
14
Affichages
324
Retour