IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

[Power Query] - Data Base Connection [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut [Power Query] - Data Base Connection
    Bonjour à tous,

    J'ai un petit souci et ne parviens pas à trouver la solution sur la toile.
    Peut-être pourriez-vous m'aider ?

    J'ai un fichier Excel, vue d'une db SQL, dans lequel j'ai créé divers table basée sur des requêtes PowerQuery pour analyse.
    L'ouverture de ce fichier est très très lente (presque 10 min),(après test) se ne sont pas mes queries, mais bien la connexion au données qui ralentit l'ouverture du fichier.

    Pour solution, j'ai pensé : créé une macro dans le workbook_Open qui contrôlerait la dernière fois ou la base a été sauvée sur le fichier Si > 2h mettre à jour, sinon ne pas importer la vue SQL.
    Mon code fonctionne mais uniquement si je la lance Wb ouvert , si le wb est fermé et que je l'ouvre la connexion se fait tout de même.

    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
     
    Private Sub Workbook_Open()
     
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
     
      If TimeDiff(Now(), LastModified) / 60 > 120 Then ' On importe uniquement l'ensemble des données si Maj date de moins de 2H
         ActiveWorkbook.Connections("t_DataBase").OLEDBConnection.BackgroundQuery = False
         ActiveWorkbook.Connections("t_DataBase").Refresh
     
        Call addWeekNum
        Call RefreshQueries
     
      End If
     
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationAutomatic
    End Sub

    Auriez-vous une astuce pour palier à ce souci, du type bloqué la connexion/refresh du wb et l'activé si la condition est remplie ?

    D'avance Merci,
    MFoxy

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,

    je ne suis pas certain d'avoir compris toutes les questions, mais si tu souhaites savoir si la connexion est déjà ouverte, tu peux passer par la propriété State

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not TaConnexion.State = adStateOpen Then
        'tu l'ouveres
      End If
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Merci Jean-Philippe,

    Je dois mettre mal expliqué.

    Lorsque je double clic sur mon fichier Excel, celui-ci s'ouvre mais mets énormément de temps à charger la connexion à la base de donnée liée (assez volumineuse) pour le refresh des données sur la feuille.

    Ce que je voudrais c'est "bloqué" le refresh/connection automatique a la bd sql à l'ouverture d'excel, et ainsi lancer le refresh uniquement si nécessaire, par exemple si le classeur a été sauvegarder pour la dernière fois dans les 2 dernières heures

    Pas simple a expliquer désolé.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Ah, je comprends mieux...

    Ton LastModified peut être stocké dans une cellule, qui sera lu et mis à jour.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    D'accord avec toi, mais sa n'empêchera le fichier de se mettre à jour dès l'ouverture.

    Ici le fichier n'est pas encore ouvert lorsqu'il charge les données externes.

    Exemple si je mets un MsgBox dans workbook open il n'apparaît qu'après ouverture du wb, lorsque l'on voit les feuilles.

    Donc il ne "lira" pas non plus dans la cellule le Last modifie. Si ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Si tu ouvres le classeur via le code, tu peux preciser si tu souhaites les link update, mis à false

    Si c'est un lancement manuel, tu peux faire en sorte que le test se déroule (dans ton code la variable LastModified n'est pas affectée
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problem connection to Access data base has password
    Par Hamdi Fatnassii dans le forum Visual Studio
    Réponses: 0
    Dernier message: 05/03/2019, 15h11
  2. connection to Access data base has password
    Par Hamdi Fatnassii dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 01/03/2019, 12h15
  3. [Power BI] - Data Refresh avec base Navision
    Par italia57 dans le forum Power BI
    Réponses: 0
    Dernier message: 10/11/2014, 16h43
  4. Erreur to connect to data base
    Par evincenzooo dans le forum Linq
    Réponses: 3
    Dernier message: 16/07/2014, 09h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo