Bonjour,

Je travaille avec des classeurs fermés , et je souhaite écrire la requête sql qui effectue la recherche suivante :
afficher la valeur du champ "extension appli 1" dont le champ "code document" est égal = Str_Part_Number dans la table "feuil1" .

mais je n'arrive pas écrire la requête , car je ne sais pas si dans ce contexte si je dois faire un rst.filter ou rst.find ?

mon problème se situe à partir de la ligne 60 jusqu'à la fin.

Merci de votre attention,


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
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
74
75
76
77
78
79
80
81
Sub RecherchePart()
' source : developpez.com
'auteur: HMA
'date: 09/01/2013
'but: rechercher une donnée avec un critère précis d'un classeur fermé
 
Dim i As Integer
Dim NumRows As Long
Dim Tab_FileName() As String
Dim Str_Part_Number As String
Dim Plage As Range
Dim StrChercher As String
 
'---------
Dim Cn As ADODB.Connection
Dim Fichier As String
Dim strSQL As String
Dim Rst As ADODB.Recordset
Dim Feuille As String
 
    Range("E2").Select   ' colonne file_title
 
    '----- création de niveau -1 pour le fichiers
    i = 2
    Do
     'découpe la chaine en fonction des espaces " "
     'le résultat de la fonction Split est stocké dans un tableau
       'Tab_FileName = Split(Range("E" & i), "-")
       StrChercher = Val(Range("E" & i))
       Str_Part_Number = Val(Range("E" & i))
 
       Debug.Print StrChercher
       k = 1
           ' parcourir la colonne A(code document) du fichier GED.xls
           Do
             ' If Not IsEmpty(Str_Part_Number) Or Str_Part_Number <> 0 Then
             If Str_Part_Number <> 0 Then
 
                '-------------------------------------
              'instantiation des variables
              Set Cn = New ADODB.Connection
              Set Rst = New ADODB.Recordset
 
              'Fichier = ThisWorkbook.Path & "\" & sNomFichierFile
              Fichier = ThisWorkbook.Path & "\EXTRACT\" & sNomFichierFile
              Feuille = "Feuil1"
              'Cellule = "A2:A5"
 
              'établit la connexion avec le classeur source
              With Cn
                    .Provider = "MSDASQL"
                    .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
                        "DBQ=" & Fichier & "; ReadOnly=False;"
                    .Open
              End With
              'Définit la requête.
               strSQL = "SELECT * FROM [" & Feuille & "$]"
               Set Rst = Cn.Execute(strSQL)
 
               'afficher (rechercher ou filtrer ??) la valeur du champ "extension appli 1" de la table "feuil 1" dont "code document" =  str_part_number
               strSQL = "SELECT [extension appli 1]  * FROM [" & Feuille & "$] WHERE [code document]='" & Str_Part_Number & "'"
               Set Rst = Cn.Execute(strSQL)
 
               '---récupérer la valeur du champ "extension appli 1"
              Debug.Print Rst.Fields("extension appli 1").Value
 
              Do While Not Rst.EOF()
              'Debug.Print Rst.Fields.Count
              Debug.Print Rst.Fields(4)   ' indice de la colonne "extension appli 1"
              Rst.MoveNext
              Loop
 
 
              'Fermer connexion
              Cn.Close
 
              'désinstantiation pour libérer la mémoire
              Set Cn = Nothing
 
              '----------------------------------------------
End Sub