Transformer une macro VBA en SQL

Progeric Messages postés 1 Date d'inscription vendredi 26 mai 2023 Statut Membre Dernière intervention 26 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

Merci pour votre aide

Rejoignez-nous