Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Formule si multiple contient

Bibicompte

XLDnaute Nouveau
Bonjour,

Après plusieurs recherche sur internet, je pose ma question sur ce forum, il se peut que la réponse s'y trouve mais je ne trouve pas le/les mot(s) clef(s) qui permettrai d'identifier mon problème.

Voici mon problème ; en colonne B je souhaite afficher une valeur en fonction de la valeur qui se trouve en colonne A.
En colonne A, je peux avoir du vide ou bien des "légumes" ou bien des "fruits"
Si c'est vide alors vide
Si cela contient "carotte" ou "poireau" ou "navet", ... alors "légumes"
Si cela contient "orange" ou "melon" ou "pomme" , ... alors "fruits"
Il se peut que la valeur recherché soit juste une parti de la valeur en colonne A, exemple ; orange-sanguine pour orange.

Je reste à votre disposition si vous avez besoin de plus d'info

Cdt,
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Bibicompte, et bienvenu sur XLD,
Je reste à votre disposition si vous avez besoin de plus d'info
Ben ouais ... comme un petit fichier test par exemple, ce qui nous éviterait de se retaper un fichier qui serait nécessairement qu'approximatif.
Bien évidemment cela suppose que vous avez des listes d'identification. Car compter sur Excel pour savoir qu'une orange est un fruit serait peut être trop lui demander.
(d'autant qu'un avocat est biologiquement un fruit mais est consommé comme un légume, par ex)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Evidemment j'avais compris, mais la problématique sera la même quel que soit le domaine abordé.
XL ne peut pas savoir qu'une pomme est un fruit, ni que telle pièce est un élément de tel organe, ni que tel mouvement appartient à telle opération financière.
Il vous faut une table de correspondance dans tous les cas.
 

Bibicompte

XLDnaute Nouveau
Ok et la table de correspondance permettrait à lui faire comprendre ?
Je n'ai jamais utilisé de table de correspondance...
Initialement j'avais en tête une formule qui pourrait ressemblait à ça :
=SI(OR(A1="carotte",A1="poireau",...);"légumes";Si(OR(A1="orange",A1="melon",...);fruits;"")

Le gros soucis que je rencontre c'est que la/les valeurs ne sont pas exactement toujours écris de la même façon. Fruits pour orange sanguine par exemple
 

dysorthographie

XLDnaute Accro
Je t'invites, si ce n'est déjà fait, d'ajouter un onglet dans lequel on trouverait
colonne A :carotte, orange sanguine, poivron, tomate etc.
Colonne B légume, fruits etc.

Je pense que tu peux en profiter pour formaliser l'écriture de tes fruits et légumes car il me semble difficile d'apprendre à lire a VBA.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Le gros soucis que je rencontre c'est que la/les valeurs ne sont pas exactement toujours écris de la même façon. Fruits pour orange sanguine par exemple
Un ex type en PJ avec une table de correspondance, et :
VB:
=RECHERCHEV(GAUCHE(C7;5);Correspondance!C:D;2)
On ne compare que les 5 premiers caractères, en supposant que deux items n'aient pas les mêmes, sinon on réduit à 4.
 

Pièces jointes

  • Fruits et Légumes.xlsx
    13.8 KB · Affichages: 3

Bibicompte

XLDnaute Nouveau
Malheureusement, je pense que la solution de la table de correspondance ne se prête pas à mon cas.
Un peu plus de contexte ; je travail sur un export sous Excel venant d'un autre logiciel.
Ce fichier "brute" est retravaillé pour des TCD. Je ne peux pas choisir la forme "brute".
La formule permettrai d'éviter tout un tas de filtre/défiltre puis refiltre...
Tout ça pour simplifier et après transformer en macro.

Je pensais vraiment qu'Excel était capable de capter une suite de caractère dans une cellule peu importe sa place dans la cellule.
orange......
....orange....
......orange
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Ce que vous nous dites n'a rien à voir avec le sujet.
Le titre était comment savoir si une orange est un fruit ou un légume.
Là vous nous expliquez si XL est capable de détecter un mot dans une phrase. Ca n'a rien à voir.
Pour le second point, on peut faire :
VB:
=SIERREUR(SI(CHERCHE(E$3;$D4);"X";"");"")
Voir PJ.
 

Pièces jointes

  • Bibi.xlsx
    8 KB · Affichages: 4

RyuAutodidacte

XLDnaute Impliqué
Bonjour @Bibicompte , ( @sylvanu , @dysorthographie )
Si vous reprenez ce même fichier pour l'anonymiser d'une vingtaines de lignes permettant de représenter l'ensemble des différents cas rencontrés avec tenant et aboutissant et le résultat voulu sur une feuille supplémentaire, ca nous donnerai une vision plus claire pour vous aider.
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…