Transformer une macro VBA en SQL
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:
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:
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