Bonjour,

Je suis novice en sql et je tente de transformer une macro VBA Excel 2016 en SQL pour qu'elle s'execute sur un fichier Excel fermé.

Voici la macro VBA :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
cherche = Cells(Target.Row, 10).Value
    x = WorksheetFunction.CountIf(Worksheets("Base NOI").Range("a:a"), cherche)
    If x = 1 Then
        Set ou = Worksheets("Base NOI").Range("a:a").EntireColumn
        Set noi = ou.Find(cherche, ou.Range("a1"), , xlWhole, xlByRows, xlNext, False)
        nomnoi = noi.Offset(0, 1).Value
        Cells(Target.Row, 11).Value = nomnoi
        Cells(Target.Row, 12).Select
    End If
En fait je veux faire une recherche verticale d'une valeur "cherche" dans un fichier Excel d'une seule feuille "Base NOI" et deux deux colonnes A et B.
Je cherche ma valeur dans la colonne A et je veux récupérer celle de la colonne B (les valeurs dans A sont unique)

Voici ce que j'écris, mais cela ne fonctionne pas...
J'ai essayé avec SELECT FROM WHERE ou SELECT LIKE mais bon il me dit soit qu'il ne trouve pas la feuille soit que la table est plus grande que celle défini, alors que je ne défini rien...
Je me suis inspiré d'autre forum...
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
 
Sub RequeteClasseurFerme()
    Dim Cn As ADODB.Connection
    Dim ADOCommand As ADODB.Command
    Dim Fichier As String, Cellule As String, Feuille As String
    Dim NomFeuille As String, texte_SQL As String
    Dim Rst As ADODB.Recordset
 
    Cellule = Cells(5, 10).Value
    'Définit le classeur fermé servant de base de données
    Fichier = "C:\Users\e.finet1\Desktop\NOI.xlsx"
    'Nom de la feuille dans le classeur fermé
    Feuille = "Rapport 1"
 
    Set Cn = New ADODB.Connection
 
        '--- Connection ---
    With Cn
        .Provider = "Microsoft.ACE.OLEDB.12.0;Data Source=" & Base & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .ConnectionString = "Data Source=" & Fichier & ";Extended Properties=Excel 12.0;"
        .Open
    End With
 
    Set ADOCommand = New ADODB.Command
    With ADOCommand
        .ActiveConnection = Cn
        .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
    End With
 
    Set Rst = New ADODB.Recordset
    Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
 
    Set Rst = Cn.Select("[" & Feuille & Cellule & "]")
 
    '--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing
 
End Sub
Merci pour votre aide