Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA et sql server


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    VBA et sql server
    Hello,

    J'essaye de lancer une requête SQL depuis Excel via une macro dans SQL SERVER 2017, et rappatrier le résultat de la requête dans Excel.

    Mais j'ai une erreur 3709 ...

    Pouvez-vous m'aider svp ? Je suis sur office 365 + SQL SERVER 2017 (Ref ACTIVE X DATA OBJECT 6.1 cochée)

    Erreur sur cette Ligne :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
     rs.Open SQLStr, Cn, adOpenStatic


    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
    Dim Cn As ADODB.Connection
        Dim Server_Name As String
        Dim Database_Name As String
        Dim User_ID As String
        Dim Password As String
        Dim SQLStr As String
        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
     
        Server_Name = "MON_SERVEUR" ' Enter your server name here
        Database_Name = "ANA" ' Enter your database name here
        User_ID = "TOTO" ' enter your user ID here
        Password = "TITI" ' Enter your password here
     
        SQLStr = "SELECT * FROM MATABLE" ' Enter your SQL here
     
        Set Cn = New ADODB.Connection
        Cn.connectionstring = "Provider=SQLNCLI11;Server=" & Server_Name & ";Database=" & Database_Name & _
        ";Uid=" & User_ID & ";Pwd=" & Password & ";"
     
        rs.Open SQLStr, Cn, adOpenStatic
         ' Dump to spreadsheet
        With Worksheets("Feuil2").Range("a1:z5000") ' Enter your sheet name and range here
            .ClearContents
            .CopyFromRecordset rs
        End With
         '            Tidy up
        rs.Close
        Set rs = Nothing
        Cn.Close
        Set Cn = Nothing


    Merci par avance.

    R@g

  2. #2
    Membre éclairé
    Bonjour,
    Maintenant pour la qualité de la requête !??

    Il ne faut pas oublier d'ouvrir la connexion !
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
         ' Dump to spreadsheet
    Cn.connectionstring = "Provider=SQLNCLI11;Server=" & Server_Name & ";Database=" & Database_Name & _
        ";Uid=" & User_ID & ";Pwd=" & Password & ";"
     Cn.open
        With Worksheets("Feuil2").Range("a1:z5000") ' Enter your sheet name and range here
            .ClearContents
            .CopyFromRecordset cn.execute(SQLStr)
        End With

  3. #3
    Membre à l'essai
    Hello,

    Merci pour ta réponse.

    La requête est + interessante que ça mais c'était pour l'exemple.

    J'ai une erreur sur mon identifiant maintenant ...

    Pourtant j'ai bien pris celui indiqué dans sql server ...

    Auriez-vous une idée de ce qui coince ?

    Merci à vous.

    R@g

  4. #4
    Membre éclairé
    Bonjour,

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Cn As new ADODB.Connection
    Cn.open "Provider=SQLOLEDB.1;Password=" & PassWord & ";Persist Security Info=True;User ID=" & User & ";Initial Catalog=" & Base & ";Data Source=" & Server
    
    

  5. #5
    Membre à l'essai
    Hello,

    Nope toujours une erreur mais elle a changé.

    "Invalid connection string atribute"

    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
    Dim Cn As ADODB.Connection
        Dim Server_Name As String
        Dim Database_Name As String
        Dim User_ID As String
        Dim Password As String
        Dim SQLStr As String
        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
     
        Server_Name = "MON_SERVEUR" ' Enter your server name here
        Database_Name = "ANA" ' Enter your database name here
        User_ID = "TOTO" ' enter your user ID here
        Password = "TITI" ' Enter your password here
     
        SQLStr = "SELECT * FROM MATABLE" ' Enter your SQL here
     
        Set Cn = New ADODB.Connection
        Cn.open "Provider=SQLOLEDB.1;Password=" & PassWord & ";Persist Security Info=True;User ID=" & User & ";Initial Catalog=" & Base & ";Data Source=" & Server
     
     
     
             ' Dump to spreadsheet
     With Worksheets("Feuil2").Range("a1:z5000") ' Enter your sheet name and range here
            .ClearContents
            .CopyFromRecordset cn.execute(SQLStr)
        End With
         '            Tidy up
        rs.Close
        Set rs = Nothing
        Cn.Close
        Set Cn = Nothing



    L'erreur est sur cette ligne :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
      Cn.open "Provider=SQLOLEDB.1;Password=" & PassWord & ";Persist Security Info=True;User ID=" & User & ";Initial Catalog=" & Base & ";Data Source=" & Server

  6. #6
    Membre éclairé
    Bonjour,
    Je t'ai donné la méthode que j'utilise pour me connecter à une base de données SQL serveur, avec mes variable !

    Il pourrait être judicieux de remplacer les variables par les tiennes. USER par user_id , serveur par serveu_name etc...

  7. #7
    Membre à l'essai
    Hello,

    Désolé j'ai voulu aller trop vite ...

    Cependant j'ai le même résultat

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
        Cn.Open "Provider=SQLOLEDB.1;Password=" & Password & ";Persist Security Info=True;User ID=" & User_ID & ";Initial Catalog=" & Database_Name & ";Data Source=" & Server_Name

###raw>template_hook.ano_emploi###