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 :

Date dans requête SQL [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Février 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Date dans requête SQL
    Bonjour,

    Je souhaite réaliser un publipostage à partir d'un tableau excel. Je voudrais filtrer les données en fonction de dates, mais je ne dois pas avoir écrit ma requête correctement puisque cela ne fonctionne pas.
    Je sais que c'est un thème récurrent ... mais je n'ai pas réussi à trouver une réponse adaptée à mon problème dans les différentes discussions.

    Voici le code :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    Private Sub CommandButtonGal_Click()
    Dim appWord As Word.Application
    Dim docWord As Word.Document
    Dim appOffice As Office.OfficeDataSourceObject
     
    Dim SQL As String
    Dim SQL2 As String
    Dim SQL3 As String
    Dim SQL4 As String
    Dim mois As String
    Dim typecours As String
    Dim cours As String
    Dim Datefin As String
    Dim chemin As String
    Dim varDate As Date
     
     
    Application.ScreenUpdating = False
     
    Set appWord = New Word.Application
    appWord.Visible = True
     
    chemin = "xxxxxxx\FeuillesMMT_Matin"
    mois = ActiveDocument.FormFields(1).Result
    typecours = ActiveDocument.FormFields(2).Result
    cours = ActiveDocument.FormFields(3).Result
    Datefin = ActiveDocument.TextBox2
    varDate = CDate(Datefin)
     
    SQL3 = "SELECT *" & _
    "FROM [CC$]" & _
    "WHERE [Time]='Mat'" & _
    "AND [FinPrevue] = #" & varDate & "#" & _
    "AND [Langue]= '" & cours & "';"
     
     
        Set docWord = appWord.Documents.Open(chemin & "\att MMT " & mois & ".docx")
     
        With docWord.MailMerge
        .MainDocumentType = wdFormLetters
        .OpenDataSource _
        Name:="xxxxxx\AllStudents.xlsx", _
        SQLStatement:=SQL3
     
        .Execute Pause:=True
     
        End With
     
     
    End Sub
    Quelqu'un aurait-il une idée de correction ?


    Merci beaucoup !!

    Pauline

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour Pauline,

    Je ne suis pas un grand expert dans le domaine, mais, de loin, je te propose de vérifier le formalisme de ta colonne "FinPrevue".
    Les dates en VBA ont des formalismes qui peuvent varier.

    Qu'as-tu dans ta variable "varDate" et correspond-elle au formalisme de la colonne "FinPrevue" ?

    Cordialement,
    Kimy

  3. #3
    Membre habitué
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2009
    Messages : 174
    Points : 195
    Points
    195
    Par défaut
    il ne faudrait pas un format date américain, par hasard ?
    # MM/JJ/AAAA #

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent 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 : 71
    Localisation : France

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

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

    Tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "AND [FinPrevue] = #" & Format$(varDate, "mm/dd/yyyy") & "#"
    Cordialement

    PGZ

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Citation Envoyé par Lilou51 Voir le message
    il ne faudrait pas un format date américain, par hasard ?
    # MM/JJ/AAAA #
    Les dates toujours aux format international!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "AND Format([FinPrevue],'yyyy-mm-dd hh:mm:ss') = '" & Format(varDate, "yyyy-mm-dd hh:mm:ss") & "'"
    Dernière modification par Invité ; 05/02/2015 à 18h58.

  6. #6
    Candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Février 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci à tous pour vos réponses !

    J'ai testé la solution de pgz, mais le publipostage ne s'effectue pas, j'obtiens la fenêtre suivante :

    Nom : screenshot.png
Affichages : 378
Taille : 14,4 Ko

    Avec la solution de rdurupt, ça marche mieux (la fenêtre précédente ne s'affiche plus), mais le publipostage ne s'effectue tout de même pas : j'obtiens une erreur "Run-time error 5631" indiquant qu'il n'y a pas de données correspondant à la date indiquée... ce qui n'est pas vrai.

    J'ai testé du coup plusieurs écritures de date dans ma TextBox, mais je n'arrive à rien.

    Est-ce que cela peut venir du format de dates de mon tableau Excel ? Est-ce que je peux modifier autre chose dans mon code ?

    Merci !

    Pauline

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    dans mon exemple, j'ai formaté avec l'heur!
    peut être que les dates dans ta table sont avec les heurs également ce qui peut expliquer ça
    Where '2015-01-01 10:22:30' = '2015-01-01 15:55:02' ne te retournera rien ! on va enlever l'heur du format.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND Format([FinPrevue],'yyyy-mm-dd') = '" & Format(varDate, "yyyy-mm-dd") & "'"
    Citation Envoyé par pauline.guedon Voir le message
    Bonjour,
    Est-ce que cela peut venir du format de dates de mon tableau Excel ? Est-ce que je peux modifier autre chose dans mon code ?
    non car j’applique le même format pour le champ [FinPrevue] et varDate

  8. #8
    Candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Février 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci pour ta réponse rdurupt. J'ai oublié de préciser que j'avais déjà enlevé les heures, donc c'est bien le code que tu mentionnes ci-dessus que j'ai utilisé. Le publipostage ne fonctionne quand même pas, les données correspondant à la date indiquée n'étant pas prises en compte.

    Est-ce qu'il y a autre chose que je peux essayer ?

    Merci beaucoup !

    Pauline

  9. #9
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SQL3 = "SELECT frm.* FROM [CC$] as frm " & _
    "WHERE frm.[Time]='Mat' " & _
    "AND Format(frm.[FinPrevue],'yyyy-mm-dd') = '" & format( varDate,"yyyy-mm-dd") & "' " & _
    "AND frm.[Langue]= '" & cours & "';"

  10. #10
    Candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Février 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Mea culpa, le 1er morceau de code fonctionnait déjà très bien... J'avais mal regardé mes filtres, donc il n'y avait effectivement pas de données pour la date que je cherchais.

    Merci beaucoup pour votre aide !!

    Pauline

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

Discussions similaires

  1. [Débutant] Erreur Date dans requête SQL
    Par jayce23 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/02/2014, 09h17
  2. [XL-2007] Controle de date dans requête SQL
    Par nanousik dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/03/2013, 18h10
  3. [AC-2002] Critére DATE dans requête SQL
    Par Flavien23 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/05/2009, 11h00
  4. [AC-2002] Critére DATE dans requête SQL
    Par Flavien23 dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 05/05/2009, 10h50
  5. Utilisation de variable Date dans requète SQL sous Access
    Par noakiss dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/03/2008, 09h37

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