Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Somme Matricielle en VBA pour optimiser temps de réponse

ASTER

XLDnaute Nouveau
Salut,

Je cherche désespéremment à optimiser une somme matricielle dans Excel sur une grande plage de cellules.

Détail du cas :

Colonne A : Dates
Colonne B : Produits
Colonne C : Montants

En colonne D, je souhaite faire la somme à chaque ligne, des montants avec les critères suivants :
Tous les montants dont la date est <= à la date de la ligne
Tous les montants dont le produit est = au produit de la ligne

Je m'en sors avec une formule de somme matricielle, mais sur 35000 lignes, ca bug !

Est ce que le VBA peut me sauver et comment ?

Merci beaucoup de votre aide
 

ROGER2327

XLDnaute Barbatruc
Re : Somme Matricielle en VBA pour optimiser temps de réponse

Bonjour ASTER
Peut-être quelque chose comme ça :
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim oDat, u&, i&, j&, s#
   With Sheets(1) [COLOR="Green"]'Feuille a traiter[/COLOR]
      With .[A1].Resize([A1].Offset(.Rows.Count - 1, 0).End(xlUp).Row, 4)
         oDat = .Value
         u = UBound(oDat, 1)
         For i = 2 To u
            oDat(i, 4) = 0
            For j = 2 To u
               oDat(i, 4) = oDat(i, 4) + (oDat(j, 1) <= oDat(i, 1)) * (oDat(j, 2) = oDat(i, 2)) * oDat(j, 3)
            Next
         Next
         .Value = oDat
      End With
   End With
End Sub[/B][/COLOR]
Mais... ...pas de support donc pas de test.​
ROGER2327
#2854
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…