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

Access Discussion :

Incompatibilité de type


Sujet :

Access

  1. #1
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 249
    Points : 94
    Points
    94
    Par défaut Incompatibilité de type
    Bonjour, voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim PERIODE01 As String
    Dim PERIODE02 As String
    PERIODE01 = "& ANNEE &" & "0" & "& TRIMESTRE &"
    PERIODE02 = IIf("& TRIMESTRE &" = 1, "& ANNEE &" & "0" & "& TRIMESTRE &" + 1, 0)
    Il me dit erreur sur la ligne PERIODE02 ?? Pourquoi ?

  2. #2
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 249
    Points : 94
    Points
    94
    Par défaut
    L'erreur est la suivante :

    Incompabilité de type erreur n°13

    Pour quoi donc cette erreur?? Merci d'avance

  3. #3
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 249
    Points : 94
    Points
    94
    Par défaut
    Mes variables sont déclarées comme cela si ça peut vous aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim PERIODE01 As String
    Dim PERIODE02 As String
    Dim TRIMESTRE As String
    Dim ANNEE As String
    ANNEE = Year(Date)
    TRIMESTRE = IIf(Month(Date) <= 3, 1, IIf(Month(Date) <= 6, 2, IIf(Month(Date) <= 9, 3, IIf(Month(Date) <= 12, 4,0))))
    PERIODE01 = "& ANNEE &" & "0" & "& TRIMESTRE &"
    PERIODE02 = IIf("& TRIMESTRE &" = 1, "& ANNEE &" & "0" & "& TRIMESTRE &" + 1, IIf("& TRIMESTRE &" = 2, "& ANNEE &" & "0" & "& TRIMESTRE &" + 1, IIf("& TRIMESTRE &" = 3, "& ANNEE &" & "0" & "& TRIMESTRE &" + 1, IIf("& TRIMESTRE &" = 4, "& ANNEE &" + 1 & "0" & "& TRIMESTRE &" - 3))))

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    PERIODE02 = IIf("& TRIMESTRE &" = 1, "& ANNEE &" & "0" & "& TRIMESTRE &" + 1, 0)
    Que viennent faire tous ces " " ?

  5. #5
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    Je verais plus un truc comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PERIODE01 = ANNEE & "0" & TRIMESTRE
    PERIODE02 = IIf(TRIMESTRE = 1, annee & "0" & TRIMESTRE + 1, _
    IIf(TRIMESTRE = 2, annee & "0" & TRIMESTRE + 1, _
    IIf(TRIMESTRE = 3, annee & "0" & TRIMESTRE + 1, _
    IIf(TRIMESTRE = 4, annee + 1 & "0" & TRIMESTRE - 3, 0))))
    Et dans ton imbrication de IIf il te manque la clause si pas égale.

  6. #6
    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,

    A 4 IIf imbriqués, on peut préférer la fonction SWITCH.

    Bon courage,

    pgz

  7. #7
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Dolphy35, bonjour,

    Du coup, on pourrait pas simplifier ça avec un Choose ?
    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PERIODE01 = ANNEE & "0" & TRIMESTRE
    PERIODE02 = Choose(TRIMESTRE, annee & "0" & TRIMESTRE + 1, _
                                  annee & "0" & TRIMESTRE + 1, _
                                  annee & "0" & TRIMESTRE + 1, _
                                  annee + 1 & "0" & TRIMESTRE - 3, _
                                  0)

  8. #8
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Citation Envoyé par Papy Turbo
    Dolphy35, bonjour,

    Du coup, on pourrait pas simplifier ça avec un Choose ?
    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PERIODE01 = ANNEE & "0" & TRIMESTRE
    PERIODE02 = Choose(TRIMESTRE, annee & "0" & TRIMESTRE + 1, _
                                  annee & "0" & TRIMESTRE + 1, _
                                  annee & "0" & TRIMESTRE + 1, _
                                  annee + 1 & "0" & TRIMESTRE - 3, _
                                  0)
    Merci Papy Turbo je ne connaissait pas Choose.

  9. #9
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Encore plus simple puisque apparement seul le trimestre 4 pose problème


    IIf(TRIMESTRE = 4, annee + 1 & "0" & TRIMESTRE - 3, annee & "0" & TRIMESTRE + 1)

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    pas certain d'avoir compris

    mais year(année)-base où base est la premiere année me donne année

    et mod(month(date),3)+ 1 me donne le trimestre

  11. #11
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 249
    Points : 94
    Points
    94
    Par défaut
    Merci à tous pour vos réponse et l'utilisation du choose et devenu normale pour moi grâce à vous merci encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim TRIMESTRE As String
    Dim ANNEE As String
    Dim PERIODE01 As String
    Dim PERIODE02 As String
    ANNEE = Year(Date)
    TRIMESTRE = IIf(Month(Date) <= 3, 1, IIf(Month(Date) <= 6, 2, IIf(Month(Date) <= 9, 3, IIf(Month(Date) <= 12, 4, 0))))
    PERIODE01 = ANNEE & "0" & TRIMESTRE
    PERIODE02 = Choose(TRIMESTRE, ANNEE & "0" & TRIMESTRE + 1, ANNEE & "0" & TRIMESTRE + 1, ANNEE & "0" & TRIMESTRE + 1, ANNEE + 1 & "0" & TRIMESTRE - 3)
    en fait ce code me renvois pour PERIODE01 200602 car aujourd'hui nous somme l'an 2006 et 2nd trimestre
    la PERIODE02 me renvois 200603 car c'est le trimestre suivant et ainsi de suite pour avoir les 4 prochains trimestres.

    Voilà salut à tous le monde des developpeurs !!!

  12. #12
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Tu crois pas t'en sortir comme ça, quand même ?

    Tofalu a fait remarquer + haut qu'il n'y avait que le 4ème trimestre qui diffère des autres.

    Quant au calcul du trimestre, tu peux peut être essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim TRIMESTRE As String
    Dim ANNEE As String
    Dim PERIODE01 As String
    Dim PERIODE02 As String
    ANNEE = Year(Date)
       'division entière "\" pour renvoyer un entier de 1 à 4
       TRIMESTRE = ((Month(Date)-1)\3)+1
       PERIODE01 = ANNEE & "0" & TRIMESTRE
       If TRIMESTRE < 4 Then
           PERIODE02 = ANNEE & "0" & (TRIMESTRE + 1)
       Else
           PERIODE02 = (ANNEE - 1) & "01"
       End If
    Ca devrait être plus lisible pour toi, quand tu reliras ton code dans 6 mois, non ?

  13. #13
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Pour le calcul du trimestre il y a aussi la fonction DatePart, avec interval = "q"

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

Discussions similaires

  1. Incompatibilité de type ListBox
    Par priest69 dans le forum Access
    Réponses: 1
    Dernier message: 16/11/2005, 11h19
  2. Message incompatibilité de type
    Par Daniel MOREAU dans le forum Access
    Réponses: 5
    Dernier message: 10/10/2005, 20h57
  3. incompatibilité de type
    Par zooffy dans le forum Access
    Réponses: 2
    Dernier message: 13/06/2005, 15h12
  4. Incompatibilité de types dans un formulaire
    Par ahage4x4 dans le forum ASP
    Réponses: 3
    Dernier message: 03/05/2005, 15h39
  5. [XSD] Incompatibilité des types xs:ID et xs:IDREF ?
    Par Cpt.FLAM dans le forum Valider
    Réponses: 6
    Dernier message: 08/04/2005, 14h54

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