Formule redondante

papajer

XLDnaute Nouveau
Bonjour à tous.
J'ai une question qui peut paraitre simple, mais depuis que j'utilise excel, je n'ai pas trouvé de moyen d'éviter ce problème (qui n'en est pas un à proprement parler).
J'ai souvent, très souvent besoin d'écrire des formules qui ressemblent à ça :
Code:
=SI( [expression1] = 0 ; [expression2] ; [expression1] )
ou
=SI( [expression1] = 0 ; [expression1] ; [expression2] )
Lorsque la condition à tester est "est-ce que l'expression1 renvoie une erreur ?", la fonction SIERREUR fonctionne à merveille. Mais dans le cas ci-dessus (égal à 0 ou un autre test, peu importe), je suis obligé d'écrire DEUX fois l'expression1.
Et comme le plus souvent, c'est une RECHERCHE bien longue, ça fait des formules illisibles.
Je pourrai certes passer par une cellule "de transition".

Je me demande s'il existe un moyen plus simple d'utiliser la formule SI dans ce cas précis.

Merci de vos réponses.
 

papajer

XLDnaute Nouveau
Bonjour,
Je ne comprend pas très bien comment utiliser MAX ou MIN dans ce cas là.

Voici un exemple concret :
Code:
=SI(RECHERCHEV(J20;C36:P75;10;FAUX)=0;"";RECHERCHEV(J20;C36:P75;10;FAUX))

Ci-dessus, je suis obligé de remettre toute l'expression :
Code:
RECHERCHEV(J20;C36:P75;10;FAUX)

Et encore, dans cet exemple, l'expression est "petite".
N'y a-t-il aucun moyen pour alléger le SI ?
 

chris

XLDnaute Barbatruc
Bonjour

Effectivement dans ton cas on ne peut utiliser MIN ou MAX.
Cependant si le résultat d'une recherche est normalement un nombre, je conseille de garder le 0 (donc éviter le SI) et d'utiliser un format de nombre qui n'affiche pas les zéros.
Il est déconseillé de mélanger chaînes de texte et nombres dans une même colonne car cela peut fausser les calculs utilisant la colonne.

Un exemple ou le SI est évité (pourrait être remplacé ici par SIERREUR mais ce n'est pas toujours le cas)
Code:
=J16/SI(SOMME(J4:J5)=0;1;SOMME(J4:J5))
remplacé par
=J16/MAX(SOMME(J4:J5);1)

(cas de nombres entiers en colonne J)

Cette logique MIN MAX me sert souvent dans des formules DECALER calculant des plages glissantes pour éviter des adressages impossibles...
 

papajer

XLDnaute Nouveau
Je vois l'astuce. Merci pour l'info.
J'essaierai de m'en souvenir si le cas se présente.

Le problème c'est qu'en général, je ne fais pas de calculs et les recherches sont généralement sur des chaines de caractères.
La fonction RECHERCHEV ou H, renvoie un zéro si la case est vide au lieu de la chaine de caractère vide. C'est plus logique qu'elle renvoie un zéro, mais dans mon cas, je suis obligé de passer par un SI pour récupérer la chaine vide.

Bref, s'il n'y a aucun moyen, je ferai comme d'habitude. Je suis juste étonné que Microsoft n'ait pas pensé à ce cas de figure (le cas de figure général, pas le mien en particulier).

Merci en tout cas pour l'astuce.
 

Dugenou

XLDnaute Barbatruc
Bonjour,
Si les valeurs retournées sont du texte et que le probleme est de ne pas afficher de 0
dans le cas =SI(RECHERCHEV(J20;C36:p75;10;FAUX)=0;"";RECHERCHEV(J20;C36:p75;10;FAUX))
Il y a une technique héritée de notre chère Monique : =RECHERCHEV(J20;C36:p75;10;FAUX)&""
le 0 suivi de "" n'affiche rien
Si vous avez deux recherches différentes on en reste au bon vieux SI
Cordialement
 

papajer

XLDnaute Nouveau
Génial !
J'utilise le même système pour "transformer" un nombre stocké sous forme de texte. Je le multiplie par 1.
Là, on concatène une chaine vide. Brillant.

Honnêtement, cette technique s'appliquera dans 90% des cas. Pour les autres, il faudra faire avec les SI.

MERCI.
 

Discussions similaires

Statistiques des forums

Discussions
311 721
Messages
2 081 928
Membres
101 842
dernier inscrit
seb0390