OVH Cloud OVH Cloud

formule REcherchev

7 réponses
Avatar
domflo
Bonjour,

Est -il possible de faire une recherche avec la formule ci-dessous sur
uniquement un mot de la cellule B16, recherche sur le mot SFR, par exemple.

SFR qui serait dans ma table de la feuil 1 et associer à "TELEPHONE"

B16 =AVP SFR SA EX C2GSM 421844

RECHERCHEV(B16;Feuil1!$A$2:$B$501;2;FAUX)
Merci.
Dominique

7 réponses

Avatar
Michel Gaboly
Bonjour,

Pas directement ;-(

Pour un mot en particulier, comme "SFR", on peut adapter la formule :

=SI(ESTERR(CHERCHE("SFR";B16));"";RECHERCHEV("SFR";Feuil1!$A$2:$B$501;2;FAUX))

ou mieux, en ayant associé un nom, ici "Réf" (Insertion, Noms,
Définir...) à la plage de recherche.

=SI(ESTERR(CHERCHE("SFR";B16));"";RECHERCHEV("SFR";Réf;2;FAUX))

L'intérêt du nom est d'avoir une formule + courte et + lisible.

ou mieux encore :

=SI(ESTERR(CHERCHE(B1;INDIRECT(B2)));"";RECHERCHEV("SFR";Réf;2;FAUX))

Dans cette variante, "SFR" est remplacé par B1, et B16 par une
indirection basée sur le contenu de B2.

En entrant "SFR" en B1 et "B16" en B2, le résultat sera le même que
précédemment, mais on pourra tester une autre chaine et une autre
cellule, sans avoir à adapter la formule, en changeant simplement le
contenu des cellules B1 et B2


Cependant, toutes ces formules ne permettent de tester qu'une chaîne de
caractères à la fois. Pour aller au-delà, une fonction en VBA est
probablement nécessaire. Que faire dans ce cas, si plusieurs "mots" de
B16 sont présents dans la table de recherche : que renvoyer ?


Bonjour,

Est -il possible de faire une recherche avec la formule ci-dessous sur
uniquement un mot de la cellule B16, recherche sur le mot SFR, par exemple.

SFR qui serait dans ma table de la feuil 1 et associer à "TELEPHONE"

B16 =AVP SFR SA EX C2GSM 421844

RECHERCHEV(B16;Feuil1!$A$2:$B$501;2;FAUX)
Merci.
Dominique





--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
LSteph
Bonjour Dominique
,
oui
=RECHERCHEV("*SFR*";Feuil1!$A$2:$B$501;2;0)

:-)

'lSteph
"domflo" a écrit dans le message de news:
420dc8c5$0$526$
Bonjour,

Est -il possible de faire une recherche avec la formule ci-dessous sur
uniquement un mot de la cellule B16, recherche sur le mot SFR, par
exemple.

SFR qui serait dans ma table de la feuil 1 et associer à "TELEPHONE"

B16 =AVP SFR SA EX C2GSM 421844

RECHERCHEV(B16;Feuil1!$A$2:$B$501;2;FAUX)
Merci.
Dominique




Avatar
LSteph
Au vu de la réponse de Michel, j'ai mal lu ta question.

Bonne journée à vous deux désolé.

"LSteph" a écrit dans le message de news:

Bonjour Dominique
,
oui
=RECHERCHEV("*SFR*";Feuil1!$A$2:$B$501;2;0)

:-)

'lSteph
"domflo" a écrit dans le message de news:
420dc8c5$0$526$
Bonjour,

Est -il possible de faire une recherche avec la formule ci-dessous sur
uniquement un mot de la cellule B16, recherche sur le mot SFR, par
exemple.

SFR qui serait dans ma table de la feuil 1 et associer à "TELEPHONE"

B16 =AVP SFR SA EX C2GSM 421844

RECHERCHEV(B16;Feuil1!$A$2:$B$501;2;FAUX)
Merci.
Dominique








