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 :

Problème sur une Fonction Personnalisée [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre actif Avatar de Pittouti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2012
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 246
    Points : 257
    Points
    257
    Par défaut Problème sur une Fonction Personnalisée
    Bonjour à Tous,

    j'ai un petit soucis au niveau d'une fonction qui calcule un engagement de Date.

    NB: je n'ai pas de message d'erreur

    d'après mon analyse la disposition des "IF" dans mon code pose problème. je m'explique :

    le résultat ne traite que la première "IF" et condamne la suite. Merci de m'aider svp car c'est un point bloquant pour l'avancement.

    Merci d'avance

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Function Engagement(expression) As Date
    Dim liberation, EngagementBrute, FINSHIFTS, FINSHIFTSD, ShiftDim As Date
    Dim JourDemande, ResteDim As Integer
    Dim Ecart, EcartSD As Double
     
     
     
    liberation = expression
    JourDemande = Weekday(liberation, vbMonday)
     
    FINSHIFTS = liberation + (1) - (1 / 24)
     
     
     
    EngagementBrute = liberation + 6 / 24
     
     
     
    Ecart = FINSHIFTS - EngagementBrute
     
    If JourDemande = 6 Then
     
    FINSHIFTSD = (Int(liberation) + 1) - (11 / 24)
    EcartSD = FINSHIFTSD - EngagementBrute
     
        If EcartSD >= 0 Then
     
        Engagement = EngagementBrute
     
        Else
     
        If EcartSD < 0 Then
     
        Engagement = EngagementBrute + (11 / 24) + (24 / 24) + (6 / 24)
     
        End If
        End If
     
    If JourDemande = 7 Then
     
    ShiftDim = Int(liberation) + 1
    ResteDim = ShiftDim - Now()
     
    Engagement = liberation + (ResteDim / 24) + (6 / 24) + (6 / 24)
     
    If JourDemande >= 1 And JourDemande <= 5 Then
     
    If Ecart >= 0 Then
     
    Engagement = EngagementBrute
     
    Else
     
    If Ecart < 0 Then
     
    Engagement = EngagementBrute + 7 / 24
    End If
    End If
     
     
     
     
    End If
    End If
    End If
    End Function
    ________________________________________________________________________________________

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.
    Merci, c'est toujours sympa de recevoir des +1 de votre part

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour indenter son code aide à y voir plus clair.

    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
    Function Engagement(expression) As Date
        Dim liberation, EngagementBrute, FINSHIFTS, FINSHIFTSD, ShiftDim As Date
        Dim JourDemande, ResteDim As Integer
        Dim Ecart, EcartSD As Double
        liberation = expression
        JourDemande = Weekday(liberation, vbMonday)
        FINSHIFTS = liberation + (1) - (1 / 24)
        EngagementBrute = liberation + 6 / 24
        Ecart = FINSHIFTS - EngagementBrute
     
        If JourDemande = 6 Then 'Ce test conditionne TOUT le reste de l'éxécutio,
            FINSHIFTSD = (Int(liberation) + 1) - (11 / 24)
            EcartSD = FINSHIFTSD - EngagementBrute
     
            If EcartSD >= 0 Then
                Engagement = EngagementBrute
            Else
     
                If EcartSD < 0 Then
                    Engagement = EngagementBrute + (11 / 24) + (24 / 24) + (6 / 24)
                End If
            End If
     
            If JourDemande = 7 Then
                ShiftDim = Int(liberation) + 1
                ResteDim = ShiftDim - Now()
                Engagement = liberation + (ResteDim / 24) + (6 / 24) + (6 / 24)
     
                If JourDemande >= 1 And JourDemande <= 5 Then
     
                    If Ecart >= 0 Then
                        Engagement = EngagementBrute
                    Else
     
                        If Ecart < 0 Then
                            Engagement = EngagementBrute + 7 / 24
                        End If
     
                    End If
     
                End If
     
            End If
     
        End If
     
    End Function
    La ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If JourDemande = 6 Then 'Ce test conditionne TOUT le reste de l'éxécution
    Indique que tu ne fais quelque chose que si JourDemande = 6, sinon tu ne fais strictement rien.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre actif Avatar de Pittouti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2012
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 246
    Points : 257
    Points
    257
    Par défaut
    Bonjour marot,

    oui je sais qu'il conditionne le reste des Test, mais j'ai voulu savoir pourquoi et que devrais-je faire
    ________________________________________________________________________________________

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.
    Merci, c'est toujours sympa de recevoir des +1 de votre part

  4. #4
    Membre actif Avatar de Pittouti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2012
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 246
    Points : 257
    Points
    257
    Par défaut
    Bonjour marot,

    j'ai trouvé la faille !!!! il manquait 02 "Else"

    merci quand même
    ________________________________________________________________________________________

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.
    Merci, c'est toujours sympa de recevoir des +1 de votre part

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

Discussions similaires

  1. [XL-2007] Help sur une fonction personnalisée NBCOLOR
    Par sua47 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/02/2012, 10h09
  2. problème sur une Fonction récursive
    Par bernie74 dans le forum Développement
    Réponses: 4
    Dernier message: 21/11/2011, 12h45
  3. probléme sur une fonction
    Par titeufdev dans le forum PL/SQL
    Réponses: 3
    Dernier message: 11/01/2011, 09h36
  4. [String]Problème sur une fonction de récurrence
    Par hibou107 dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 13/04/2010, 15h53
  5. [PostgreSQL] [PostGreSQL] problème sur une fonction avec connexion
    Par roblescriso dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/06/2008, 18h03

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