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 :
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.
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
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...
Merci pour votre aide
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
Partager