OVH Cloud OVH Cloud

Simplification formule SI

5 réponses
Avatar
PYL
Bonjour,

Depuis pas mal de temps je cherche une solution élégante pour traiter le pb
suivant :

Dans une formule SI, on peut faire le test sur une expression relativement
complexe (ex: ci-dessous) et vouloir également que le résultat de cette
expression s'affiche si TRUE ou FALSE.

=SI(ESTERREUR(INDEX($C$4:$C$226;EQUIV(E21;$D$4:$D$226;0)));"ERREUR";INDEX($C$4:$C$226;EQUIV(E21;$D$4:$D$226;0)))

Actuellement, le seul moyen que j'ai est de recopier dans la formule SI
l'expression en question (ou alors la mettre dans d'autres cellules
"technique" et y faire appel).

N'y a t-il pas une subtilité dans EXCEL qui permettrait de passer dans une
variable le résultat de l'expression que le SI évalue et ensuite réutiliser
cette variable toujours dans le SI ?

Merci à tous ceux qui auront eu le courage de lire ceci jusqu'au bout et
merci encore plus à ceux qui auront pu me donner une solution !

PYL

5 réponses

Avatar
Trirème
Bonjour PYL
Insère un nom -Test- par exemple qui ferait référence à :
ÞCALER($C$4:$D$226;EQUIV($E$21;$D$4:$D$226;0)-1;1;1;1)
Ensuite =SI(ESTERREUR(Test);"ERREUR";Test)

J'avoue que je m'étais déjà posé la même question sans avoir osé aller
jusqu'au bout.
Merci, tu as été mon déclencheur :-)
Trirème

Bonjour,

Depuis pas mal de temps je cherche une solution élégante pour traiter le pb
suivant :

Dans une formule SI, on peut faire le test sur une expression relativement
complexe (ex: ci-dessous) et vouloir également que le résultat de cette
expression s'affiche si TRUE ou FALSE.

=SI(ESTERREUR(INDEX($C$4:$C$226;EQUIV(E21;$D$4:$D$226;0)));"ERREUR";INDEX($C$4:$C$226;EQUIV(E21;$D$4:$D$226;0)))

Actuellement, le seul moyen que j'ai est de recopier dans la formule SI
l'expression en question (ou alors la mettre dans d'autres cellules
"technique" et y faire appel).

N'y a t-il pas une subtilité dans EXCEL qui permettrait de passer dans une
variable le résultat de l'expression que le SI évalue et ensuite réutiliser
cette variable toujours dans le SI ?

Merci à tous ceux qui auront eu le courage de lire ceci jusqu'au bout et
merci encore plus à ceux qui auront pu me donner une solution !

PYL


Avatar
Modeste
Bonsour®
PYL wrote:
N'y a t-il pas une subtilité dans EXCEL qui permettrait de passer
dans une variable le résultat de l'expression que le SI évalue et
ensuite réutiliser cette variable toujours dans le SI ?


tu pourrais t'inspirer d'une réponse d'un des père fondateur de ce forum
'-----Laurent Longre ---19 sep 2000 -----------
Dim V

Function SETV(Param)
V = Param
SETV = Param
End Function

Function GETV()
GETV = V
End Function

'-------------------

Et la formule :

=SI(ESTNA(SETV(RECHERCHEV(...)­));"inexistant";GETV())

La fonction SETV stocke le résultat du premier RECHERCHEV dans une
variable intermédiaire, et GETV() récupère ensuite directement ce
résultat, si RECHERCHEV n'a donné aucune erreur. Si la recherche est
faite sur un tableau de taille importante, le calcul est alors plus
rapide.

@+


--
http://viadresse.com/?94912042

Avatar
Trirème
Cool,
Et j'imagine que l'évaluation de la FUNCTION ne se fait "qu'à la
demande" alors que dans ma proposition le calcul est fait en permanence
(résultat volatil). C'est ça ?
Et pas besoin de définir des tas de variables.

Quel bonheur d'apprendre tous les jours. Mais que la montagne est haute,
et que la pente est raide...
Trirème

Bonsour®
PYL wrote:

N'y a t-il pas une subtilité dans EXCEL qui permettrait de passer
dans une variable le résultat de l'expression que le SI évalue et
ensuite réutiliser cette variable toujours dans le SI ?



tu pourrais t'inspirer d'une réponse d'un des père fondateur de ce forum
'-----Laurent Longre ---19 sep 2000 -----------
Dim V

Function SETV(Param)
V = Param
SETV = Param
End Function

Function GETV()
GETV = V
End Function

'-------------------

Et la formule :

=SI(ESTNA(SETV(RECHERCHEV(...)­));"inexistant";GETV())

La fonction SETV stocke le résultat du premier RECHERCHEV dans une
variable intermédiaire, et GETV() récupère ensuite directement ce
résultat, si RECHERCHEV n'a donné aucune erreur. Si la recherche est
faite sur un tableau de taille importante, le calcul est alors plus
rapide.

@+





Avatar
PYL
Merci à tous, il y a de quoi travailler !
Si d'autres solutions viennent encore, elles seront les bienvenues


"Trirème" wrote:

Cool,
Et j'imagine que l'évaluation de la FUNCTION ne se fait "qu'à la
demande" alors que dans ma proposition le calcul est fait en permanence
(résultat volatil). C'est ça ?
Et pas besoin de définir des tas de variables.

Quel bonheur d'apprendre tous les jours. Mais que la montagne est haute,
et que la pente est raide...
Trirème

Bonsour®
PYL wrote:

N'y a t-il pas une subtilité dans EXCEL qui permettrait de passer
dans une variable le résultat de l'expression que le SI évalue et
ensuite réutiliser cette variable toujours dans le SI ?



tu pourrais t'inspirer d'une réponse d'un des père fondateur de ce forum
'-----Laurent Longre ---19 sep 2000 -----------
Dim V

Function SETV(Param)
V = Param
SETV = Param
End Function

Function GETV()
GETV = V
End Function

'-------------------

Et la formule :

=SI(ESTNA(SETV(RECHERCHEV(...)­));"inexistant";GETV())

La fonction SETV stocke le résultat du premier RECHERCHEV dans une
variable intermédiaire, et GETV() récupère ensuite directement ce
résultat, si RECHERCHEV n'a donné aucune erreur. Si la recherche est
faite sur un tableau de taille importante, le calcul est alors plus
rapide.

@+








Avatar
ROGEON Eric
"PYL" a écrit dans le message de news:

Merci à tous, il y a de quoi travailler !
Si d'autres solutions viennent encore, elles seront les bienvenues


"Trirème" wrote:



Bonjour,

Quitte à créer un fonction, pourquoi ne pas se faire directement la fonction
"SI" qui fait le tout toute seule ?

Function SI_ERREUR(FORMULE, ALTERNATIVE)
If IsError(FORMULE) Then
SI_ERREUR = ALTERNATIVE
Else
SI_ERREUR = FORMULE
End If
End Function

Exemple avec A1/B1 représentant la formule complexe:
Au lieu d'écrire =SI(ESTERREUR(A1/B1);"Erreur!!!";A1/B1")
On écrit =SI_ERREUR(A1/B1;"Erreur!!!")

Eric