1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
Public Function XRECHERCHEV(ByVal ValRecherchee As Variant, _
ByVal TabMatrice As Variant, _
ByVal colonneIndex As Integer, _
Optional ByVal Chemin As String, _
Optional ByVal Classeur As String, _
Optional ByVal Feuille As String)
If TypeName(TabMatrice) = "Range" Then
'au lieu de ceci ;
''''' XRECHERCHEV = Application.WorksheetFunction.VLookup(ValRecherchee, _
''''' TabMatrice, _
''''' colonneIndex, _
''''' True)
'tu utilise VLOOKUP de cette façon :
XRECHERCHEV = ExecuteExcel4Macro("VLOOKUP(""" & ValRecherchee & _
""",'[" & Classeur & "]" & _
Feuille & "'!" & _
TabMatrice.Address(1, 1, xlR1C1) & "," & _
colonneIndex & ",TRUE)")
Else
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sRange As String
Dim sSheet As String
Dim sWbook As String
Dim sFPath As String
Dim sSQL As String
Dim str As String
sRange = Replace(Split(TabMatrice, "!")(1), "$", vbNullString)
sSheet = Split(Split(TabMatrice, "]")(1), "'")(0)
sWbook = Split(Split(TabMatrice, "[")(1), "]")(0)
sFPath = Mid(Split(TabMatrice, "[")(0), 2)
ValRecherchee = "'" & Replace(ValRecherchee, "'", "''") & "'"
sSQL = "SELECT [F" & colonneIndex & "] " & _
"FROM [" & sSheet & "$" & sRange & "] " & _
"WHERE [F1] = " & ValRecherchee
Set db = DAO.OpenDatabase(sFPath & sWbook, False, False, "Excel 8.0;HDR=NO;")
Set rs = db.OpenRecordset(sSQL, DAO.dbOpenSnapshot)
If rs.EOF And rs.BOF Then
XRECHERCHEV = "no match"
Else
XRECHERCHEV = rs.Fields(0)
End If
Set rs = Nothing
Set db = Nothing
End If
End Function
Sub Test()
MsgBox XRECHERCHEV("MonMot", _
Range("A1:C34"), _
2, _
"C:\Dossier1\Dossier2\", _
"Classeur1.xls", _
"Feuil1")
End Sub |
Partager