Maintenir connexion ODBC (vba)
Utilisateur anonyme
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis un novice en VBA, j'aimerais savoir si on peut maintenir une connexion ODBC (vers un serveur à distance) lorsque le Workbook est ouvert, envoyer des requêtes et a la fermeture seulement (du workbook ou d'Excel), se déconnecter de la base de données.
Je voudrais faire ça car j'ai deux requêtes à la suite à faire, le temps d'exécution doit être inférieur (ou égal) à une seconde (pour des questions de confort).
Celles ci sont très légères mais chaque requête prend en moyenne 4 secondes, l'affichage est donc bien lent.
J'ai par la suite vu que la cause de ce ralentissement résultait du fait qu'on se connectait à la base de données avant chaque requête (puis on se déconnectait).
Si quelqu'un à la réponse, je le remercie d'avance :)
Cordialement,
Je suis un novice en VBA, j'aimerais savoir si on peut maintenir une connexion ODBC (vers un serveur à distance) lorsque le Workbook est ouvert, envoyer des requêtes et a la fermeture seulement (du workbook ou d'Excel), se déconnecter de la base de données.
Je voudrais faire ça car j'ai deux requêtes à la suite à faire, le temps d'exécution doit être inférieur (ou égal) à une seconde (pour des questions de confort).
Celles ci sont très légères mais chaque requête prend en moyenne 4 secondes, l'affichage est donc bien lent.
J'ai par la suite vu que la cause de ce ralentissement résultait du fait qu'on se connectait à la base de données avant chaque requête (puis on se déconnectait).
Si quelqu'un à la réponse, je le remercie d'avance :)
Cordialement,
A voir également:
- Maintenir connexion ODBC (vba)
- Gmail connexion - Guide
- Connexion chromecast - Guide
- Gmail connexion autre compte - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Connexion sctr - Forum Discord
3 réponses
Bonjour,
Sans voir le code et sans connaitre le contexte (nombre et caractéristiques des données importées, des champs de données, du nombre de lignes...), il parait difficile de formuler une réponse
Sans voir le code et sans connaitre le contexte (nombre et caractéristiques des données importées, des champs de données, du nombre de lignes...), il parait difficile de formuler une réponse
Hum, je vous l'accorde.
Voila, macro générée par Excel, si on ne peut pas parvenir à maintenir la connexion de cette manière, c'est pas grave, je veux juste que le résultat final soit affiché dans un tableau sur une feuille (comme ici)
Sub Macro1() ' ' Macro1 Macro ' Application.DisplayAlerts = False With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _ "ODBC;DATABASE=BDD;DSN=TEST;UID=TEST;;", Destination:=Range( _ "$A$1")).QueryTable .CommandText = Array( _ "SELECT Reference, EnStock, Stockage, Qutite, PieceNo, QteReserve" & Chr(13) & "" & Chr(10) & "FROM STOCK STOCK" & Chr(13) & "" & Chr(10) & "WHERE (Reference='012345" _ , "0')") .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .ListObject.DisplayName = _ "Tableau_Lancer_la_requête_à_partir_de_BDD" .Refresh BackgroundQuery:=False End With End Sub
Voila, macro générée par Excel, si on ne peut pas parvenir à maintenir la connexion de cette manière, c'est pas grave, je veux juste que le résultat final soit affiché dans un tableau sur une feuille (comme ici)
cela parait difficile d'améliorer la vitesse
on peut quand m^me ajouter cette ligne en début de macro
mais ce sera minime
Si tu emploies displayalert, il faut fermer à la fin
application.displaualerts=True
bien que je ne vois pas l'utilité de displayalerts dans ce code, non le supprimer
quant à la déconnexion, la base étant sur le serveur, cela permet l'accès à d'autres si la database du type fichier (et non client serveur) comme par exemple Access
Michel
on peut quand m^me ajouter cette ligne en début de macro
Application.screnupdating=False
mais ce sera minime
Si tu emploies displayalert, il faut fermer à la fin
application.displaualerts=True
bien que je ne vois pas l'utilité de displayalerts dans ce code, non le supprimer
quant à la déconnexion, la base étant sur le serveur, cela permet l'accès à d'autres si la database du type fichier (et non client serveur) comme par exemple Access
Michel