XL 2016 Optimisation de formule SI

richbike87

XLDnaute Nouveau
Bonjour,

Je vous sollicite car je cherche à optimiser ma formule en colonne L qui contient énormément de SI imbriqué les uns dans les autres et qui du coup sur un nombre de ligne considérable font des latences dans le remplissage de celui ci.
:(

Cela ne se voit pas sur le tableau en exemple. En feuille 2 les différents cas qui peuvent ce produire.

Cordialement Arnaud
 

Fichiers joints

BrunoM45

XLDnaute Barbatruc
Bonjour,

Pour tout te dire, ta formule de SI imbriqués est imbuvable


Ce qu'il faut que tu fasses, c'est créer des colonnes à droite avec un seul SI() dans chacune

Du coup tu n'auras pas besoin d'utiliser un calcul matriciel, je pense et cela te fera gagner du temps

A+
 

richbike87

XLDnaute Nouveau
Bonjour,

Je me doute que cette formule est imbuvable c'est pour cela que je cherche à l'optimisé.

Pour vous il serait plus judicieux de creer des colonnes avec juste un SI() comment afficher le resultat dans une seule colonne?

Merci pour vos réponses

Cordialement
 

Brice G

XLDnaute Occasionnel
Bonsoir Arnaud,

est-ce que tu pourrais décrire brièvement ta formule, au moins savoir à quoi elle sert, pour faciliter la compréhension, il est vrai...complexe.:cool:
 

richbike87

XLDnaute Nouveau
Bonjour Brice,

La formule me sert a suivre l'état d'avancement d'étude qui me se sont transmis a mon travail. Toutes les différentes étapes sont expliquées en feuille 2.
Je pense que du VBA ou macro événementielle serait l'astuce mais je n'y comprend pas grand chose.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Quelque chose m’échappe. La formule travaille sur des colonnes complètes (ce qui d’ailleurs ne se fait fait que très rarement!) mais la formule n'est pas validée matriciellement. Il y a contradiction ! o_O
 

richbike87

XLDnaute Nouveau
Re.

La formule travaille sur des colonnes completes car cela se passe sous forme de tableau comme cela la formule continue toute seule son travail.
Je suis preneur toutes astuces qui pourrait améliorer considérablement la saisie des nouvelles lignes.

Merci pour vos réponses
 

mapomme

XLDnaute Barbatruc
Supporter XLD
La formule travaille sur des colonnes completes car cela se passe sous forme de tableau comme cela la formule continue toute seule son travail.
Que veux tu dire par là ??? Qu'entends tu par tableau ? Est ce à dire que tes formules vont au-delà de la dernière ligne de données ? Parles tu de tableau structuré ?
 
Dernière édition:

richbike87

XLDnaute Nouveau
Non les formules ne continue pas au delà de la dernière ligne, juste quand on commence à taper une nouvelle ligne les formules suivent. Donc cela doit être un tableau structuré.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Donc cela doit être un tableau structuré.
Effectivement. Dans ce cas, pourquoi utiliser les colonnes entières et non pas la dénomination des tableaux structurés ?
Je reconnais que si on le faisait la formule serait monstrueuse.
Je n'ai pas creusé mais le résultat que tu recherches ne dépend que des données de la ligne où se trouve la formule), non ?
 

richbike87

XLDnaute Nouveau
L'autre feuille n'est la que pour donner une vision des differents cas au cas ou quelqu'un aurait trouvé une astuce en macro evenementielle / VBA.
 

richbike87

XLDnaute Nouveau
J'avais eu une aide sur un autre forum pour autre chose, dont je me suis inspiré mais je n'ai pas réussi à mettre de conditions pour les colonnes (O, W, AE, AF, AG, AH)
 

Fichiers joints

Victor21

XLDnaute Barbatruc
Supporter XLD
Bonjour richbike87
Bonjour, BrunoM45, mapomme, Brice G

J'ai tenté de détricoter votre formule sans succès. -Les liaisons extérieures des validations de données n'aident pas-
Plutôt que des imbrications, (Si, sinon, sinon, sinon) je pense qu'il faudrait passer par un scoring (Addition) :
telle(s) condition(s) remplie(s) rapporte tant de points + telle(s) condition(s) remplie(s) rapporte tant de points +....
Une première simplification cependant :
VB:
=SI(GAUCHE(O2;2)="ST";SI(T2>0;SI(W2=0;5;SI(W2="OK";SI(B2="COMAC";SI(AC2>0;SI(AD2>0;SI(AE2=AF2;SI(AG2=AH2;12;11);11);9);8);SI(AE2=AF2;SI(AG2=AH2;12;11);11));SI(AB2="OK";SI(B2="COMAC";SI(AC2>0;SI(AD2>0;SI(AE2=AF2;SI(AG2=AH2;12;11);11);9);8);SI(AE2=AF2;SI(AG2=AH2;12;11);11));7)));2);SI(T2<>0;SI(B2="COMAC";SI(AC2>0;SI(AD2>0;SI(AE2=AF2;SI(AG2=AH2;12;11);11);9);8);SI(AE2=AF2;SI(AG2=AH2;12;11);11));2))
car :
- il est inutile de référencer les colonnes,
- les dates ne peuvent pas être inférieures à 0, donc "<>" peut être simplifié par ">"
- AE-AF=0 est équivalent à (et plus court que) AE=AF. Idem pour AG/AH

Nota1 : Nok en W n'est pas pris en compte dans votre formule.
Nota2 : L'exhaustivité des cas aurait aidé à reconstituer -en plus simple- cette formule. Et notamment - mais pas que - les conditions pour obtenir les notes de 1, 3, 4, 6 et 10.
 

richbike87

XLDnaute Nouveau
Bonjour Victor,

Il faut que je comprenne le fonctionnement mais cela a l'air pas mal, merci.
Je vous transmet le tableau avec les deux autre cas qui peuvent se produire.
 

Fichiers joints

Victor21

XLDnaute Barbatruc
Supporter XLD
Re,

Explications :
Première condition
VB:
ET(B2="COMAC";GAUCHE(O2;2)="ST")*2
Si B2= "COMAC", B2= "COMAC" renvoie VRAI.
Si GAUCHE(O2;2)="ST", GAUCHE(O2;2)="ST" renvoie VRAI
ET(B2="COMAC";GAUCHE(O2;2)="ST") renvoie ET(VRAI;VRAI) soit VRAI
et VRAI*2 = 2
Donc la valeur 2 est renvoyée si les conditions sont remplies.

De la même manière,
Deuxième condition
Code:
(T2>0)*3
Si T2 est rempli, T2>2 renvoie VRAI
et VRAI*3 = 3 qui s'ajoute à la 1° condition
Concernant votre dernier fichier, des exemples ne suffisent pas. L'explication de la notation est nécessaire pour en sortir les règles.
 

richbike87

XLDnaute Nouveau
Re,

Si je modifie AG sur la ligne 7 de votre premier fichier je repasse alors au chiffre 9, hors il devrais rester au chiffre 11.
Je vais voir pour vous faire des explications des differents cas et vous reposter le fichier.
 

Discussions similaires


Haut Bas