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

VBA Access Discussion :

Erreur de compilation sur function DateEchéance [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 287
    Par défaut Erreur de compilation sur function DateEchéance
    Bonsoir tout le monde,
    Je suis passé depuis peu sur Office 2007.
    Actuellement, je travaille sur une nouvelle bdd Acc2007 et me voilà confronté à un problème d'"erreur de compilation" dans un calcul de requête.
    Sur mes bdd Acc2003, je n'étais pas confronté à ce problème.
    Dans un module, j'ai deux fonctions :
    1ère -
    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
     
    Public Function DateEchéance(Début, durée, FinDemois, Jour) As Variant
    Dim E, d1, d2
    If Not IsNull(Début) Then
    d1 = Int(nullzéro(durée) / 30)
    d2 = nullzéro(durée) - (d1 * 30)
    E = DateAdd("m", d1, Début)
    If d2 > 0 Then
    E = DateAdd("d", d2, E)
    End If
    If nullzéro(FinDemois) = True Then
    E = DateAdd("m", 1, DateAdd("d", -Day(E) + 1, E))
    E = DateAdd("d", nullzéro(Jour), DateAdd("d", -1, E))
    End If
    Else
    E = 0
    End If
    DateEchéance = E
    End Function
    2ème -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public Function nullzéro(val) As Variant
    Dim F
    If IsNull(val) Then
    F = 0
    Else
    F = val
    End If
    nullzéro = F
    End Function
    Dans une requête, j'appelais donc la fonction DateEchéance sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Date_échéance: DateEchéance([Date_deb];[nb_jours];[fin_mois];[le])

    Date_deb est un champ de type date
    nb_jours un champ de type entier long
    fin_mois un champ de type Nui/Non
    le un champ de type entier long

    Si vous avez une idée du problème, je prends.
    Merci d'avance.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Par défaut
    Bonjour,

    Ton erreur de compilation peut provenir de beaucoup de choses :
    - les options en haut du module (option explicit qui forcent à déclarer tous les types de données y compris de tes variables)

    Pour éclaircir la cause il faudrait que tu essaies de compiler le module (dans l'éditeur VBa bouton débogage puis compiler) et que tu vérifies sur quelle ligne porte l'erreur.

  3. #3
    Expert éminent

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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Public Function DateEchéance(Début, durée, FinDemois, Jour) As Variant
    Dim E, d1, d2
    Tout déclarer en Variant avec des accents dans les déclarations, c'est le must du "A pas faire"

    Tu as vérifié que tu n'as pas une référence manquante ?

    Au passage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function nullzéro(val) As Variant
    Dim F
    If IsNull(val) Then
    F = 0
    Else
    F = val
    End If
    nullzéro = F
    End Function
    Revient à

  4. #4
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 287
    Par défaut
    Bonsoir,
    Citation Envoyé par Tofalu Voir le message
    Tout déclarer en Variant avec des accents dans les déclarations, c'est le must du "A pas faire"
    Je fais mes premiers pas, alors ... l'erreur est humaine.
    Tu as vérifié que tu n'as pas une référence manquante ?
    Oui, aucunes n'est manquante.
    Au passage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function nullzéro(val) As Variant
    Dim F
    If IsNull(val) Then
    F = 0
    Else
    F = val
    End If
    nullzéro = F
    End Function
    Revient à
    Merci pour vos remarques, j'ai amélioré 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
    Option Compare Database
    Public Function Date_Echeance(Date_deb As Date, nb_jours As Integer, fin_mois As Boolean, jour_le As Integer)
    Dim E, d1, d2
    If Not IsNull(Date_deb) Then
        d1 = Int(Nz(nb_jours, 0) / 30)
        d2 = Nz(nb_jours, 0) - (d1 * 30)
        E = DateAdd("m", d1, Date_deb)
        If d2 > 0 Then
            E = DateAdd("d", d2, E)
        End If
        If Nz(fin_mois, 0) = True Then
            E = DateAdd("m", 1, DateAdd("d", -Day(E) + 1, E))
            E = DateAdd("d", Nz(jour_le, 0), DateAdd("d", -1, E))
        End If
    Else
    E = 0
    End If
    Date_Echeance = E
    End Function
    Cordialement

  5. #5
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 287
    Par défaut
    Bonsoir,
    Citation Envoyé par Oleff Voir le message
    Bonjour,

    Ton erreur de compilation peut provenir de beaucoup de choses :
    - les options en haut du module (option explicit qui forcent à déclarer tous les types de données y compris de tes variables)
    Non, "Option explicit" ne s'y trouve pas.

    Pour éclaircir la cause il faudrait que tu essaies de compiler le module (dans l'éditeur VBa bouton débogage puis compiler) et que tu vérifies sur quelle ligne porte l'erreur.
    ]Merci, j'ai trouvé. Une ligne dans un autre module qui a priori perturbait le tout.

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

Discussions similaires

  1. Erreur de compilation sur une librairie en mode debug
    Par bakaneko dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/05/2006, 16h32
  2. Erreur de compilation sur std::string avec Dev C++
    Par dada57 dans le forum Dev-C++
    Réponses: 4
    Dernier message: 20/03/2006, 18h06
  3. Erreur de compilation sur gaim-vv avec gstrreamer
    Par ZiMo dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 30/12/2005, 10h41
  4. Erreur à la compile sur VC++ 6
    Par norwy dans le forum Développement
    Réponses: 1
    Dernier message: 10/11/2005, 13h51
  5. Delphi 7 update 1 - Erreur de compil sur SQLExpr
    Par RamDevTeam dans le forum Bases de données
    Réponses: 14
    Dernier message: 02/11/2005, 17h44

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