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 :

[VBA-E] Erreur de type: Type de données incompatible dans l'expression du critère


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 44
    Points : 26
    Points
    26
    Par défaut [VBA-E] Erreur de type: Type de données incompatible dans l'expression du critère
    Bonjour à tous !

    Comme expliqué dans le titre de mon message j'ai une erreur de type: Type de données incompatible dans l'expression du critère.

    Ce type d'erreur est bien présent sur la FAQ et sur le forum, mais aucun des cas trouvés ne semblent correspondre à mon problème. Je vous le présente donc.

    J'ai une requête composée de plusieurs sous requêtes reliées par des UNION. La requête est vraiment trés longue mais même avec le premier morceau uniquement, l'erreur apparait. Voici le plus petit morceau de la requête ainsi que son Debug.Print:

    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
    52
    53
    54
    55
     
    SELECT deliv_table.[Deliverable reference] , WP, [Product/deliverable description], customer, [% Work], 'NEW' 
    AS previousPlanDate, IIf(Not IsNull([Reference Date]) 
    AND IsNull([Postponed & Agreed]) 
    AND IsNull([Forecast not agreed]),[Reference Date], 
    IIf( (IsNull([Reference Date]) 
    AND Not IsNull([Postponed & Agreed]) 
    AND IsNull([Forecast not agreed])) 
    OR (not IsNull([Reference Date]) 
    AND Not IsNull([Postponed & Agreed]) 
    AND IsNull([Forecast not agreed])),[Postponed & Agreed],[Forecast not agreed])) AS PostOrNewDate,[Deliverable Status], 
    IIf( (Not IsNull([Reference Date]) 
    AND IsNull([Postponed & Agreed]) 
    AND IsNull([Forecast not agreed])) OR (IsNull([Reference Date]) AND not IsNull([Postponed & Agreed]) 
    AND IsNull([Forecast not agreed])) 
    OR (not IsNull([Reference Date]) 
    AND Not IsNull([Postponed & Agreed]) 
    AND IsNull([Forecast not agreed])) ,'Yes','No') AS customerAgreed,deliv_table.[Reporting Comment]
    FROM Deliv_Table 
    WHERE cstr([Deliverable reference]) 
    NOT IN (SELECT  cstr([Output Data Reference]) 
    FROM output_data_Table) 
    AND isNull(Deliv_Table.[Achieved]) 
    ORDER BY WP , [Deliverable reference] 
     
    UNION SELECT deliv_table.[Deliverable reference] , WP, [Product/deliverable description], customer, [% Work], 
    IIf(Not IsNull(output_data_Table.[Postponed and Agreed date]), output_data_Table.[Postponed and Agreed date], output_data_Table.[Reference Date]) 
    AS previousPlanDate, Deliv_Table.[Reference date] 
    AS PostOrNewDate, Deliv_Table.[Deliverable Status], 'Yes' 
    AS customerAgeed, deliv_table.[Reporting Comment] 
    FROM Deliv_Table, output_data_Table 
    WHERE cstr(output_data_Table.[Output Data Reference]) = cstr(Deliv_Table.[Deliverable reference]) 
    AND ((Format(cdate(Deliv_Table.[Reference Date]),'dd-mmm-yy') <> Format(cdate(output_data_Table.[Reference Date]),'dd-mmm-yy') 
    OR (Not isNull(Deliv_Table.[Reference Date]) 
    AND IsNull(output_data_Table.[Reference Date]))) 
    And ((Format(cdate(Deliv_Table.[Postponed & Agreed]),'dd-mmm-yy') = Format(cdate(output_data_Table.[Postponed and Agreed date]),'dd-mmm-yy')) 
    OR (isNull(Deliv_Table.[Postponed & Agreed]) 
    AND  IsNull(output_data_Table.[Postponed and Agreed date]))) 
    And ((Format(cdate(Deliv_Table.[Forecast not agreed]),'dd-mmm-yy') = Format(cdate(output_data_Table.[Forecast not agreed date]),'dd-mmm-yy')) 
    OR (isNull(Deliv_Table.[Forecast not agreed]) 
    AND  IsNull(output_data_Table.[Forecast not agreed date])))) 
    AND isNull(Deliv_Table.[Achieved]) 
    ORDER BY WP , [Deliverable reference]
     
     
     
    SELECT deliv_table.[Deliverable reference] , WP, [Product/deliverable description], customer, [Achieved], [Domain QI], [Customer QI],
     [Deliverable Status], deliv_table.[Reporting Comment] 
    FROM deliv_table WHERE Not isnull([Achieved]) 
    AND [Achieved] >= #04/01/2006# AND [Achieved] <= #04/30/2006# ORDER BY WP , [Deliverable reference]
     
    SELECT deliv_table.[Deliverable reference] , WP, [Product/deliverable description], customer, [Achieved], [Domain QI], [Customer QI],
     [Deliverable Status], deliv_table.[Reporting Comment] 
    FROM deliv_table WHERE Not isnull([Achieved])
     AND [Achieved] >= #04/01/2006# AND [Achieved]<= #04/30/2006# ORDER BY WP , [Deliverable reference]
    Le code me semble pourtant correct mais l'erreur ci-dessus apparait...

    Chose encore plus bizarre, lorsque je n'exécute que la première partie de la requête (jusqu'au UNION), celà marche... et lorsque j'exécute la deuxième partie seule... celà me donne une erreur: "Utilisation incorrecte de Null"

    Toutes ces histoires de date me turlupine... des idées ??

    Ma première idée est que le problème est dû à la taille de la requête (même si l'erreur ne correspond pas vraiment) qu'en pensez vous ??? avez vous des solutions pour corriger celà ???

    Merci de votre aide dans tout les cas !

    PS: j'ai oublié de préciser que j'utilise ADO 2.5 ou 2.8 (pas vu de diférence avec les deux) et que ma base de données est un fichier Excel.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    En réfléchissant tout seul, je me demande si ce n'est pas parceque certains champs date ne sont pas renseigné dans le document excel et du coup il essaye de créer des enregistrements avec une date à Null et donc ça plante... je vois pas trop comment corriger ça mais si c'est le problème, a amoins je saurais quoi dire à mon boss Qu'en pensez vous ??

    Edit: Aprés essai et remplissage de tous les champs date du fichier avec une valeur, la première erreur est toujours présente... trop injuste

  3. #3
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Moi, je commencerais par une analyse de ma table (ses champs)

    puis regarderais si ce que j'envoie dans ma requête est compatible avec ces champs de ma table

    Et jetterais également un oeil aux enregistrements présents, pour en vérifier la compatibilité...

    et ne chercherais ailleurs qu'après...

    J'irais même (mais je suis fou) à pointer vers une autre table, que je remplirais manuellement (pour être sur) et lancerais ensuite d'abord ma
    requête manuellement (pour voir) puis mon appli avec cette table, pour
    voir également... et ne commencerais qu'après celà à chercher ce qui clocherait !

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Ok je vais faire ça, merci du conseil Mais j'avoue que cette utilisation d'une feuille Excel comme base de données me perturbe un peu... je ne sais même pas comment les pseudo tables sont créees, ni comment elle sont gérées... (c'est pas mon code comme vou sl'aurez surement compris ).

    Je déteste passer derrière quelq'un sans infos ça fait perdre un max de temps...

Discussions similaires

  1. [AC-2007] Erreur d'exécution - Type de données incompatible dans l'expression du critère
    Par subslizer dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 29/12/2013, 22h17
  2. Réponses: 2
    Dernier message: 25/03/2013, 12h15
  3. Réponses: 4
    Dernier message: 29/04/2010, 12h56
  4. Réponses: 9
    Dernier message: 30/10/2008, 12h10
  5. Réponses: 5
    Dernier message: 31/08/2007, 13h01

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