Clin d'œil à une publicité pour de l'entretien de voiture, mais vraie question.
La gestion de "grandes" bases de données conduit souvent à multiplier les onglets pour faire des synthèses diverses et variées aboutissant à un véritable de tableau de bord.
Récupérer l'information pertinente amène souvent à utiliser des outils (fonctions, fonctionnalités) puissants.
Pour rechercher une aiguille dans une botte de foin, Excel nous procure des aimants puissants.
Citons pour illustrer nos propos les Equiv, Recherchev, Sommeprod, Somme.si.ens ....
Si un fichier multiplie ces (formules de) recherches, il peut arriver que tout se mette à ralentir. C'est une des raisons pour lesquelles, je pense, les calculs de Tableaux Croisés Dynamiques sont sur ordre.
Donc, même en dehors des TCD les fonctions énoncées travaillent pour certaines en matriciel pour résoudre des conditions de filtrage des données complexes et donc deviennent très gourmandes en ressources.
Une simple entrée de données dans une cellule déclenche alors une avalanche de calculs et l'utilisateur ne retrouve la main que quelques secondes après la saisie.
Avant de changer de PC, ou d'en faire changer à votre client, il suffit souvent de COMPLEXIFIER ses formules.
Oui, vous avez bien lu. Regardez donc en priorité si vous pouvez limiter les calculs gourmands. Par exemple, récemment je gérais un tableau de 150 colonnes * 100 lignes (assez rare mais cela existe) :
Sierreur (somme.si.ens(…;...;...;...;…..);"").
Pour chaque cellule le calcul de la fonction somme.si.ens était systématique. Bilan, une saisie n'importe où dans ce fichier redonnait la main 3 secondes après.
2 gros défauts : C'est énervant certes mais pas assez long pour se prendre un café.
En fait, la fonction générait une erreur quand les en-tête de colonne étaient à 0 et le nombre de ces en-têtes était assez important.
J'aurais sans doute pu reprendre ce tableau mais cette structure présentait des avantages pour l'utilisation. Quand à l'utilisation de macros, impossible pour des raisons de compétence Excel du client et donc de maintenabilité.
Donc je suis revenu au bon Si classique : Si(en-tête=0;"";somme.si.ens(…;...;...;...))
A chaque calcul, c'est le "en-tête=0" qui est testé, ce qui est beaucoup plus rapide qu'un somme.si.ens, et l'utilisateur retrouve maintenant la main en moins d' 1/2 seconde. Bon compromis pour ce fichier.
A bientôt pour d'autres retours sur l'utilisation d'Excel