Bonjour
Au vu de ton fichier, ta formule est largement erronée.
Il serait étonnant que tu aies 100000 lignes de données.
Ta formule SOMMEPROD calculant sur 100 000 lignes prendra un temps considérable.
Pour limiter le champ d'action des formules aux seules lignes remplies, tu peux, comme sur ce fichier utiliser des Champs dynamiques (adaptables automatiquement au nombre de lignes)
Pour cela:
La formule:
=DECALER(VISITE!$D$2;;;NBVAL(VISITE!$D:$D)-1)
est Nommée Année
elle représente le champ de la colonne D de la feuille VISITE
Suite de quoi, la formule
=DECALER(VISITE!$G$2;;;NBVAL(Année))
est nommée Motif et représente les données de la colonne G
La formule
=DECALER(VISITE!$F$2;;;NBVAL(Année))
est nommée Vendeur
La formule
=DECALER(VISITE!$M$2;;;NBVAL(Année))
est nommée Visite
et la formule
=DECALER(VISITE!$N$2;;;NBVAL(Année))
est nommée Vente
Ta formule en B6 de Feuil2 devient
=SOMMEPROD((Vendeur=$A6 )*(Année=$B$2)*(Motif=$B$3);Visite)
Les autres formules utilisent les mêmes noms définis
A partir de là, si tu préfères en VBA, il faudra, compte tenu de la présentation de la Feuil2, rédiger une formule pour chaque colonne.
A titre indicatif, la variable pour la fonction SOMMEPROD en VBA et du type = Evaluate("SUMPRODUCT((...
Cordialement