Si et SI ? Ou ? + de 7 variantes

  • Initiateur de la discussion Nikko
  • Date de début
N

Nikko

Guest
Bonjour,

Je souhaiterai créer un fichier avec une incrémentation automatique de données dans une colonne en fonction de valeurs pré-définies dans une colonne précédente.

Le problème, c'est que j'ai bien essayé avec 'si et si', mais je suis limité à 7 formules possibles et mon fichier en dénombrerait au moins 15.
D'autant plus que ma cellule 'résultat' aurait des résultats différents selon les données saisies dans la cellule de 'valeur'

C'est pourquoi je viens à vous, furieux adeptes d'excel qui animez ma jalousie afin d'obtenir de l'aide.

Par avance, merci de votre aide, car là je suis perdu.

Nikko

Ne sachant trop comment vous expliquer mon probleme, je vous joins un exemple, ce qui vous facilitera la compréhension.
 
A

AV

Guest
Ave tout le monde,

'..Une formule exacte est une bonne formule..'

Sans vouloir lancer un débat et sans aucun esprit polémique, une solution de recherche utilisant la fonction RECHERCHEV n'est pas une vraie bonne idée(non évolutivité dans la base de données).

PS : pour ce qui est de la gestion des erreurs, si l'on est soucieux du 'visuellement court', la MEFC peut supprimer tout test logique sur une éventuelle erreur.

AV [MVP Excel]
 
N

Nikko

Guest
Plop,

Grand merci à tous, j'ai enfin pu faire mon fichier mais également comprendre en partie comment fonctionnait la fonction RECHERCHEV.

Avoir une formule c'est facile, la comprendre c'est mieux ;)

Bonne continuation à vous et merci de votre engagement.

Nikko
 
A

AV

Guest
Re,

'non évolutivité dans la base de données'
...J'aimerai avoir un mot d'explication...

La combinaison des fonctions INDEX/EQUIV est bien préférable à la fonction RECHERCHEV qui 'a des boulets à ses pieds' !
Inconvénients de RECHERCHEV dont certains rédhibitoires :
* Cette fonction ne peut retourner que les valeurs à droite de la colonne de recherche.
* Elle est incapable d'utiliser des caractères génériques dans le critère de recherche.
(EQUIV s'en sort très bien)
* Selon que, dans la plage de recherche, des valeurs numériques sont triées croissant ou décroissant, pour une recherche de la valeur la plus proche, la fonction peut échouer alors que EQUIV peut s'adapter à ces 2 cas en faisant varier son 3° argument (1 ou -1)
* Dans l'immense majorité des ca, elle est utilisée (l'aide incite à ça !) en se servant d'une constante numérique pour indiquer l'index de colonne à droite de la plage de recherche. Conséquence : toute insertion de colonne entre les 2 (champ oublié et rajouté dans la BD) fera planter le calcul.

Un fichier exemple joint, vite fait et non exhaustif..

AV [MVP] anti 'RechercheTruc' depuis des lustres ;-) [file name=Recherche_20060406154007.zip size=3043]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Recherche_20060406154007.zip[/file]
 

Pièces jointes

  • Recherche_20060406154007.zip
    3 KB · Affichages: 14

andré

XLDnaute Barbatruc
Re,

Merci pour la réponse.
Je ne partage pas entièrement ton avis, mais je ne veux pas non plus ouvrir ici un débat quant au pour et au contre de telle ou telle fonction.
Au restaurant je choisis le vin en fonction du plat, et non un vin qui s'adapte à n'importe quel plat.

Simplement deux petites remarques.

Personnellement, j'emploie toujours INDEX EQUIV, mais lorsque je m'adresse à quelqu'un qui manifestement ne maitrise pas fort bien Excel, je lui préfère RECHERCHEV (quand c'est possible), car plus facile à comprendre et donc à mettre en place.
Je trouve dès lors le INDEX EQUIV quelque peu 'prétentieux' (moi je sais et toi tu n'as qu'à tirer ton plan).
J'essaie d'aider et non pas d'imposer mon savoir.
C'est une question de point de vue.

Pour le commentaire de ta cellule G18, en écrivant la formule comme suit :
=RECHERCHEV(F18;$B1:D10;COLONNE()-4;0)
tu peux insérer autant de colonnes que tu veux sans que cela plante.
Mon intention n'est pas de t'apprendre quelque chose (lol), mais je crois que cela devait être dit pour ceux qui nous lisent.

Au plaisir de te rencontrer prochainement sur d'autres fils.
Â+
 

Jam

XLDnaute Accro
Salut AV, andré,

Perso quand j'entend parler de base de données sous Excel je ne peux m'empêcher de rire ! Car ce n'est rien connaître aux bdd. Alors RECHERCHEV, BD..., ou INDEX/EQUIV ou n'importe quoi d'autre, ce sera toujours bien moins performant qu'un SELECT ... FROM ...
Alors entre nous AV, l'objectif s'est de rechercher et obtenir un résultat et non pas de gérer (vaste supercherie/utopie sous Excel). Une simple liste, même si elle comporte 65K ligne ne sera jamais une base de données.
Donc ton 'non évolutivité dans la base de données' me parait déplacé.

