J'ai un classeur avec deux feuilles importantes:
- MRP (qui est un import brut)
- Demande_MRP (qui est le résultat de ma macro traitant les données de la feuille MRP)
L'import (Feuille MRP) contient:
- Colonne A: article
- Colonne E: Quantité que je veux sommer
- Colonne F: je prends le critère=2
- Colonne P: Concaténation Date Année_Semaine.
Dans la feuille Demande_MRP, je feux faire la somme par article et par Date (Année_Semaine).
J'ai crée un code VBA (voir variableMemoire, Routine 1) dans lequel j'utilise la fonction excel somme.si.ens
skyteam92 (Bienvenue sur le forum) (Et bien le bonjour aux camarades de la SNECMA)
•Pour informations
Si tu utilises les tableaux comme dans ce petit exemple ci-dessous
(en évitant de les remplir avec des boules), ton code pourrait déjà s'optimiser
Code VB: Global tablo() AsVariant Sub a() Dim f As Worksheet, derlig& '///////////////////////A NE PAS CONSERVER/////////////////////////// ' partie du code pour créer des données sur la feuille 1 With Sheets(1).Range("A1:E50")
.FormulaLocal = "=ENT(LIGNE()*ALEA()*COLONNE()*CNUM(AUJOURDHUI()))"
.Value = .Value EndWith '//////////////////////////////////////////////////////////////////////
'Ci-dessous partie du code concernant ta question sur le forum derlig = Cells(Rows.Count, "A").End(3).Row 'remplissage de l'array tablo [ sans boucle , avec valeurs des Colonne A et B de feuille 1)] tablo = Range(Cells(1, 1), Cells(derlig, 2)).Value 'copie de tablo sans boucle sur la feuille 2 Set f = Sheets(2)
f.Range("A1").Resize(UBound(tablo, 1), UBound(tablo, 2)).Value = tablo EndSub
En effet c'est une bonne idée que de remplir le tableau de cette manière.
Mais en mettant des timer je me suis rendu compte que c'est l'utilisation de la formile somme.si.ens en vba qui allongent considérablement le temps.
Comment on pourrait adapter la forumle à ton code ?