Rechercher mot dans une char (Excel)

Utilisateur anonyme -  
titeufdu89 Messages postés 387 Statut Membre -
Bonjour,

Je suis bloqué sur Excel malgré mes nombreux essais et recherches :

Je dispose (dans une première feuille) d'un tableau de 2 colonnes de plus de 200 lignes et (dans une seconde feuille) d'une chaine de caractères

Mon but est de rechercher dans la chaine de caractère n’importe lequel des mots de la première colonne du tableau et d'afficher sa valeur associée de la seconde colonne.

RECHERCHEV ne fonctionne pas car la cellule ne contient pas uniquement la valeur recherchée
SI ne fonctionne pas non plus car j'ai plus de 64 choix possibles...

Je n'y arrive pas, si vous avez une solution ... Merci d'avance :)

5 réponses

  1. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
     
    Bonjour,

    Essaye :
    =si(cherche(mot;chaine de caracteres);valeur associée;"")

    Crdlmt
    0
    1. Utilisateur anonyme
       
      Bonjour, désolé je me suis mal exprimé, je dois rechercher n’importe lequel des mots de la première colonne et pas seulement un seul (j’ai corrigé le post original)
      0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonjour,

    l'idéal serait d'avoir un exemple de fichier pour en apprécier sa structure et te donner une formule de Mise en forme conditionnelle adaptée.
    pour joindre ton fichier anonymisé
    1) Tu vas dans https://www.cjoint.com/
    2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
    3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
    4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
    5) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".
    =>Voir la fiche https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers

    dans le même style tu as https://mon-partage.fr/
    0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Pour ma part j'ai du mal à comprendre tes attentes, exemple pour la première recherche qui est UN dans Chaines, es ce que tu as EXEMPLE DE UN CHAINE le mot Un est noyé dans la chaine

    ou simplement UN au début de ta chaine et la suite de ta chaine UN CHAINE mais le mot clé recherché UN est il toujours au début de ta chaine

    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. titeufdu89 Messages postés 387 Statut Membre 38
     
    Bonjour,

    Voici un code VBA qui permet d'analyser tes chaines et renvoyer la valeur comme tu le souhaites.
    Colle ce code, soit dans un module que tu relies à un bouton de controle pour mise à jour manuelle (clic bouton), soit dans la feuille base de données en adaptant le code pour que la macro s'execute automatiquement lorsqu'une cellule est modifiée.

    Option Explicit
    
    Sub analyse_chaine()
    
    Dim base As Worksheet, rslt As Worksheet
    Set base = ThisWorkbook.Sheets("base") '<<< "base" à remplacer par le nom de ta feuille
    Set rslt = ThisWorkbook.Sheets("résultat") '<<< "réslutat" à remplacer par le nom de ta feuille
    
    Dim i As Double, j As Double
    Dim der_lig_b As Double, der_lig_r As Double
    Dim rech As String
    der_lig_b = base.Range("A65536").End(xlUp).Row
    der_lig_r = rslt.Range("A65536").End(xlUp).Row
    
    
    For i = 2 To der_lig_b
    rech = "*" & base.Range("A" & i) & "*"  'si les mots recherchés sont contenus dans une autre colonne que la A, remplacer le A par la colonne en question
        For j = 1 To der_lig_r
        If rslt.Range("A" & j).Value Like rech Then 'si les chaines analysées sont contenus dans une autre colonne que la A, remplacer le A par la colonne en question
        rslt.Range("C" & j) = base.Range("B" & i).Value ' "C" et "B" à adapter en fonction de ton fichier
        GoTo nex
        End If
        Next j
    nex:
    Next i
    End Sub
    
    0