Bonne soirée
 
A

AV

Guest
Re,

'...Personnellement, j'emploie toujours INDEX EQUIV..'

Ben tu vois bien...;-)

'...Je trouve dès lors le INDEX EQUIV quelque peu 'prétentieux' (moi je sais et toi tu n'as qu'à tirer ton plan)....'

Retomberait-on dans les procès d'intention ? ;-(

Ceci dit bien évidemment chacun est libre de faire ce qu'il veut !

'..Pour le commentaire de ta cellule G18, en écrivant la formule comme suit :
=RECHERCHEV(F18;$B1:D10;COLONNE()-4;0)
tu peux insérer autant de colonnes que tu veux sans que cela plante....'

J'ai bien précisé dans ma dernière remarque '..Dans l'immense majorité des cas, elle est utilisée (l'aide incite à ça !) en se servant d'une
constante numérique....'
Une petite recherche sur le nom devrait confirmer 'l'immense majorité des cas...'

AV [MVP Excel]
 
A

AV

Guest
A quoi dois-je ce mouvement d'humeur ?
Totale lecture au premier degré ?
Problèmes gastriques ? ;-)

Bon.... décidément....Allons-y....

'Perso quand j'entend parler de base de données sous Excel je ne peux m'empêcher de rire !'
** C'est ta liberté

'...Car ce n'est rien connaître aux bdd'
** On peut déduire de la phrase que toi seul connait les bd ! Ne serait-ce pas un postulat un tantinet prétentieux ?

'... Une simple liste, même si elle comporte 65K ligne ne sera jamais une base de données....'
** Une simple liste (comme tu dis), n'a jamais été, en soi, une BD. Une 'base de données' c'est un concept générique d'organisation qui ne se mesure pas à la quantité de données traitées.

