fonction personnalisée de recherche

KROMS

XLDnaute Nouveau
Bonjour à tous

J'ai besoin d'une fonction personnalisée pour rechercher une valeur dans une ligne donnée.
Par exemple trouver dans une zone $b1:$b5 le contenu de la première cellule contenant une valeur stockée en a6.

Idéalement cette fonction personnalisée devrait permettre de:
définir la zone de recherche
définir la valeur recherchée

J'ai fait d'innombrables recherches sur le forum mais je suis bien incapable de créer un userform et d'adapter la jolie macro de recherche de mromain ci-dessous.
https://www.excel-downloads.com/threads/detection-de-cellule-par-une-partie-de-leur-contenu.144660/

Avec tous mes remerciements si vous pouvez m'aider,
Caroline

Sub TestRecherche()
'déclaration des variables
Dim laCell As Range, zoneRecherche As Range, memAdressePremCell As String, motRecherche As String

'initialiser les variables
motRecherche = "toto" 'on recherche "toto"
Set zoneRecherche = ActiveSheet.Cells 'dans toutes les cellules de la feuille active

'rechercher avec la méthode Find la première cellule contenant le mot recherché dans la feuille active
' xlPart signifie qu'on ne recherche pas la totalité du contenu de la cellule ("tititi toto tata" sera trouvé)
' le remplacer xlWhole pour rechercher la totalité du contenu de la cellule (que "toto")
Set laCell = zoneRecherche.Find(motRecherche, , xlValues, xlPart)

'si une cellule a été trouvé
If Not laCell Is Nothing Then
'mémoriser l'adresse de cette première cellule trouvée
memAdressePremCell = laCell.Address

'boucler sur toutes les cellules contenant le texte recherché
Do
'traiter la cellule trouvée
MsgBox "Cellule " & laCell.Address & " : """ & laCell.Text & """."

'trouver la cellule suivante contenant le texte recherché
Set laCell = zoneRecherche.FindNext(laCell)

'boucler jusqu'à qu'on revienne sur la première cellule trouvée
Loop Until laCell.Address = memAdressePremCell
End If
End Sub
 

Pièces jointes

  • exemple.xlsx
    10.1 KB · Affichages: 47
  • exemple.xlsx
    10.1 KB · Affichages: 47
  • exemple.xlsx
    10.1 KB · Affichages: 48

Dranreb

XLDnaute Barbatruc
Re : fonction personnalisée de recherche

Bonjour.
J'avais tout d'abord mal compris et effectué la recherche systématiquement dans la même ligne. Je la donne quand même au cas où vous y trouveriez une utilisation:
VB:
Function CherchePartie(ByVal Quoi As String) As String
Dim PlgAC As Range, Cel As Range
Set PlgAC = Application.Caller
Set Cel = PlgAC.EntireRow.Find(What:=Quoi, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, _
   SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Cel Is Nothing Then CherchePartie = "A1" Else CherchePartie = Cel.Address(False, False)
End Function
En G2:
Code:
=CherchePartie(F$1)

Acec la zone de recherche imposée c'est plus simple:
VB:
Function CherchePartie(ByVal Quoi As String, ByVal Où As Range) As String
Dim Cel As Range
Set Cel = Où.Find(What:=Quoi, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, _
   SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Cel Is Nothing Then CherchePartie = "A1" Else CherchePartie = Cel.Address(False, False)
End Function
En G2:
Code:
=CherchePartie($F$1;$A2:$D2)
Dans les deux cas, En F2:
Code:
=INDIRECT($G2)
Le tout propagé vers le bas.
À +

Bonjour pierrejean.
 

KROMS

XLDnaute Nouveau
Re : fonction personnalisée de recherche

Excellent et merci à vous deux ! ! ! Aussi rapides wahou ; petit bémol cependant,... serait il possible que la fonction de recherche s'intéresse à une chaîne de caractère et non pas un mot entier pour récupérer le contenu de la cellule ?
En fait si on imagine avoir
en a2 gazelle et en a3 gazoil, --- on cherche gaz et on aurait gazelle, ....
 

KROMS

XLDnaute Nouveau
Re : fonction personnalisée de recherche

Excellent et merci à vous deux ! ! ! Aussi rapides wahou ; petit bémol cependant,... serait il possible que la fonction de recherche s'intéresse à une chaîne de caractère et non pas un mot entier pour récupérer le contenu de la cellule ?
En fait si on imagine avoir
en a2 gazelle et en a3 gazoil, --- on cherche gaz et on aurait gazelle, ....
 

Discussions similaires

Réponses
16
Affichages
1 K
  • Question
Microsoft 365 RECHERCHE and co
Réponses
18
Affichages
2 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 854
Membres
103 975
dernier inscrit
denry