Bonjour Gilmour,
Je n'ai mesuré les temps que dans un passage BD Plan, je n'ai pas fait l'inverse.
Le passage BD Plan est long car outre votre code qui extrait cette page sur 1900 lignes, il y a 54356 MFC, c'est à dire qu'XL en arrivant sur cette page doit évaluer
27178 fois : =ET(SOMMEPROD((PlanVéhicules=$A4)*(B$3>=ENT(début))*(B$3<=fin));$A4<>0) et
27178 fois : =JOURSEM(B$3;2)>5
Ce qui fait beaucoup. C'est là qu'il rame, surtout pour les sommeprod qui sont réputés lourds à calculer.
Quant à remplacer une MFC par du code, c'est illusoire. Si le VBA fait la même chose que la MFC ... vous ne ferez jamais aussi bien que Microsoft.
Les listes déroulantes n'ont pas à être évaluées par XL, c'est pour ça que le retour est plus rapide. Mais ça alourdit beaucoup le fichier.
Pour vraiment accélerer, reposez vous la question du besoin de l'utilisateur. A t-il besoin systématiquement d'une vision de 6 mois sur les feuilles Planxx ? Une façon d'accélerer serait de ne lui montrer que le mois courant, et plus sur sa demande.
D'autre part, est ce que PlanSemxx doit montrer tous les véhicules ? Car même si une ligne est blanche, XL doit évaluer la MFC pour justement décider ... qu'elle n'est pas concernée.
Pour conclure, je pense que l'accélération passera plus par une refonte de l'ergonomie que par une optimisation de votre code.
Faites un essai comme moi : Vous faites une copie, vous virez toutes les MFC ( selection de toute la feuille et effacer règles ), et vous faites un test, et vous pouvez apprécier le résultat, il ne reste que les listes et votre code.