Recherche

Fermé
Excel - 12 oct. 2014 à 14:09
via55 Messages postés 14474 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 19 septembre 2024 - 12 oct. 2014 à 16:55
Je voudrais tM aidouver une formule en b2 qui chercherai en a1 si le texte contient un mot contenu en premiere colonne d une base de donnee et si oui me donne le résultat correspondant en colonne 2.

a1="pour test" (chaîne de caractere)

base de donnée a30:b340:

A30=validation. B30=400
A31=test. B31=401
a32=exemple. B32=402
...

b2= resultat attendu: 401

La fonction recherche vous me donne le résultat que si en a il y a exactement marqué "test et avec la fonction si+cherche je ne pas mettre de plage de donnee...

Pourriez vous m aider svp?

Dans l attente...

3 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 412
Modifié par Vaucluse le 12/10/2014 à 14:27
Bonjour
pour rechercher à partir d'une partie de texte contenu dans une cellule:
à adapter
=RECHERCHEV("*texte à trouver*";A:B;2;0)

ou si cette élément de texte est placé par exemple en C1

=RECHERCHEV("*"&C1"*";A:B;2;0)

crdlmnt

Errare humanum est, perseverare diabolicum
0
via55 Messages postés 14474 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 19 septembre 2024 2 728
12 oct. 2014 à 14:47
Bonjour Vaucluse

En forme ?

Il me semble que c'est l'inverse que le demandeur voudrait : retrouver une partie du texte de référence dans la base (et non le texte de ref dans une partie de la base)
Personnellement je ne vois pas d'autre solution qu'une fonction personnalisée comme celle que j'indique dans ma réponse au demandeur, mais si tu vois une autre manière ça m'intéresse

Bien cordialement
0
via55 Messages postés 14474 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 19 septembre 2024 2 728
12 oct. 2014 à 14:44
Bonjour

Possible avec une fonction personnalisée

Ouvrir Editeur VBA (ALT +F11)
Insertion Module
puis copier coller la macro ci-dessous

Function rechOccur(machaine As String)
Dim Tableau() As String
Dim n As Integer
rechOccur = "Non trouvé"
'découpe la chaine en fonction des espaces " " et le résultat de la fonction Split est stocké dans un tableau
Tableau = Split(machaine)
  'boucle sur les mots de la chaine
For n = 0 To UBound(Tableau)
' boucle sur les cellules de la base
For t = 30 To 340
' si le mot est trouvé la ref en colonne B est stochée dans rechOccur
If Range("A" & t) = Tableau(n) Then rechOccur = Range("B" & t)
Next t
Next n
End Function


Fermer l'éditeur

La fonction est accessible comme toutes les autres fonctions excel (en tapant = et les premières lettres de son nom)

En B2 mettre la formule =rechOccur(A1)

Cdlmnt
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 412
12 oct. 2014 à 16:25
Salut Via
.. ça va et toi

Selon ce que tu as compris, voila tout ce que je sais faire par formule!
https://www.cjoint.com/c/DJmqB2oqn8w
Bonne fin de Week end

Bien amicalement
0
via55 Messages postés 14474 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 19 septembre 2024 2 728
12 oct. 2014 à 16:55
Oui, bien !

Cela me conduit à rectifier ma fonction personnalisée pour que plusieurs résultats soient renvoyés quand c'est le cas :
Function rechOccur(machaine As String)
Dim Tableau() As String
Dim n As Integer
rechOccur = ""
'découpe la chaine en fonction des espaces " " et le résultat de la fonction Split est stocké dans un tableau
Tableau = Split(machaine)
  'boucle sur les mots de la chaine
For n = 0 To UBound(Tableau)
' boucle sur les cellules de la base
For t = 30 To 340
' si le mot est trouvé la ref enc olonne B est stochée dans rechOccur
If Range("A" & t) = Tableau(n) Then rechOccur = rechOccur & " " & Range("B" & t)
Next t
Next n
If rechOccur = "" Then rechOccur = "Non trouvé"
End Function


Bonne fin de week-end aussi
Bien amicalement
0