Avatar
papou
Bonjour
=RECHERCHEV(STXT(B16;TROUVE("SFR";B16;1);3);Feuil1!$A$2:$B$501;2;FAUX)
Cordialement
Pascal

"domflo" a écrit dans le message de news:
420dc8c5$0$526$
Bonjour,

Est -il possible de faire une recherche avec la formule ci-dessous sur
uniquement un mot de la cellule B16, recherche sur le mot SFR, par
exemple.

SFR qui serait dans ma table de la feuil 1 et associer à "TELEPHONE"

B16 =AVP SFR SA EX C2GSM 421844

RECHERCHEV(B16;Feuil1!$A$2:$B$501;2;FAUX)
Merci.
Dominique




Avatar
bourby
bonjour,

oui, bien sûr.
1) Si l'extraction du texte à rechercher est simple, remplacer dans la
formule "B16" par la fonction qui va bien (voir la liste des fonctions
"texte"; cliquer sur l'icône f(x) à partir d'une cellule vide).

p.ex., si le texte à rechercher est toujours composé de 3 lettres à
partir de la 5è position:

stxt(B16;5;3)

2)Si l'extraction est plus compliquée, insérer une colonne (ou se mettre
tout à droite), placer la formule d'extraction dans cette colonne
(mettons: colonne Z), et remplacer B16 par Z16.

Cordialement

Bourby


domflo wrote:
Bonjour,

Est -il possible de faire une recherche avec la formule ci-dessous sur
uniquement un mot de la cellule B16, recherche sur le mot SFR, par exemple.

SFR qui serait dans ma table de la feuil 1 et associer à "TELEPHONE"

B16 =AVP SFR SA EX C2GSM 421844

RECHERCHEV(B16;Feuil1!$A$2:$B$501;2;FAUX)
Merci.
Dominique




Avatar
Michel Gaboly
Re,

Pour compléter, voici ce que pourrait être 1 fonction VBA équivalant à
un RECHERCHEV sur une partie de la cellule :

Function RechercheVB(c As Range)
Dim NumCol As Integer, RefC1 As Range, Cell As Range
NumCol = Range("Réf").Column
Set RefC1 = Intersect(Range("Réf"), Columns(NumCol))
If c.Count > 1 Then
Set c = c.Cells(1, 1)
End If
' Recherche de la présence d'un des éléments de l
' première colonne de la table.
RechercheVB = "N/A"
For Each Cell In RefC1
If InStr(c, Cell) Then
RechercheVB = Cell.Offset(0, 1)
Exit For
End If
Next
End Function

La fonction nécessite que la table de recherche ait été nommée "Réf".

On peut éviter cette contrainte en ajoutant un second argument à la
fonction, qui représente la table de recherche :

Function RechercheVB(c As Range, Table as Range)

La seule différence dans le code serait alors

NumCol = Table.Column

au lieu de

NumCol = Range("Réf").Column

L'inconvénient est qu'il faut alors fournir 2 arguments à la fonction
au lieu d'1. Cela n'a d'intérêt que si le classeur contient plusieurs
tables.

La fonction boucle sur les éléments situés en première colonne de la
table de correspondance, et renvoie le contenu de la cellule voisine.

Avec cette table :

SFR Téléphone
Apple Informatique
Minolta Photo

la fonction renvoie :

Pour "Az SFR Apple RT" Téléphone
Pour "Az Apple SFR RT" Téléphone
Pour "Az Apple RT" Informatique

En effet l'ordre de recherche correspond à l'ordre des éléments dans la
première colonne de la table.

C'est pourquoi on obtient "Téléphone" pour "Az Apple SFR RT"; "Apple"
est situé avant "SFR" dans la cellule mais la recherche sur "SFR" (1er
élément de la table) s'effectue avant celle sur "Apple"

Une variante de la fonction pourrait découper le contenu de la cellule
en mots et les chercher successivement dans la table pour qu'on obtienne
"Informatique" pour "Az Apple SFR RT".

