Recherche d'un ou plusieurs text

Résolu
Karim Ben Abdallah -  
 Karim Ben Abdallah -
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

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Bonjour Vaucluse

      Toujours au top ! ta solution est meilleure que la mienne !
      Bien Cdlmnt
      Via
      0
    2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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
    3. Karim Ben Abdallah
       
      Merci Vaucluse, c'est exactement ce que je cherche, ça marche très bien :))))
      merci via, djidji, frenchie, merci pour vous tous..
      0
  2. DjiDji59430 Messages postés 4280 Date d'inscription   Statut Membre Dernière intervention   718
     
    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
  3. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
  4. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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