Temps de traitement

Résolu
Bonjour,
J'utilise un classeur avec les onglets suivants:
- prix pour client A
- prix pour client B
- prix pour client C
- BDD articles extraite de mon logiciel de gestion commerciale au format Excel.
Pour compléter mes onglets "prix pour client..." j'ai réalisé, non sans mal, une petite formule matricielle.
En voici une:
{=SI(ESTNA(SI(INDEX(Extract_EBP!N:N;EQUIV(C315&"Tarif pour la famille client 01"&9;Extract_EBP!Y:Y&Extract_EBP!B:B&Extract_EBP!K:K;0))=0;"";INDEX(Extract_EBP!N:N;EQUIV(C315&"Tarif pour la famille client 01"&9;Extract_EBP!Y:Y&Extract_EBP!B:B&Extract_EBP!K:K;0))));SI(INDEX(Extract_EBP!N:N;EQUIV(C315&"Tarif pour la famille client 01"&1000;Extract_EBP!Y:Y&Extract_EBP!B:B&Extract_EBP!K:K;0))=0;"";INDEX(Extract_EBP!N:N;EQUIV(C315&"Tarif pour la famille client 01"&1000;Extract_EBP!Y:Y&Extract_EBP!B:B&Extract_EBP!K:K;0)));SI(INDEX(Extract_EBP!N:N;EQUIV(C315&"Tarif pour la famille client 01"&9;Extract_EBP!Y:Y&Extract_EBP!B:B&Extract_EBP!K:K;0))=0;"";INDEX(Extract_EBP!N:N;EQUIV(C315&"Tarif pour la famille client 01"&9;Extract_EBP!Y:Y&Extract_EBP!B:B&Extract_EBP!K:K;0))))}

Le problème est que chaque fois que je veux faire une modification, ne serait-ce que de mise en page, sur mes onglets "prix pour client...", le temps de traitement est long, très long......

Est-il possible de raccourcir ce temps de traitement? je suppose via quelque chose genre une macro VBA ou un TCD?
Merci pour vos lumières...

2 réponses

  1. Contributeur
    Bonjour
    Sans approfondir votre formule, mais en règle générale,une formule matricielle est lourde et prend du temps. Toutefois pour alléger le système, mieux vaut ne pas utiliser des adresses de colonnes complètes comme Y:Y par exemple, qui fait travailler le système sur plus d'un million de lignes
    mieux vaut le limiter à peine au delà de la hauteur utile avec les n° de lignes (par exemple: Y2:Y5000
    ça devrait alléger un peu.
    Pat ailleurs pour éviter la répétition de la formule en cas d'erreur, au li_eu de SI(ESTNA.(formule);"";formule)
    écrivez (à partir d'Excel 2007 seulement)
    =SIERREUR(formule complète);"")
    crdlmnt
    2
    1. Bonjour Vaucluse,
      Rien qu'en "bornant" mes plages à $x$1:$x$5000 c'est le jour et la nuit!!!
      Merci beaucoup....
      je vais pouvoir avancer à mon rythme maintenant!!
      Bonne journée
      0
      1. Contributeur
        Pas de quoi
        je passe le sujet en résolu
        bonne route
        crdlmnt
        0