Fonction SUMPRODUCT VBA

  • Initiateur de la discussion Initiateur de la discussion Pierrot75
  • 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 !

P

Pierrot75

Guest
Bonjour,

Novice en VBA, j'espère trouver ici une aide précieuse à mon problème.
voilà je souhaite faire intervenir la fonction SUMPRODUCT dans mon code afin de restituer des données dans l'onglet "Synthèse" à partir de la base de données figurante dans l'onglet "DonnéesMiseEnForme".

Le SUMPRODUCT est inclus dans une double boucle qui me permettrait de balayer à la fois les lignes et les colonnes de mon onglet "Synthèse".

Je ne sais pas si c'est très clair. en tout cas, le fichier en PJ vous aidera certainement d'avantage qu'un long texte...

Le code ne plante pas! Par contre, les résultats obtenus ne sont pas satisfaisants... les valeurs retournées sont toutes à 0...

Merci d'avance de votre aide!
 

Pièces jointes

Re : Fonction SUMPRODUCT VBA

Bonjour Pierrot75, bienvenue sur XLD,

La fonction SOMME.SI me semble ici mieux adaptée que SOMMEPROD.

La macro dans le code de la feuille "Synthèse" :

Code:
Private Sub Worksheet_Activate()
Dim P As Range, t, i&, j As Byte
Set P = [B3:BA100] 'à adapter
t = P 'matrice, plus rapide
'---remplissage du tableau---
With Feuil1 'CodeName de la feuille source
  For i = 1 To UBound(t)
    For j = 1 To 52
      t(i, j) = Application.SumIf(.Columns(1), P(i, 0), .Columns(j + 1))
    Next
  Next
End With
'---restitution---
P = t
End Sub
Elle s'exécute quand on active la feuille.

Fichier joint.

Edit : .Columns(1) est plus rapide que .[A:A]

Durée d'exécution 0,94 seconde au lieu de 1,36 seconde sur Win 7 - Excel 2010.

Délimiter le tableau source ne fait rien gagner.

A+
 

Pièces jointes

Dernière édition:
Re : Fonction SUMPRODUCT VBA

bonjour Job75,

Merci pour le tuyau... je vais tenter de l'adapter à mon fichier. Par contre, avez-vous une idée pourquoi mon code ne fonctionne pas bien que les matrices semblent cohérentes les unes par rapport aux autres.
En fait je vous demande cela car j'ai vu des articles sur les forum (https://www.excel-downloads.com/threads/sommeprod-en-vba.189663/) qui ont l'air de bien fonctionner.

Merci
 
Re : Fonction SUMPRODUCT VBA

Re,

Bon voici ce qui ne va pas dans votre macro :

1) Remplacer :

Code:
Set Données_DonnéesMiseEnForme = Sheets("DonnéesMiseEnForme").Range(Cells(n°_LigneEnTête_DonnéesMiseEnForme + 1, i), Cells(n°_Ligne_DonnéesMiseEnForme, i))
par :

Code:
With Sheets("DonnéesMiseEnForme")
Set Données_DonnéesMiseEnForme = .Range(.Cells(n°_LigneEnTête_DonnéesMiseEnForme + 1, i), .Cells(n°_Ligne_DonnéesMiseEnForme, i))
End With
2) Remplacer la boucle j par :

Code:
'-----
        For j = n°_Ligne1_Synthèse To n°_Ligne_Synthèse
            'Sheets("Synthèse").Activate 'inutile
            CellEnCours = Sheets("Synthèse").Cells(j, n°_Colonne1Données_Synthèse - 1)
            Resultat = Evaluate("SUMPRODUCT((" & Concaténation_DonnéesMiseEnForme.Address(External:=True) & "=""" & CellEnCours & """)*(" & Données_DonnéesMiseEnForme.Address(External:=True) & "))")
            Sheets("Synthèse").Cells(j, i).Value = Resultat
        Next j
A+
 
- 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
Autres Planning
Réponses
8
Affichages
273
Réponses
32
Affichages
1 K
Réponses
1
Affichages
283
Retour