Exemple d'insertion de données sql dans excel

Contenu du snippet

Ce code montre comment créer un recordset à partir d'une base SQL et l'insérer dans une feuille Excel à la suite des lignes existantes. La sélection se fait selon un date saisie par l'utilisateur dans un formulaire.

Source / Exemple :


Private Sub CommandButton1_Click()

'   ***** DEMANDE L'ACTIVATION DU COMPOSANT MICROSOFT ACTIVEX DATA OBJECT 2.7 LIBRARY
'   ***** DEPUIS MENU "OUTILS" - "RÉFÉRENCES" DE L'ÉDITEUR VISUAL BASIC

    Dim Cnx As New ADODB.Connection
    Dim Rst As New ADODB.Recordset
    Dim Année As String * 4
    Dim Mois As String * 2
    Dim Jour As String * 2
    Dim AMJ As String * 8
    Dim Req1 As String
    Dim Req2 As String
    Année = TextBox1
    Mois = TextBox2
    Jour = TextBox3
    AMJ = Année & Mois & Jour

'   ***** INSTRUCTIONS DE SÉLECTION DES CHAMPS ET DE JOINTURE *****
    Req1 = "select d.inputdate, cu.inv_name, c.sit_name, c.sit_town, a.ct_name, a.ct_town, d.dwgbbsnum, "
    Req1 = Req1 & "d.esrc_file, d.rc_num, r.ps_code, r.fabweight, d.delivstart, r.cust_ref from dwgbbs as d "
    Req1 = Req1 & "join ref_ps as r on r.esrc_file = d.esrc_file and r.rc_num = d.rc_num and r.ps_title = d.dwgbbsnum "
    Req1 = Req1 & "join contract as c on c.esrc_file = d.esrc_file and c.rc_num = d.rc_num "
    Req1 = Req1 & "left join contradr as a on a.esrc_file = d.esrc_file and a.es_num = d.es_num and a.seq_num = r.addr_num "
    Req1 = Req1 & "join customer as cu on cu.cust_code = c.cust_code"

'   ***** SÉLECTION SELON DATE SAISIE DANS LE FORMULAIRE *****
    Req2 = "where d.esrc_file = 'cht05' and d.rc_num <> 4 and d.inputdate = " & AMJ
    Req1 = Req1 & " " & Req2

'   ***** OUVERTURE DE LA BASE *****
    Cnx.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=Favre;Data Source=Serveur-corc"

'   ***** RECHERCHE DE LA DERNIÈRE CELLULE NON VIDE *****
    Range("A10000").Select
    Selection.End(xlUp).Select

'   ***** OUVERTURE DU RECORDSET *****
    Rst.Open Req1, Cnx, adOpenKeyset

'   ***** COPIE DU RECORDSET DEPUIS LA LIGNE SUIVANTE *****
    ActiveCell.Offset(1, 0).CopyFromRecordset Rst

'   ***** FERMETURE ET VIDAGE *****
    Rst.Close: Set Rst = Nothing
    Cnx.Close: Set Cnx = Nothing
    Unload UserForm1
    Application.ScreenUpdating = True
End Sub

Conclusion :


Notez bien le premier commentaire, je suis resté bloqué un moment à cause de ça.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.