Recherche d'un ou plusieurs text

Résolu/Fermé
Karim Ben Abdallah - 9 avril 2015 à 12:40
 Karim Ben Abdallah - 9 avril 2015 à 18:28
Bonjour,

Comment faire une formule de recherche pour un ou plusieurs texte dans une cellule,

j'ai une base des composants, et je voulais les distinguer par famille

exp: si A1 contient "vis" ou "rondelle" => revoie "visserie"
si A1 contient "connecteur" ou "contact" => revoie "composant électrique"

4 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 403
9 avril 2015 à 14:39
Bonjour
voyez si vous pouvez adapter ce modèle et revenez si difficultés ou besoin de complément
https://www.cjoint.com/c/EDjoZG3sTN7
crdlmnt
2
via55 Messages postés 14426 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 6 juin 2024 2 711
9 avril 2015 à 15:11
Bonjour Vaucluse

Toujours au top ! ta solution est meilleure que la mienne !
Bien Cdlmnt
Via
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 403
9 avril 2015 à 17:02
Merci Via.. mais j'aurais bien pour ma part, du mal à proposer quoique ce soit en VBA.
Et là, c'est moi qui te tire le chapeau
Bien amicalement
0
Karim Ben Abdallah
9 avril 2015 à 18:28
Merci Vaucluse, c'est exactement ce que je cherche, ça marche très bien :))))
merci via, djidji, frenchie, merci pour vous tous..
0
DjiDji59430 Messages postés 4071 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 12 juin 2024 655
9 avril 2015 à 14:06
Bonjour Karim, et bienvenue,

Quand on joint un fichier-test avec tous les cas, ou le fichier, c'est plus commode pour les intervenants.

1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".

Cordialement.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
9 avril 2015 à 14:07
Bonjour
Exemple avec la cellule à tester en A1
=SI(SIERREUR(CHERCHE("vis";A1;1);0)+SIERREUR(CHERCHE("rondelle";A1;1);0)>0;"visserie";SI(SIERREUR(CHERCHE("contact";A1;1);0)+SIERREUR(CHERCHE("connecteur";A1;1);0)>0;"composant électrique"))
Cdlt
0
via55 Messages postés 14426 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 6 juin 2024 2 711
9 avril 2015 à 14:31
Bonjour Karim

Par formule :
=SI(OU(NB.SI(A1;"*vis*");NB.SI(A1;"*rondelle*"));"visserie";SI(OU(NB.SI(A1;"*contact*");NB.SI(A1;"*connecteur*"));"composant électrique";""))

Par contre si tu as une longue liste par famille et plusieurs familles la formule deviendra vite une usine à gaz. Dans ce cas il vaut mieux passer par une fonction personnalisée
Exemple :
Function famille(plage As Range)
chaine = plage.Value
    Dim Tableau() As String
    Dim i As Integer
    'découpe la chaine en fonction des/
    'le résultat de la fonction Split est stocké dans un tableau
    Tableau = Split("vis/écrou/rondelle", "/")
    'boucle sur le tableau pour voir si le mot existe dans la chaine
    For i = 0 To UBound(Tableau)
    ' s'il existe result prend le nom de la famille
    If InStr(chaine, Tableau(i)) > 0 Then result = "visserie"
    Next
    Tableau = Split("connecteur/contact/fusible", "/")
    For i = 0 To UBound(Tableau)
     If InStr(chaine, Tableau(i)) > 0 Then result = "composant électrique"
    Next
    Tableau = Split("tournevis/pince/marteau/clé", "/")
    For i = 0 To UBound(Tableau)
     If InStr(chaine, Tableau(i)) > 0 Then result = "outillage"
    Next
    famille = result
End Function


Le code de la fonction se met dans un module dans l'éditeur VBA (ALT F11 pour ouvrir Editeur puis Insertion Module Copier et coller la macro)
Dans les lignes Tableau de la macro tu établis tes listes de mots par maille séparés par des /
Dans la boucle qui suit tu indiques à la fin du If le nom de la famille
Tu peux rajouter autant de lignes que necessaires pour de nouvelels familles

Ensuite la fonction s'utilise dans la plage Excel comme toute fonction Excel ex =famille(A1) renverra visserie s'il y a rondelle quelque part dans la chaine de caractères en A1 (rondelles xx, lot de rondelles etc)

Cdlmnt
Via

0