Automatiser l’importation de données à partir de bases de données externes, Excel VBA

Automatiser l’importation de données à partir de bases de données externes, Excel VBA
Pour automatiser l’importation de données à partir de bases de données externes dans Excel en utilisant VBA, vous pouvez utiliser ADO (ActiveX Data Objects) pour vous connecter à la base de données, exécuter une requête et importer les données dans une feuille Excel.
Objectif :
L’objectif de ce code est de se connecter à une base de données SQL (par exemple, SQL Server), exécuter une requête et importer les données dans une feuille Excel spécifiée.
Prérequis :
1. Avoir un accès à une base de données externe (par exemple, SQL Server).
2. Avoir les informations de connexion (nom du serveur, base de données, utilisateur, mot de passe).
3. Ajouter une référence à la bibliothèque « Microsoft ActiveX Data Objects Library » dans VBA :
Allez dans l’éditeur VBA (Alt + F11).
Dans le menu Outils, choisissez Références.
Cochez la case « Microsoft ActiveX Data Objects x.x Library » (où x.x dépend de votre version d’Office).
Code VBA pour l’importation de données
Voici un exemple de code VBA qui connecte Excel à une base de données SQL Server, exécute une requête SQL, et importe les résultats dans une feuille Excel.
Étape 1 : Configuration de la connexion à la base de données

Sub ImporterDonnees()
' Déclaration des variables
Dim conn As Object
Dim rs As Object
Dim ws As Worksheet
Dim connectionString As String
Dim sqlQuery As String
Dim i As Integer
Dim j As Integer
' Initialisation de la feuille de destination
Set ws = ThisWorkbook.Sheets("Feuille1")
ws.Cells.Clear ' Effacer les anciennes données
' Connexion à la base de données SQL Server
connectionString = "Provider=SQLOLEDB;Data Source=VotreServeur;Initial Catalog=VotreBaseDeDonnees;" & _
"User ID=VotreNomUtilisateur;Password=VotreMotDePasse;"
' Créer un objet de connexion ADO
Set conn = CreateObject("ADODB.Connection")
conn.Open connectionString
' Requête SQL à exécuter
sqlQuery = "SELECT * FROM VotreTable" ' Remplacez par votre propre requête SQL
' Créer un objet Recordset pour stocker les résultats de la requête
Set rs = CreateObject("ADODB.Recordset")
rs.Open sqlQuery, conn
' Vérifier si des données ont été retournées
If Not rs.EOF Then
' Remplir les en-têtes dans Excel
For i = 1 To rs.Fields.Count
ws.Cells(1, i).Value = rs.Fields(i - 1).Name
Next i
' Remplir les données dans Excel
i = 2 ' Commencer à partir de la ligne 2
Do While Not rs.EOF
For j = 1 To rs.Fields.Count
ws.Cells(i, j).Value = rs.Fields(j - 1).Value
Next j
rs.MoveNext
i = i + 1
Loop
End If
' Fermer les objets ADO
rs.Close
conn.Close
' Libérer les objets
Set rs = Nothing
Set conn = Nothing
MsgBox "Données importées avec succès!", vbInformation
End Sub

Explication détaillée du code :
1. Déclaration des variables :
conn : L’objet de connexion ADO pour se connecter à la base de données.
rs : L’objet Recordset qui stockera les résultats de la requête SQL.
ws : L’objet représentant la feuille Excel où les données seront importées.
connectionString : La chaîne de connexion contenant les informations pour se connecter à la base de données (remplacez avec vos propres informations).
sqlQuery : La requête SQL qui récupère les données (à ajuster selon vos besoins).
2. Création de la connexion ADO :
Set conn = CreateObject(« ADODB.Connection ») : Crée l’objet de connexion.
conn.Open connectionString : Ouvre la connexion à la base de données en utilisant la chaîne de connexion.
3. Exécution de la requête SQL :
Set rs = CreateObject(« ADODB.Recordset ») : Crée un objet Recordset pour stocker les résultats de la requête.
rs.Open sqlQuery, conn : Exécute la requête SQL et remplit le Recordset avec les données retournées.
4. Importation des résultats dans Excel :
La première boucle For i = 1 To rs.Fields.Count remplit les en-têtes (les noms des champs) dans la première ligne de la feuille Excel.
La deuxième boucle Do While Not rs.EOF parcourt chaque enregistrement du Recordset et importe les valeurs dans la feuille Excel ligne par ligne.
5. Fermeture de la connexion :
rs.Close et conn.Close ferment le Recordset et la connexion à la base de données une fois que l’importation est terminée.
Les objets sont ensuite libérés avec Set rs = Nothing et Set conn = Nothing.
6. Affichage d’un message de confirmation :
À la fin, une boîte de message apparaît pour indiquer que l’importation a réussi.
Personnalisation :
• Serveur, base de données et identifiants : Remplacez VotreServeur, VotreBaseDeDonnees, VotreNomUtilisateur, et VotreMotDePasse par les informations réelles de votre base de données.
• Requête SQL : Vous pouvez ajuster sqlQuery pour récupérer les données dont vous avez besoin, par exemple :
« SELECT colonne1, colonne2 FROM table WHERE condition »
• Feuille de destination : Remplacez « Feuille1 » par le nom réel de la feuille Excel dans laquelle vous voulez importer les données.
Points à considérer :
• Vous pouvez automatiser ce processus pour qu’il s’exécute à intervalles réguliers, par exemple en utilisant un bouton sur la feuille Excel ou une tâche planifiée.
• Assurez-vous que votre connexion réseau permet l’accès à la base de données et que le serveur SQL accepte les connexions à distance si nécessaire.
Ce code vous permet d’automatiser l’importation de données depuis une base de données SQL vers Excel avec VBA.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x