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 :

QueryTables Refresh probleme


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut QueryTables Refresh probleme
    Bonjour,
    j'utilise QueryTables pour obtenir des resultats de requetes sous Excel, tout fonctionne jusqu'à la 64ème requete.
    Quelque soient les requetes effectuées par l'utilisateur, ça plante toujours à la 64ème requete en m'affichant:
    Erreur d'execution '1004':
    Erreur définie par l'application ou par l'objet
    et le debogage se positionne sur le .Refresh de mon code ci-dessous:

    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
     
    Set appAccess = CreateObject("Access.application")
     
    BOUCLE FOR blablabla
       MySql = "SELECT blablabla; "
           With ActiveSheet.QueryTables.Add(Connection:=Array( _
            "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;" _
            & "Data Source=" & Application.ActiveWorkbook.Path & "/base_blabla.mdb"), _
            Destination:=Cells(100, ColExcel))
            .CommandType = xlCmdSql
            .CommandText = MySql
            .Refresh
        End With
    NEXT blabla
    appAccess.Quit
    Set appAccess = Nothing
    Et des que je referme le fichier et que je reouvre le fichierapres cette erreur au bout de la 64eme requete, tout remarche ...jusqu'a ce que je reeffectue 64 requetes.
    Comment faire?
    MERCI !

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    le message d'erreur c'est blalblabla non ..?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Oui, comment as-tu deviné?

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et la valeur de MySql à ce moment la cela devient quoi..?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Bon, je poste tout le code, mais ça n'avancera personne; c'était juste pour épurer:
    donc tout marche jusqu'à la 64ème requete, qui affiche une erreur sur le .REFRESH !!


    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
    19
    20
    21
    22
    23
    24
     
    For i = 1 To NbTables
        Var = 2
        While Cells(Var, i).Value <> ""
            For j = 1 To NbPays
                MySql = "SELECT " & Table(i) & ".[" & Cells(Var, i).Value & "] FROM " & Table(i) & " WHERE (" & Table(i) & ".Pays)='" & Pays(j) & "' ORDER BY " & Table(i) & ".Pays, " & Table(i) & ".Année; "
                Nom_Pays(NbVar) = Pays(j)
                NbVar = NbVar + 1
                'affiche le contenu de la requete sur la base base_jumbo.mdb
                ColExcel = ColExcel + 1
                With ActiveSheet.QueryTables.Add(Connection:=Array( _
                    "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;" _
                    & "Data Source=" & Application.ActiveWorkbook.Path & "/base_1.mdb"), _
                    Destination:=Cells(1, ColExcel))
                    .CommandType = xlCmdSql
                    .CommandText = MySql
                    .Refresh
                End With
            Next j
            Var = Var + 1
        Wend
    Next i
    appAccess.Quit
    Set appAccess = Nothing

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ben tu nous as pas donné la valeur de MySql.. sur plantage.. , sinon qu'appelle tu la 64 ° requête ..? la 64° fois ou tu appelle le code ..?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    En fait, il n'y a aucun probleme avec les requetes.
    Toutes renvoient ce qu'il faut, mais si l'utilisateur utilise le fichier sans le fermer et que les requetes envoyees sur Access depassent le nombre de 64, j'ai cette erreur:

    Erreur d'execution '1004':
    Erreur définie par l'application ou par l'objet
    et le debogage se positionne sur le .Refresh

    Si je ferme le fichier, et que je l'ouvre a nouveau, la requete qui ne passait pas a ce moment (car 64eme..) passera sans probleme...
    Desolee, c'est pas tres clair..je suis perdue!

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par csensoli
    En fait, il n'y a aucun probleme avec les requetes.
    .....
    ben si tu as la solution pourquoi pose tu une question...?

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Pour ma part, suite à de mauvaises expériences, je ne travaille jamais avec les QueryTables.

    Elles surchargent horriblement la mémoire et, si on sauve le fichier, il prend vite des proportions inacceptables.

    Je travaille toujours par RecordSet et boucle pour remplir la feuille.

    A toi de voir, mais je pense que l'origine de ton problème est là.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Cher bbil,
    je ne sais pas comment tu interpretes mes propos, je suis peut-etre pas claire ni douée, mais il y'a peut-etre un peu de mauvaise volonté de ta part!
    Depuis le debut, je n'ai pas dit que j'avais un probleme sur mes requetes!!!! mais sur le REFRESH.
    Bon, tant pis, je vais donc analyser la methode Recordset. Merci AlainTech.
    En fait, la base "base1.mdb" que j'interroge crée un fichier "base1.ldb" lorsqu'elle est utilisée et quand tous les fichiers sont fermés, ce ".ldb" est encore présent, et il ne le devrait pas je pense, c'est peut-etre la cause du probleme...bref

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par csensoli
    tous les fichiers sont fermés,
    Que veux-tu dire par fichiers???

    Normalement, le ldb est détruit quand toutes les connexions sont fermées.

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et à quoi sert d'aprés toi la procédure refresh sinon à éxécuté la mystérieuse requête ..?

    Citation Envoyé par Aide en ligne excel
    Avec la méthode Refresh, Microsoft Excel se connecte à la source de données de la table de requête, exécute la requête SQL et renvoie les données dans la plage destination de la table de requête. Tant que cette méthode n'est pas appelée, la table de requête ne communique pas avec la source de données.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    oui mais les requetes sont correctes, alors je pense que c'est plutot un probleme de memoire, ou de de ce fichier ".ldb" d'access, je sais pas, j'y comprends rien.

Discussions similaires

  1. [XL-2010] Erreur 1004 sur ligne de code vba QueryTable.refresh
    Par Darkfiend dans le forum Excel
    Réponses: 0
    Dernier message: 17/01/2012, 12h08
  2. [XL-2007] Err.Number lors exécution Selection.QueryTable.Refresh BackgroundQuery:=False
    Par fguilbau dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/11/2009, 17h19
  3. [Refresh] Probleme de mise a jour graphique
    Par Clorish dans le forum Composants VCL
    Réponses: 4
    Dernier message: 25/07/2005, 18h44
  4. Réponses: 6
    Dernier message: 25/04/2005, 14h49
  5. Probleme de Refresh avec TQuery et DBGrid
    Par insoo dans le forum C++Builder
    Réponses: 7
    Dernier message: 25/11/2003, 17h20

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