Rechercher mot dans une char (Excel)

Fermé
Utilisateur anonyme - Modifié le 23 août 2018 à 18:31
titeufdu89 Messages postés 374 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 - 25 août 2018 à 12:03
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 :)
A voir également:

5 réponses

DjiDji59430 Messages postés 4144 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 16 novembre 2024 678
23 août 2018 à 18:09
Bonjour,

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

Crdlmt
0
Utilisateur anonyme
23 août 2018 à 18:32
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
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
23 août 2018 à 19:13
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
Utilisateur anonyme
23 août 2018 à 19:25
https://www.cjoint.com/c/HHxrw10Mjo3

j'ai ajouté un exemple type de mon fichier comme conseillé
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
Modifié le 24 août 2018 à 11:01
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

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

Posez votre question
titeufdu89 Messages postés 374 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
25 août 2018 à 12:03
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