'..Donc ton 'non évolutivité dans la base de données' me parait déplacé...'
** Cette pseudo conclusion me paraît assez effarante compte-tenu de l'absence totale d'argumentation (c'est surement un oubli) par rapport à la question débattue et les exemples joints, à savoir un comparatif RECHERCHEV et INDEX/EQUIV.

AV [MVP Excel]
 

Jam

XLDnaute Accro
Re AV,

Mouvement d'humeur, certainement :evil: :evil:

Bref, pour revenir et terminer sur la comparaison des fonctions, l'idée n'est pas tant de les comparer que de trouver LA solution qui convient. Tu confonds le but recherché et le moyen:
RECHERCHEV/H: But-> Renvoyer la valeur d'une cellule à partir d'une recherche de type Equiv pour la ligne et d'un numéro d'index pour la colonne
INDEX: But -> Renvoyer le contenu d'une cellule à l'aide de ses coordonnées dans une plage
EQUIV: But -> Renvoyer la position d'une valeur dans un vecteur.

Ah, INDEX ou EQUIV seuls sont bien incapable de faire ce que RECHERCHE(V/H) sait faire tout seul !

Pour une définition de SGBD je te renvoie sur le lien de Wikipédia:
http://fr.wikipedia.org/wiki/Système_de_gestion_de_base_de_données
ou encore:
http://www.commentcamarche.net/bdd/bddintro.php3
Je passerai pour moins prétentieux, là c'est pas moi qui en parle (des BD) mais des gens a priori plus instruits que moi sur le sujet.


Sur ce, fin de polémique (enfin j'espère) et bonne soirée.
 

didique

XLDnaute Occasionnel
Bonsoir tout le monde !

Bon moi je ne voudrais pas jeter de l'huile déjà bouillante sur le feu, mais tout de même je me permets d'entrer ici sur la pointe des pieds pour demander à AV quelques explications (puisque j'ai lu ailleurs qu'il attendait qu'on se pose des questions suite à ce qu'il répond !!)

Donc voilà, moi je suis plutôt du style un peu nulle mais je me documente sur ce forum et notamment sur la recherchev (au passage merci Brigitte pour ton entrainement !) et là AV tu viens de semer la panique dans mon petit esprit limité (pléonasme dirait Brico puisque femme !! ;) mais bon ...passons) et ce avec tous les inconvénients que tu énumères.
Donc AV si tu pouvais m'expliquer un peu plus ce que sont des 'caractères génériques' ça me ferait plaisir !! Parce que vois-tu tout le monde n'a pas ici la science infuse que tu as ! et j'aime à penser qu'il y a des gens comme André qui se soucient de gens comme moi qui ne comprennent pas tout et qui ont besoin de solutions simples pour réaliser le boulot qu'ils sont en train de chercher à faire et si possible en comprenant ce qu'ils font !!!
Et en passant : au moment où on doit produire son travail, on n'a pas toujours le temps de faire une 'petite recherche' approfondie pour se débloquer soit même ! D'où l'utilité de ce forum (merci à tous ceux qui nous aident !)

Bonne nuit à tous et mille excuses pour ce message un peu long à mon goût ....


:silly:
 

pat1545.

XLDnaute Accro
Bonsoir,
me me permets de mettre mon grain de sel aussi et ceci sans défendre AV qui le fait très bien tout seul , mais il est de ceux qui m'ont convaincu d'utiliser index/equiv pour les raisons qu'ils a déjà données...
Je trouve plus facile de lire:
index(prix;equiv(B2;ref;0))
qui en clair dirait : ramène moi le prix pour l'equivalence entre B2 et la colonne ref
simple !!!
Si on a comme certains, 70 colonnes, le nom est plus facile à mettre dans la formule que colonne 45 ou 46 (par la touche F3, on obtient les noms).
Voilà , c'est mon avis et je le partage (!) et de grâce nous sommes ici pour conseiller par pour imposer quoique se soit à personne, mais quelques années d'expérience montrent aux nouveaux comment faire clair, facile et rapide si possible..
Alain n'a pas la science infuse, il connait tres bien son sujet formules ET vba , mais il est vrai que parfois ses explications sont un peu courtes...
Il pourrait aussi faire plus facile: mettre un lien vers des fichiers exemples qui se trouvent sur Excelabo aussi, mais au moins il répond... comme d'autres

Bye d'un insomniaque momentané
 
A

AV

Guest
Re,

'...tu viens de semer la panique dans mon petit esprit limité (pléonasme dirait Brico puisque femme !! ;) mais bon ...passons) et ce avec tous les inconvénients que tu énumères...'
Comprenons nous bien : il ne s'agit pas de dire que RECHERCHEV 'ne fonctionne pas' mais, au travers d'exemple (fichier joint précédemment), de démontrer que la combinaison INDEX/EQUIV permet de résoudre tout ce que résoud 'RechercheTruc' PLUS d'autres problèmes.
Il donc justifié de se poser la question de savoir pourquoi employer un outil 'incomplet' alors qu'on a à sa disposition un outil plus polyvalent. Ou, formulé différemment, comme, qui peut le plus peut le moins...etc...
Il peut y avoir, certes, une petite difficulté de compréhension initiale sur la combinaison INDEX/EQUIV, mais, si l'on ne plonge pas tout de suite sur l'aide en ligne et que l'on s'en tient à dire que EQUIV renvoie la position d'une valeur cherchée et que INDEX renvoie une valeur en fonction d'une position donnée, n'importe qui, après quelques essais/erreurs, aura assimilé cette notion.
De plus, ces 2 fonctions sont couramment utilisées dans des formules (souvent matricielles) beaucoup plus compliquées.
En résumé, c'est comme le vélo : il vaut mieux commencer tôt!


'... si tu pouvais m'expliquer un peu plus ce que sont des 'caractères génériques' ça me ferait plaisir !!...'

Ca n'est pas une exclusivité Excel.
Il s'agit de caractères pouvant remplacer 1 ou plusieurs caractères non définis, souvent utilisés dans une recherche (formules, filtres...)
Le ? (point d'interrogation) remplace 1 caractère quelconque.
Le * (astérisque) remplace un nombre indéfini de caractères (de 1 à xxx)

Exemples succints :
Avec les données suivantes en A1:A5 :
Lotos
toto fait du vélo
toto
C'est toto le plus beau

En B2:B5 les formules suivantes :
=EQUIV('?oto';$A$1:$A$5;0)
=EQUIV('?oto?';$A$1:$A$5;0)
=EQUIV('toto*';$A$1:$A$5;0)
=EQUIV('toto';$A$1:$A$5;0)
=EQUIV('* toto*';$A$1:$A$5;0)

Je te laisse 'réfléchir' sur le pourquoi des différents résultats renvoyés (positions de la recherche dans la liste)
:)
AV []
 

Brigitte

XLDnaute Barbatruc
Bonjour tout le monde,

Alain, j'ai un souci pour comprendre (les autres déjà c coton) celle-ci : =EQUIV('* toto*';$A$1:$A$5;0)

car chez moi elle donne 4 alors que le mot 'toto' ne figure que 3 fois dans ta liste (qui va d'ailleurs de A1 à A4... si j'ai tout suivi).

Si tu peux m'aider à comprendre pourquoi, ca ferait avancer un peu mon schmilblick.

Une adepte de rechercheV (parce qu'elle a du mal avec index/equiv même si elle se soigne encore plus avec ton fil).

Merci d'avance.
 
A

AV

Guest
Re,

=EQUIV('* toto*';$A$1:$A$5;0)

'...car chez moi elle donne 4 alors que le mot \\'toto\\' ne figure que 3 fois dans ta liste (qui va d'ailleurs de A1 à A4... si j'ai tout suivi)...'

EQUIV renvoie la position d'une occurrence dans une liste et non un décompte (genre NB.SI) !

La valeur 4 renvoyée correspond à la 4° position de la liste A1:A4... donc en A4 puisque dans cette cellule (et pas dans les précédentes )on trouve bien la chaine 'toto' précédée d'un espace et suivi (ou non) d'un ou plusieurs caractères.
Rappel : EQUIV s'arrête à la 1° occurrence trouvée !

PS : Les recherches avec les caractères génériques ne sont peut-être pas le cas de figure par lequel il faut commencer pour mettre le nez dans INDEX/EQUIV.....

AV [...]
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 502
Membres
103 563
dernier inscrit
samyezzehar