Bonjour tout le monde
J'ai trouvé sur ce site une fonction dévellopé par Caféine qui me serait très utile : (XRECHERCHEV) (http://www.developpez.net/forums/d42...erme-variable/)
Mais je n'arrive pas à la faire fonctionner (j'ai comme retour sur excel : #valeur!)...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Public Function XRECHERCHEV(ByVal valRecherchee As Variant, _ ByVal TabMatrice As Variant, _ ByVal colonneIndex As Integer) If TypeName(TabMatrice) = "Range" Then XRECHERCHEV = Application.WorksheetFunction.VLookup(valRecherchee, _ TabMatrice, _ colonneIndex, _ True) Else Dim oDAO As Object Dim db As Object 'DAO.Database Dim rs As Object 'DAO.Recordset Dim sRange As String Dim sSheet As String Dim sWbook As String Dim sFPath As String Dim sSQL 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 oDAO = CreateObject("DAO.DBEngine.36") Set db = oDAO.Workspaces(0).OpenDatabase(sFPath & sWbook, False, False, "Excel 8.0;HDR=NO;") Set rs = db.OpenRecordset(sSQL) If rs.EOF And rs.BOF Then XRECHERCHEV = "no match" Else XRECHERCHEV = rs.Fields(0) End If Set oDAO = Nothing Set rs = Nothing Set db = Nothing End If End Function
mon fichier source est de la forme "BD-base données horaires_AAAA"
AAAA=année
je l'appel avec "=XRECHERCHEV(B$3;"'C:\Documents and Settings\remcar\Bureau\dimensionnement\[BD-base données horaires_"& ANNEE($A$1) &".xls]CC'!$A$2:$I$366";2)" --> #valeur!
(j'ai une base "BD-base données horaires" par an et je veux biensûr automtiser le remplissage d'un autre fichier selon l'année)
j'ai aussi essayé sans variable "=XRECHERCHEV(C$3;"'C:\Documents and Settings\remcar\Bureau\dimensionnement\[BD-base données horaires_2010.xls]CC!$A$2:$I$366";2)
ou encore avec "=XRECHERCHEV(C$3;"'C:\Documents and Settings\remcar\Bureau\dimensionnement\[BD-base données horaires_2010.xls]_CC!$A$2:$I$366";2)
mais ca ne marche pas non plus...
La recherchev simple marche :=RECHERCHEV(B$3;'C:\Documents and Settings\remcar\Bureau\dimensionnement\[BD-base données horaires_2010.xls]CC'!$A$2:$I$366;2;FAUX)
J'ai fait des tests avec des msgbox sur les sRange, sSheet, sWbook, sFPath, et le données semblent bonnes.
J'ai activé la réf "Microsft DAO 3.6 objects library"
Dois-je activer d'autres choses?
Si quelqu'un a une idée, je suis prenneur!
Si besoin d'informations complémentaires, faites le moi savoir.
merci d'avance!
Partager