Optimiser les fonctions (calcul lent)

  • Initiateur de la discussion Initiateur de la discussion Moulinois
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Moulinois

XLDnaute Occasionnel
Bonjour à tous !

...........j'ai encore besoin de vous 😀

Le calcul est extrêmement lent (à cause de =SI(SOMMEPROD((ESTNUM(CHERCHE("D";INDIRECT($M$4))))*(INDIRECT($M$5)=Carnet!$D4)*INDIRECT($M$6))=0;"";SOMMEPROD((ESTNUM(CHERCHE("D";INDIRECT($M$4))))*(INDIRECT($M$5)=Carnet!$D4)*INDIRECT($M$6)))) et c'est fââââcheux.

Est-il possible d'améliorer cela (le classeur réel est plus gros [et de taille variable] et donc......plus lent) ?
Peut-on optimiser cette fonction (virer le test ou, au contraire, en rajouter un qui limite les calculs ?) ou faut-il en changer, voire la remplacer par une macro (je préférerais éviter) ?


A vos claviers ! 😉
Merci.
 

Pièces jointes

Re : Optimiser les fonctions (calcul lent)

Re

Est-ce que, par exemple, je pourrais utiliser RECHERCHEH avec les dates à une ligne variable du tableau, ligne que j'appellerai "Dates" et dont je pourrais connaître le numéro de ligne (avec =Ligne(Dates)) pour l'utiliser dans ma formule ?

Ca fait un peu usine à gaz 😀
Si vous pensez à quelque chose, lâchez-vous 😉
 
Re : Optimiser les fonctions (calcul lent)

Re, j'ai été un peu long : j'avais d'autres préoccupations qu'Excel 😀
Explique moi exactement le but de ta formule ?
Elle permet de voir clairement dans l'onglet Carnet la date de livraison annoncée ("D" dans Mach) quand le produit a été commandé et la date réelle de livraison ("XX" dans Mach).
 
Dernière édition:
Re : Optimiser les fonctions (calcul lent)

Bonjour,

En nommant la 1ère ligne de dates par formule
(pourquoi 2 lignes de dates ?)
=DECALER(Mach!$K$1;;;;NB(Mach!$1:$1))

Ensuite, comme tu as utilisé la fonction Decaler ici :
=DECALER(Mach!$E$2;((LIGNE()-2)*2)+5;0)
tu peux faire la même chose avec la ligne de dates :
=DECALER(Date;((LIGNE()-2)*2)+6;0)

La formule ne cherche plus "D" ou "XX" dans un grand tableau mais dans une seule ligne
=INDEX(Date;EQUIV("*"&"D"&"*";DECALER(Date;((LIGNE()-2)*2)+6;0);0))
(formule à mettre au conditionnel)

Pour éviter le test en colonnes C et D,
pour la colonne C
=DECALER(Mach!$E$2;((LIGNE()-2)*2)+5;0)&""

pour la colonne D (C aussi, si on veut)
mettre un format de nombre suivi de 2 points virgules
Standard;;

Les dates de la ligne 1 :
j'ai mis une formule pour n'avoir que les jours ouvrés
=SERIE.JOUR.OUVRE(K1;1)
Pour qu'elle fonctionne :
Barre de menu - Outils - Macros complémentaires et cocher "Utilitaire d'analyse"
 

Pièces jointes

Re : Optimiser les fonctions (calcul lent)

Re,

Après essais, il s'avère que ça marche très bien et que c'est vraiment beaucoup plus rapide.
Merci beaucoup 🙂


Une question continue néanmoins à me brûler les lèvres : Pourquoi avoir utilisé "*"&"D"&"*" et non "*D*" ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
1 K
Retour