SOMMEPROD trop lourd, remplacer en VBA
Bonjour à toutes et à tous,
Je travaille aujourd'hui pour une société où l'on a besoin de faire des contrôles de paramétrages de commandes. Après une extraction de tous les paramètres de mes commandes, je viens faire plusieurs tests et j'utilise la formule SOMMEPROD pour les réaliser. Malheureusement, j'ai cette formule sur 3 colonnes et 36000 lignes (nombre qui croît par 300 environ chaque semaine). Le fichier est lourd et le temps de calcul est variable entre 30 minutes et 1 heure (suivant si je l’exécute sur le serveur ou en local. Idéalement il devrait être sur un serveur). Comment puis-je remplacer cette formule par un code VBA ? J’imagine avec une boucle pour n’avoir que quelques lignes de code. Voici ma formule type pour chaque colonne qui est répétée sur aujourd’hui 36690 lignes mais demain il y en aura de plus en plus (j’ai donc une plage variable) :
Première colonne : =SOMMEPROD(($A$3:$A$299689=$AG$2)*($B$3:$B$299689=$B3)*($N$3:$N$299689))/2 J’ai mis volontairement le bas des colonnes à 299689 car le nombre de ligne va tout le temps augmenter.
Deuxième colonne : =SOMMEPROD(($A$3:$A$299689=$AH$2)*($B$3:$B$299689=$B3)*($N$3:$N$299689))/2
Troisième colonne : =SOMMEPROD(($A$3:$A$299689=$AI$2)*($B$3:$B$299689=$B3)*($N$3:$N$299689))/2
D'autre part, pouvez-vous me dire si le fait de tout mettre en VBA améliorera la vitesse de calcul du fichier ? Je pense à toutes mes autres colonnes qui suivent où il y a beaucoup de formules avec des SI.
D'avance merci,
Bonne journée
Claire
1 pièce(s) jointe(s)
SOMMEPROD trop lourd, remplacer en VBA
Bonjour Daniel,
Merci pour votre réponse rapide.. J'ai nommé mes plages dynamiques comme vous me l'avez dit mais rien n'y fait, le fichier est encore très lourd et prend toujours autant de temps pour tout calculer.
J'ai essayé de trouver la façon de coder moi-même mais je sèche... J'ai donc mis en pièce jointe une petite partie de mon fichier en enlevant les quelques colonnes (données confidentielles) donc si vous m'aidez pour le VBA, attention à ne pas coder avec des "déplacements de cellules" non nommées. Je suis pas sûr de me faire comprendre mais n'hésitez pas à revenir vers moi.
Pour vous expliquer le fichier rapidement, il y a 3 colonnes en orange qu'il faudrait que "j'allège".
Je vous remercie d'avance et vous souhaite une bonne soirée.
Cordialement
Claire
SOMMEPROD trop lourd, remplacer en VBA
Bonjour,
Merci d'avoir répondu à ma demande... Effectivement le code fonctionne bien mais il met quasiment autant de temps que si j'écris les formules dans les cellules. De plus, je ne comprends pas tout dans le code, pouvez-vous me mettre quelques commentaires en vert svp ? (j'aimerai surtout bien comprendre l'astuce de la boucle avec le "i" incrémenté que j'ai du mal à créer de moi-même mais qui je suis sûr nous facilite beaucoup de choses quand on sait la manier).
D'autre part, j'avais vu en parcourant les forums que quelqu'un utilisait un bout de code du style "Application.Match". Est-ce que cela vous dit quelque chose et peut-être est-ce plus intéressant et moins lourd que la programmation que vous m'avez donné ?
Dans tous les cas, déjà merci d'avoir pris le temps..
Cordialement
Claire