Toutefois, le traitement serait + complexe, car il faut ajouter la
découpe en mots. Pour cela on peut se baser sur les espaces, mais dans
ce cas, on ne trouverait pas les éléments en colonne 1 de la table s'ils
comportent eux-même une espace, à moins de faire succesivement une
recherche sur les mots, puis sur chaque groupe de mots de la cellule.

Enfin, ce traitement + complexe, n'a de sens que s'il peut effectivement
y avoir des cellules contenant 2 éléments (ou +) présents dans la
première colonne de la table.

Voilà ;-))


Bonjour,

Pas directement ;-(

Pour un mot en particulier, comme "SFR", on peut adapter la formule :

=SI(ESTERR(CHERCHE("SFR";B16));"";RECHERCHEV("SFR";Feuil1!$A$2:$B$501;2;FAUX))


ou mieux, en ayant associé un nom, ici "Réf" (Insertion, Noms,
Définir...) à la plage de recherche.

=SI(ESTERR(CHERCHE("SFR";B16));"";RECHERCHEV("SFR";Réf;2;FAUX))

L'intérêt du nom est d'avoir une formule + courte et + lisible.

ou mieux encore :

=SI(ESTERR(CHERCHE(B1;INDIRECT(B2)));"";RECHERCHEV("SFR";Réf;2;FAUX))

Dans cette variante, "SFR" est remplacé par B1, et B16 par une
indirection basée sur le contenu de B2.

En entrant "SFR" en B1 et "B16" en B2, le résultat sera le même que
précédemment, mais on pourra tester une autre chaine et une autre
cellule, sans avoir à adapter la formule, en changeant simplement le
contenu des cellules B1 et B2


Cependant, toutes ces formules ne permettent de tester qu'une chaîne de
caractères à la fois. Pour aller au-delà, une fonction en VBA est
probablement nécessaire. Que faire dans ce cas, si plusieurs "mots" de
B16 sont présents dans la table de recherche : que renvoyer ?



Bonjour,

Est -il possible de faire une recherche avec la formule ci-dessous sur
uniquement un mot de la cellule B16, recherche sur le mot SFR, par
exemple.

SFR qui serait dans ma table de la feuil 1 et associer à "TELEPHONE"

B16 =AVP SFR SA EX C2GSM 421844

RECHERCHEV(B16;Feuil1!$A$2:$B$501;2;FAUX)
Merci.
Dominique








--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
domflo
Merci beaucoup pour vos réponses et en particulier à Michel

Mon souhait est d'exploiter mon relevé bancaire télécharger sur ma banque,
et d'affecter des rubriques à mes dépenses.
Je voulais affecter une rubrique à mes lignes récurentes,'salaires,
telephone, alimentation...or ce n'est pas si simple.

Je vais donc partir sur un codage de rubrique tel ; SFR => T= Telephone
.....

Michel :
Je note dans mes bookmarks le lien de ton site, qui peut certainement
m'apprendre pas mal de choses.

(Aujourd'hui, l'utlisation de la fonction "Nom")

L'utilisation de la fiche de paye, application pour la nourice.

Cordialement,

Dominique



"Michel Gaboly" a écrit dans le message de
news:%
Re,

Pour compléter, voici ce que pourrait être 1 fonction VBA équivalant à
un RECHERCHEV sur une partie de la cellule :

Function RechercheVB(c As Range)
Dim NumCol As Integer, RefC1 As Range, Cell As Range
NumCol = Range("Réf").Column
Set RefC1 = Intersect(Range("Réf"), Columns(NumCol))
If c.Count > 1 Then
Set c = c.Cells(1, 1)
End If
' Recherche de la présence d'un des éléments de l
' première colonne de la table.
RechercheVB = "N/A"
For Each Cell In RefC1
If InStr(c, Cell) Then
RechercheVB = Cell.Offset(0, 1)
Exit For
End If
Next
End Function

La fonction nécessite que la table de recherche ait été nommée "Réf".

On peut éviter cette contrainte en ajoutant un second argument à la
fonction, qui représente la table de recherche :

Function RechercheVB(c As Range, Table as Range)

La seule différence dans le code serait alors

NumCol = Table.Column

au lieu de

NumCol = Range("Réf").Column

L'inconvénient est qu'il faut alors fournir 2 arguments à la fonction
au lieu d'1. Cela n'a d'intérêt que si le classeur contient plusieurs
tables.

La fonction boucle sur les éléments situés en première colonne de la
table de correspondance, et renvoie le contenu de la cellule voisine.

Avec cette table :

SFR Téléphone
Apple Informatique
Minolta Photo

la fonction renvoie :

Pour "Az SFR Apple RT" Téléphone
Pour "Az Apple SFR RT" Téléphone
Pour "Az Apple RT" Informatique

En effet l'ordre de recherche correspond à l'ordre des éléments dans la
première colonne de la table.

C'est pourquoi on obtient "Téléphone" pour "Az Apple SFR RT"; "Apple"
est situé avant "SFR" dans la cellule mais la recherche sur "SFR" (1er
élément de la table) s'effectue avant celle sur "Apple"

Une variante de la fonction pourrait découper le contenu de la cellule
en mots et les chercher successivement dans la table pour qu'on obtienne
"Informatique" pour "Az Apple SFR RT".

Toutefois, le traitement serait + complexe, car il faut ajouter la
découpe en mots. Pour cela on peut se baser sur les espaces, mais dans
ce cas, on ne trouverait pas les éléments en colonne 1 de la table s'ils
comportent eux-même une espace, à moins de faire succesivement une
recherche sur les mots, puis sur chaque groupe de mots de la cellule.

Enfin, ce traitement + complexe, n'a de sens que s'il peut effectivement
y avoir des cellules contenant 2 éléments (ou +) présents dans la
première colonne de la table.

Voilà ;-))


