Progeric
Messages postés1Date d'inscriptionvendredi 26 mai 2023StatutMembreDernière intervention26 mai 2023
-
Modifié le 26 mai 2023 à 19:43
Bonjour,
Je suis novice en sql et je tente de transformer une macro VBA Excel 2016 en SQL pour qu'elle s’exécute sur un fichier Excel fermé.
Voici la macro VBA :
cherche = Cells(Target.Row, 10).Value
x = WorksheetFunction.CountIf<span>(</span>Worksheets<span>(</span><span>"Base NOI"</span><span>)</span>.Range<span>(</span><span>"a:a"</span><span>)</span>, cherche<span>)</span>
<span>If</span> x = <span>1</span> <span>Then</span>
<span>Set</span> ou = Worksheets<span>(</span><span>"Base NOI"</span><span>)</span>.Range<span>(</span><span>"a:a"</span><span>)</span>.EntireColumn
<span>Set</span> noi = ou.Find<span>(</span>cherche, ou.Range<span>(</span><span>"a1"</span><span>)</span>, , xlWhole, xlByRows, xlNext, False<span>)</span>
nomnoi = noi.Offset<span>(</span><span>0</span>, <span>1</span><span>)</span>.Value
Cells<span>(</span>Target.Row, <span>11</span><span>)</span>.Value = nomnoi
Cells<span>(</span>Target.Row, <span>12</span><span>)</span>.<span>Select</span>
<span>End</span> <span>If</span>
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...
Sub RequeteClasseurFerme()
Dim Cn <span>As</span> ADODB.Connection
Dim ADOCommand <span>As</span> ADODB.Command
Dim Fichier <span>As</span> String, Cellule <span>As</span> String, Feuille <span>As</span> String
Dim NomFeuille <span>As</span> String, texte_SQL <span>As</span> String
Dim Rst <span>As</span> ADODB.Recordset
Cellule = Cells<span>(</span><span>5</span>, <span>10</span><span>)</span>.Value
<span>'Définit le classeur fermé servant de base de données</span>
<span> Fichier = "C:<span>\U</span>sers<span>\e</span>.finet1<span>\D</span>esktop<span>\N</span>OI.xlsx"</span>
<span> '</span>Nom de la feuille dans le classeur fermé
Feuille = <span>"Rapport 1"</span>
<span>Set</span> Cn = New ADODB.Connection
<span>'--- Connection ---</span>
<span> With Cn</span>
<span> .Provider = "Microsoft.ACE.OLEDB.12.0;Data Source=" & Base & ";Extended Properties=""Excel 12.0;HDR=YES;"""</span>
<span> .ConnectionString = "Data Source=" & Fichier & ";Extended Properties=Excel 12.0;"</span>
<span> .Open</span>
<span> End With</span>
<span> Set ADOCommand = New ADODB.Command</span>
<span> With ADOCommand</span>
<span> .ActiveConnection = Cn</span>
<span> .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"</span>
<span> End With</span>
<span> Set Rst = New ADODB.Recordset</span>
<span> Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic</span>
<span> Set Rst = Cn.Select("[" & Feuille & Cellule & "]")</span>
<span> '</span><span>--- Fermeture connexion ---</span>
Cn.Close
<span>Set</span> Cn = Nothing
<span>End</span> Sub