Remplacement fonction find (erreur byref)

Bonjour,

J'ai des données dans un morceau de colonne qui peut démarrer à n'importe quelle ligne, sur n'importe quelle feuille du classeur.

Je souhaite rechercher une valeur dans cette colonne, sans utiliser la fonction find.

Ci-dessous le code que j'ai réussi à faire. Il donne une erreur "Type d'argument ByRef incompatible" qui empêche mon classeur de s'ouvrir… sans désactiver les macro...

Function Search(value As Variant, ar As Range) As Range
    Dim cell As Range
    Search = Nothing

    For Each cell In ar
        If cell.value = value Then
            Search = cell
            Exit For
        End If
    Next cell

End Function

Cette fonction doit être utilisée par :

Function rechercheP(val_recherchee As Variant, tabl_recherche As Range, matrice_donnees As Range, col_donnees As Long) As Variant
    Dim c As Range

    Set c = Search(tabl_recherche, val_recherchee)

    If c Is Nothing Then
        rechercheP = "Erreur Find"
    Else
        rechercheP = matrice_donnees.Cells(c.Row - matrice_donnees.Row + 1, matrice_donnees.Column - col_donnees)
    End If

End Function

L'erreur semble porter sur l'argument "val_recherchee"

16test3.xlsm (15.80 Ko)

Re,

A tester pour le fun

Option Explicit
Public Function rechercheP(val_recherchee As Variant, matrice_donnees As Range, col_donnees As Integer) As Variant
Dim c As Range
    rechercheP = "Erreur"
    For Each c In matrice_donnees
        If c = val_recherchee Then rechercheP = c.Offset(0, -col_donnees)
    Next
End Function

Je viens de voir qu'il i avait une inversion des arguments dans l'appel de Search.

C'est corrigé, mais la fonction ne marche toujours pas.

J'essaie ton code et je te dis. Merci.

….

ça fonctionne ! Merci.

À noter que je ne peux JAMAIS voir le code VBA dans les fichiers Windows postés sur le forum :

Encore un bug connu…

http://stackoverflow.com/questions/17751989/cannot-open-vba-code-on-excel-mac-2011

14test3-copy.xlsm (39.42 Ko)
Rechercher des sujets similaires à "remplacement fonction find erreur byref"