Rafraîchir les connexions de données dans un classeur, Excel VBA
Voici un code VBA détaillé pour rafraîchir les connexions de données dans un classeur Excel, accompagné d’une explication complète.
Code VBA pour rafraîchir les connexions de données :
Ce code permet de rafraîchir toutes les connexions de données dans un classeur Excel, que les connexions soient liées à des bases de données externes, des requêtes Web ou d’autres sources de données.
Sub RafraichirConnexionsDeDonnées() Dim conn As Object Dim ws As Worksheet Dim startTime As Double Dim endTime As Double Dim elapsedTime As Double ' Enregistrer l'heure de début pour calculer le temps de rafraîchissement startTime = Timer ' Boucle à travers toutes les connexions dans le classeur For Each conn In ThisWorkbook.Connections ' Vérifier si la connexion est une connexion OLEDB ou ODBC (c'est-à-dire des connexions à une base de données externe) If conn.Type = xlConnectionOLEDB Or conn.Type = xlConnectionODBC Then ' Rafraîchir chaque connexion On Error Resume Next ' En cas d'erreur avec une connexion spécifique conn.Refresh On Error GoTo 0 ' Désactiver la gestion des erreurs une fois le rafraîchissement effectué ' Vérifier s'il s'agit d'une requête Web ou d'un autre type de connexion ElseIf conn.Type = xlConnectionWeb Then conn.Refresh ' Ajouter d'autres conditions ici si nécessaire pour d'autres types de connexions End If Next conn ' Enregistrer l'heure de fin pour calculer le temps que le processus a pris endTime = Timer elapsedTime = endTime - startTime ' Afficher une boîte de message pour indiquer que toutes les connexions ont été rafraîchies et le temps pris MsgBox "Toutes les connexions de données ont été rafraîchies avec succès." & vbCrLf & _ "Temps écoulé : " & Round(elapsedTime, 2) & " secondes.", vbInformation, "Rafraîchissement terminé" End Sub
Explication détaillée du code :
1. Déclaration des variables :
- conn : Utilisé pour parcourir toutes les connexions du classeur.
- ws : (Non utilisé ici mais pourrait être utilisé si vous souhaitez manipuler des feuilles spécifiques en plus des connexions).
- startTime et endTime : Utilisés pour mesurer le temps nécessaire pour rafraîchir toutes les connexions de données.
- elapsedTime : Stocke la différence entre startTime et endTime pour calculer la durée du processus de rafraîchissement.
2. Temps de début :
- startTime = Timer : La fonction Timer renvoie le nombre de secondes écoulées depuis minuit. Nous enregistrons cette valeur pour savoir combien de temps le processus de rafraîchissement prendra.
3. Boucle à travers toutes les connexions :
- For Each conn In ThisWorkbook.Connections : Cela parcourt toutes les connexions dans le classeur (ThisWorkbook fait référence au classeur dans lequel le macro est exécuté). La collection Connections inclut tous les types de connexions de données telles que OLEDB, ODBC, requêtes Web, etc.
4. Vérification des types de connexion :
- À l’intérieur de la boucle, le code vérifie le type de chaque connexion en utilisant conn.Type. Il existe plusieurs types de connexions :
- xlConnectionOLEDB et xlConnectionODBC sont des connexions à des bases de données externes (par exemple, SQL, Access, etc.). Ces connexions utilisent généralement des pilotes OLE DB ou ODBC.
- xlConnectionWeb correspond à une requête Web, où la connexion est utilisée pour récupérer des données depuis une source en ligne (par exemple, une API ou un site web).
- Vous pouvez ajouter d’autres conditions ElseIf pour d’autres types de connexions selon votre besoin, comme les connexions aux fichiers Excel ou Cube (OLAP).
5. Rafraîchissement de chaque connexion :
- conn.Refresh : Cette commande rafraîchit la connexion de données. Pour les connexions OLEDB et ODBC, cela récupère les dernières données à partir de la source externe. Pour les requêtes Web, cela télécharge de nouveau les données de l’adresse Web spécifiée.
6. Gestion des erreurs :
- On Error Resume Next permet de continuer l’exécution du code si une erreur se produit pour une connexion particulière (par exemple, si un serveur de base de données est inaccessible).
- On Error GoTo 0 désactive ensuite la gestion des erreurs après avoir rafraîchi la connexion, de sorte que les erreurs seront signalées normalement dans le reste du code.
7. Temps de fin et durée :
- Après la boucle, l’heure de fin est enregistrée avec endTime = Timer.
- La différence entre endTime et startTime donne le temps total qu’a pris le processus de rafraîchissement.
- La durée est ensuite affichée dans une boîte de message pour informer l’utilisateur du temps écoulé.
Personnalisation du code :
- Si vous souhaitez rafraîchir une connexion spécifique au lieu de toutes les connexions, vous pouvez modifier la boucle pour cibler une connexion par son nom. Par exemple :
- ThisWorkbook.Connections(« NomDeVotreConnexion« ).Refresh
- Vous pouvez aussi améliorer la gestion des erreurs pour fournir des messages plus détaillés à l’utilisateur en cas d’échec de rafraîchissement d’une connexion.
Comment utiliser ce code :
1. Ouvrez le classeur Excel dans lequel vous souhaitez exécuter ce macro.
2. Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
3. Dans l’éditeur VBA, cliquez sur Insertion > Module pour ajouter un nouveau module.
4. Collez le code ci-dessus dans le module.
5. Appuyez sur F5 pour exécuter le code ou assignez-le à un bouton ou à un raccourci pour l’utiliser plus facilement.
Concepts clés :
- Connexions de données dans le classeur : Ce sont des liens vers des sources de données externes (bases de données, services Web, etc.) qui importent des données dans votre classeur. Excel permet de gérer et de rafraîchir ces connexions.
- Rafraîchissement des connexions : Le rafraîchissement des connexions signifie qu’Excel va récupérer les dernières données depuis la source, afin que les modifications effectuées en dehors d’Excel (par exemple, des ajouts dans une base de données ou des mises à jour dans une requête Web) soient reflétées dans votre classeur.
- Fonction Timer : La fonction Timer est utilisée pour suivre la durée des opérations. Elle permet de savoir combien de temps le processus de rafraîchissement a pris.
Notes supplémentaires :
- Performance : Si vous avez de nombreuses connexions de données, notamment vers des bases de données externes ou des requêtes Web lentes, le processus de rafraîchissement peut prendre du temps. Vous pouvez optimiser l’ordre des connexions à rafraîchir en priorisant les plus importantes ou en utilisant des opérations asynchrones (cela nécessiterait du code supplémentaire).
- Types de connexions : Gardez à l’esprit que les différents types de connexions (par exemple, OLE DB vs requête Web) peuvent se comporter différemment et certains peuvent nécessiter une authentification (comme un nom d’utilisateur et un mot de passe) ou une gestion des erreurs plus spécifique.