Créer fonction rechercheV dans un Userform avec LookIn:=xlValues, LookAt

Bonjour,

Je suis en train de réaliser mon premier formulaire et j'aimerais bien qu'en fonction de la valeur entré en C1, faire une recherche sur cette valeur dans un autre onglet pour me donner la valeur correspondante.

J'ai utiliser le code suivant :

Dim Cel As Range
Set Cel = Sheets("BD").Range("Matricule:Collegues").Find(What:=Sheets("Feuil1").Range("C1"), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
If Cel Is Nothing Then
Sheets("Feuil1").Range("C4") = "#NA!"
Else
Sheets("Feuil1").Range("C4") = Cel

Je ne comprend pas mon erreur, la fonction ne me donne pas d'erreur mais ça me rend la valeur que j'ai rentré en C1 a savoir la valeur qui se trouve dans la colonne "Matricule" et moi ce que j'aimerait c'est que ca me donne la correspondance dans la colonne "Collegues".

Je ne vous cache pas que je suis ultra novice et que je m'arrache les cheveux !

Merci !!

Bonjour,

Comme on a pas toutes les infos, je vous propose une réponse vague mais qui permet d'avoir une idée, soit avec la fonction recherchev de VBA, soit avec la méthode offset (decaler) de VBA en partant de votre code :

Dim Cel As Range
Set Cel = Sheets("BD").Range("Matricule:Collegues").Find(What:=Sheets("Feuil1").Range("C1"), LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
If Cel Is Nothing Then
    Sheets("Feuil1").Range("C4") = "#NA!"
Else
    Sheets("Feuil1").Range("C4") = application.vlookup(Cel, plage, 2, 0) 'EXEMPLE
    'Sheets("Feuil1").Range("C4") = Cel.offset(0, 1).value 'renvoie valeur décalée d'une colonne
end if

Sachant qu'ici, le mieux est d'éviter tant que possible la méthode find et de recourir directement au vlookup ou plutot au index equiv (pour éviter de faire le même travail 2 fois) :

if application.countif(colonnerecherche, Sheets("Feuil1").Range("C1")) > 0 then 'si valeur existe dans colrecherche
    Sheets("Feuil1").Range("C4") = application.index(colonnerenvoi, application.match(Sheets("Feuil1").Range("C1"), colonnerecherche, 0)) 'index equiv
end if

Cdlt,

Bonjour,

2 propositions à étudier :

1 - Excel 365 sans VBA [nouvelles fonctions (Filtre, Trier et Unique)

2 - VBA [à adapter ; Ctrl + m pour exécuter la procédure)

Public Sub SearchValue()
'Ctrl + m pour exécuter la procédure
Dim ws As Worksheet, rw, r As String
    Set ws = ActiveSheet
    With Range("Table2").ListObject
        On Error Resume Next
        rw = Application.Match(ws.Cells(4).Value, .ListColumns(1).DataBodyRange, 0)
        If Not IsError(rw) Then
            r = Application.Index(.ListColumns(2).DataBodyRange, rw)
        Else
            r = "Non trouvé"
        End If
    End With
    ws.Cells(5, 4).Value = r
End Sub

Cdlt.

20vincent-s.xlsm (32.43 Ko)

Je vous remercie pour ces réponse, j'y ai trouvé les solutions pour continuer d'avancer dans mon projet.

Bav

Rechercher des sujets similaires à "creer fonction recherchev userform lookin xlvalues lookat"