Bonjour,

Pas directement ;-(

Pour un mot en particulier, comme "SFR", on peut adapter la formule :


=SI(ESTERR(CHERCHE("SFR";B16));"";RECHERCHEV("SFR";Feuil1!$A$2:$B$501;2;FAUX


))


ou mieux, en ayant associé un nom, ici "Réf" (Insertion, Noms,
Définir...) à la plage de recherche.

=SI(ESTERR(CHERCHE("SFR";B16));"";RECHERCHEV("SFR";Réf;2;FAUX))

L'intérêt du nom est d'avoir une formule + courte et + lisible.

ou mieux encore :

=SI(ESTERR(CHERCHE(B1;INDIRECT(B2)));"";RECHERCHEV("SFR";Réf;2;FAUX))

Dans cette variante, "SFR" est remplacé par B1, et B16 par une
indirection basée sur le contenu de B2.

En entrant "SFR" en B1 et "B16" en B2, le résultat sera le même que
précédemment, mais on pourra tester une autre chaine et une autre
cellule, sans avoir à adapter la formule, en changeant simplement le
contenu des cellules B1 et B2


Cependant, toutes ces formules ne permettent de tester qu'une chaîne de
caractères à la fois. Pour aller au-delà, une fonction en VBA est
probablement nécessaire. Que faire dans ce cas, si plusieurs "mots" de
B16 sont présents dans la table de recherche : que renvoyer ?



Bonjour,

Est -il possible de faire une recherche avec la formule ci-dessous sur
uniquement un mot de la cellule B16, recherche sur le mot SFR, par
exemple.

SFR qui serait dans ma table de la feuil 1 et associer à "TELEPHONE"

B16 =AVP SFR SA EX C2GSM 421844

RECHERCHEV(B16;Feuil1!$A$2:$B$501;2;FAUX)
Merci.
Dominique








--
Cordialement,

Michel Gaboly
www.gaboly.com