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 :

Macro et MS Query


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut Macro et MS Query
    Bonjour à tous,

    Après avoir épuisé toutes mes forces sur cette question, je vous la soumets en désespoir de cause...

    Je veux créer une macro qui lance une MS Query. Je veux récuperer un certain nombre de données entre deux dates (que l'utilisateur change à chaque fois).

    Voici ce que j'ai ecrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Dim start As Date, finish As Date
     
        start = CP.Range("D6").Value
        finish = CP.Range("D7").Value
     
        With AC.Range("A1").QueryTable
            .Connection = je passe les détails pour ca, ca marche
            .CommandText = Array( _
            "SELECT NON_UNIFORMITY_CQS.MATRICULE, NON_UNIFORMITY_CQS.CLASSIFICATION_CODE, NON_UNIFORMITY_CQS.CLASSIFIER_ID, NON_UNIFORMITY_CQS.CQ_CODE, NON_UNIFORMITY_CQS.CQ_TIMESTAMP, NON_UNIFORMITY_CQS.LOCATION,NON_UNIFORMITY_CQS.VERIFIER_ID" & Chr(13) & "" & Chr(10) & "FROM NON_UNIFORMITY_CQS NON_UNIFORMITY_CQS" & Chr(13) & "" & Chr(10) & "WHERE (NON_UNIFORMITY_CQS.CLASSIFICATION_CODE='H') AND (NON_UNIFORMITY_CQS.CQ_TIMESTAMP<{ts '" & Format(finish, "yyyy-mm-dd hh:mm:ss.00") & "'} And NON_UNIFORMITY_CQS.CQ_TIMESTAMP>{ts '" & Format(start, "yyyy-mm-dd hh:mm:ss.00") & "'}) AND (NON_UNIFORMITY_CQS.LOCATION='S') OR (NON_UNIFORMITY_CQS.CLASSIFICATION_CODE='H') AND (NON_UNIFORMITY_CQS.CQ_TIMESTAMP<{ts '" & Format(finish, "yyyy-mm-dd hh:mm:ss.00") & "'} And NON_UNIFORMITY_CQS.CQ_TIMESTAMP>{ts '" & Format(start, "yyyy-mm-dd hh:mm:ss.00") & "'}) AND (NON_UNIFORMITY_CQS.LOCATION='T')")
            .Refresh BackgroundQuery:=False
        End With
    C'est quand je veux exécuter ma sélection (à partir du SELECT) qu'il y a un pb: il me sort une erreur de type 13, incompatibilité de type et je comprends pas pourquoi. Poutant, j'ai d'abord enregistré la macro pour voir la syntaxe et surtout écrire le même format de date.

    Je ne sais vraiment pas ce qui ne va pas.

    Si quelqu'un pouvait m'aider, ce serait génial !

    Merci d'avance,

    Pubbins

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonjour,
    les " & Chr(13) & "" & Chr(10) & " n'ont rien à faire ici, remplacer par un espace

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut
    Je l'ai fait mais j'ai toujours la même erreur : incompatibilité de type.

    Vous avez une autre idée?

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Je ne vois que la clause WHERE pour générer une incompatibilité de type. La partie qui concerne les dates me paraît curieuse pour du SQL. Supprime la clause WHERE. S'il n'y a plus d'erreur réintroduis-la, terme par terme jusqu'à retrouver l'erreur. Le dernier terme introduit sera erroné.

    Cordialement,

    PGZ

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut
    J'ai remarque un truc. Ceci est la macro que j'ai enregistre (elle marche sans probleme):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        With Selection.QueryTable
            .Connection = blabla
            .CommandText = Array( _
            "SELECT NON_UNIFORMITY_CQS.MATRICULE, NON_UNIFORMITY_CQS.CLASSIFICATION_CODE, NON_UNIFORMITY_CQS.CLASSIFIER_ID, NON_UNIFORMITY_CQS.CQ_CODE, NON_UNIFORMITY_CQS.CQ_TIMESTAMP, NON_UNIFORMITY_CQS.LOCATION," _
            , _
            " NON_UNIFORMITY_CQS.VERIFIER_ID" & Chr(13) & "" & Chr(10) & "FROM NON_UNIFORMITY_CQS NON_UNIFORMITY_CQS" & Chr(13) & "" & Chr(10) & "WHERE (NON_UNIFORMITY_CQS.CLASSIFICATION_CODE='H') AND (NON_UNIFORMITY_CQS.CQ_TIMESTAMP<{ts '2010-12-01 00:00:00.00'} And N" _
            , _
            "ON_UNIFORMITY_CQS.CQ_TIMESTAMP>{ts '2010-11-18 00:00:00.00'}) AND (NON_UNIFORMITY_CQS.LOCATION='S') OR (NON_UNIFORMITY_CQS.CLASSIFICATION_CODE='H') AND (NON_UNIFORMITY_CQS.CQ_TIMESTAMP<{ts '2010-12-01" _
            , _
            " 00:00:00.00'} And NON_UNIFORMITY_CQS.CQ_TIMESTAMP>{ts '2010-11-18 00:00:00.00'}) AND (NON_UNIFORMITY_CQS.LOCATION='T')" _
            )
            .Refresh BackgroundQuery:=False
        End With
    Apres je veux la remettre sur une ligne pour pouvoir transformer les dates en parametres:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        With Selection.QueryTable
            .Connection = blabla
            .CommandText = Array( _
            "SELECT NON_UNIFORMITY_CQS.MATRICULE, NON_UNIFORMITY_CQS.CLASSIFICATION_CODE, NON_UNIFORMITY_CQS.CLASSIFIER_ID, NON_UNIFORMITY_CQS.CQ_CODE, NON_UNIFORMITY_CQS.CQ_TIMESTAMP, NON_UNIFORMITY_CQS.LOCATION, NON_UNIFORMITY_CQS.VERIFIER_ID" & Chr(13) & "" & Chr(10) & "FROM NON_UNIFORMITY_CQS NON_UNIFORMITY_CQS" & Chr(13) & "" & Chr(10) & "WHERE (NON_UNIFORMITY_CQS.CLASSIFICATION_CODE='H') AND (NON_UNIFORMITY_CQS.CQ_TIMESTAMP<{ts '2010-12-01 00:00:00.00'} And NON_UNIFORMITY_CQS.CQ_TIMESTAMP>{ts '2010-11-18 00:00:00.00'}) AND (NON_UNIFORMITY_CQS.LOCATION='S') OR (NON_UNIFORMITY_CQS.CLASSIFICATION_CODE='H') AND (NON_UNIFORMITY_CQS.CQ_TIMESTAMP<{ts '2010-12-01 00:00:00.00'} And NON_UNIFORMITY_CQS.CQ_TIMESTAMP>{ts '2010-11-18 00:00:00.00'}) AND (NON_UNIFORMITY_CQS.LOCATION='T')")
            .Refresh BackgroundQuery:=False
        End With
    Je relance cette macro et la, une erreur de type 13 (type mismatch) apparait. Quelle est mon erreur? Je ne vois vraiment pas.

    Merci d'avance

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 65
    Par défaut
    Bonjour,

    J'ai finalement, avec beaucoup de perseverance, reussi a venir a bout de l'erreur de type 13. C'est d'apres moi, un probleme de nombre de caractere par ligne, c'est un peu bizarre mais en decoupant bien la requete SELECT, on y arrive.

    Par contre (il fallait bien un mais), j'ai une autre erreur qui est apparu. Une erreur de type 1004: application-defined or object-defined error, sur la ligne suivante c'est a dire : .refresh background.Query:=false

    Pourtant, quand j'execute la macro (qui s'arrete a la ligne refresh...) et qu'ensuite je vais dans Microsoft Query, la requete que j'ai mis dans ma macro apparait et si je l'execute manuellement, cela marche parfaitement.

    Je ne vois pas ce qui cloche. Si vous aviez une idee, ce serait genial !

Discussions similaires

  1. [XL-2010] Macro + Query sql + Suppressions de ligne + Protection de feuille = ERREUR
    Par cecjmii dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/12/2014, 13h49
  2. [XL-2010] Macro query table
    Par mleguyad dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/10/2013, 16h51
  3. Query et Macro
    Par potenco dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/03/2011, 10h41
  4. Réponses: 8
    Dernier message: 26/10/2010, 16h05
  5. Réponses: 2
    Dernier message: 22/07/2002, 12h13

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