Bonjour,
Mon problème est que je fais un EQUIV dans un FEUILLET et une PLAGE de recherche et que je ne trouve pas ma valeur. Hors, par CTRL+F, cela marche.
J’aimerai faire une FONCTION PERSONNALISEE pour effectuer une recherche avec les éléments suivants :
RECHVALEUR = Valeur recherchée,
RECHSENS = Recherche par le bas ou par le haut ,
RECHFEUIL = Feuillet de recherche,
RECHPLAGE = Plage de recherche,
RESULTAT = Adresse trouvée suite à la recherche (plus tard – choix avec Ligne ou Colonne).
Est-ce possible par Fonction personnalisée (par Sub, j’y arrive très bien) ?
Je donne une structure ci-dessous qui tient du brouillon (je suis autodidacte en VB fortement aidé par Internet).
Cordialement.
Public Function RECHVAL(VALRECH As String, RECHSENS As String, RECHFEUIL As String, RECHPLAGE As String)
Dim FEUILDEP As String
Dim SENS As String
On Error GoTo ERR_RECHVAL
'--- SENS RECHERCHE ---
If RECHSENS = "D" Then
SENS = "xlNext"
Else
SENS = "xlPrevious"
End If
'--- RECHERCHE DANS LE FEUILLET DE RECHERCHE ET LA PLAGE DE RECHERCHE SPECIFIES ---
Sheets(RECHFEUIL).Select
Range(RECHPLAGE).Select
If SENS = "D" Then
Selection.Find(what:=RECHVALEUR, After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, searchdirection:= xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Else
Selection.Find(what:=RECHVALEUR, After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, searchdirection:=xlPrevious, MatchCase:= _
False, SearchFormat:=False).Activate
End If
If IsNothing then
RECHVAL = "???"
Exit Function
End If
'--- RETOUR DANS LE FEUILLET DE DEPART OU LA FONCTION EST SOLLICITEE ---
Sheets(FEUILDEP).Activate
RECHVAL = ActiveSheet.Name & "!" & ActiveCell.Address
ERR_RECHVAL:
If Err <> 0 Then
RECHVAL = "???"
Err.Clear
Exit Function
End If
End Function