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 :

Créer une fonction qui retourne un booléen


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 137
    Points
    137
    Par défaut Créer une fonction qui retourne un booléen
    Bonjour j'ai crée cette fonction qui bug:

    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
     
    Function JourOuvre(ByVal dteDate As Date) As Boolean
    'Dim DateFerié As Date
     
    Dim resultat As Boolean
     ' Détermine le jour de la semaine à laquelle la date tombe.
    resulat = True
    'If Weekday(dteDate) = 1 Or Weekday(dteDate) = 7 Then
    '1 = dimanche
    '7 = samedi
    '    resultat = False
    'End If
     'jour ferié
    'Datetest = "01-01-2008"
    'If Datetest = dteDate Then
    '    resultat = False
    'End If
    'Datetest = "24-03-2008"
    'If Datetest = dteDate Then
    '    resultat = False
    'End If
    'Datetest = "01-05-2008"
    'If Datetest = dteDate Then
    '    resultat = False
    'End If'
    'Datetest = "08-05-2008"
    'If Datetest = dteDate Then
    '    resultat = False
    'End If
    'Datetest = "12-05-2008"
    'If Datetest = dteDate Then
    '    resultat = False
    'End If
    'Datetest = "14-07-2008"
    'If Datetest = dteDate Then
    '    resultat = False
    'End If
    'Datetest = "15-08-2008"
    'If Datetest = dteDate Then
    '    resultat = False
    'End If
    'Datetest = "11-11-2008"
    'If Datetest = dteDate Then '
    '    resultat = False
    'End If
    'Datetest = "25-12-2008"
    'If Datetest = dteDate Then
    '    resultat = False
    'End If
    JourOuvre = resultat
    End Function

    Comme elle marché pas j'ai tout mis en commentaire et ai forcer sa sortie a True mais malgrée ca quand je la test le resultat est false. La je comprends vraimant pas... qui quelqu'un voit ce qui cloche?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 137
    Points
    137
    Par défaut


    J'avais fait une faute d'orthographe sur ma variable resulat


  3. #3
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Je vois un premier truc : resulat = True

    resultat = True

    pas testé le reste

    Edit : arf...je n'avais pas fait un refresh de la page, pas vu que tu avais déjà trouvé
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 137
    Points
    137
    Par défaut
    Bon, bon... Pour que ce post ne serve pas a rien voici la fonction qui retoune True si la date prise en argument est un jour ouvrable de 2008:

    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
     
    Function JourOuvre(ByVal dteDate As Date) As Boolean
    Dim resultat As Boolean
    resultat = True
     ' Détermine le jour de la semaine à laquelle la date tombe.
    If Weekday(dteDate) = 1 Or Weekday(dteDate) = 7 Then
    '1 = dimanche
    '7 = samedi
        resultat = False
    End If
     'jour ferié
    If dteDate = "01-01-2008" Then
        resultat = False
    End If
    If dteDate = "24-03-2008" Then
        resultat = False
    End If
    If dteDate = "01-05-2008" Then
        resultat = False
    End If
    If dteDate = "08-05-2008" Then
        resultat = False
    End If
    If dteDate = "12-05-2008" Then
        resultat = False
    End If
    If dteDate = "14-07-2008" Then
        resultat = False
    End If
    If dteDate = "15-08-2008" Then
        resultat = False
    End If
    If dteDate = "11-11-2008" Then
        resultat = False
    End If
    If dteDate = "25-12-2008" Then
        resultat = False
    End If
    JourOuvre = resultat
    End Function

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    gentillesse pour gentillesse : voilà comment éviter tous ces ifs :

    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
    Private Sub Command1_Click()
     MsgBox JourOuvre("24/03/2008")
     MsgBox JourOuvre("25/03/2008")
     MsgBox JourOuvre("16/02/2008")
    End Sub
     
    Function JourOuvre(ByVal dteDate As Date) As Boolean
      Dim annee As Integer, i As Integer, toto
      toto = Array("1 1", "3 24", "5 1", "5 8", "5 12", "7 14", "8 15", "11 11", "12 25")
      annee = Year(dteDate)
      If WeekDay(dteDate) = 1 Or WeekDay(dteDate) = 7 Then
        JourOuvre = False: Exit Function
      End If
      For i = 0 To UBound(toto)
        If DateValue(toto(i) & "," & annee) = DateValue(dteDate) Then
          JourOuvre = False: Exit Function
        End If
      Next
      JourOuvre = True
    End Function
    Mais je ne ferais même pas ainsi, personnellement ...
    Je me servirai d'un fichier texte, ce qui me permettrait d'éviter de toucher chaque année à mon code (en dur donc). Je ne modifierais alors que le fichier texte.
    Tu peux facilement adapter ce code avec un fichier texte dont tu extrais un Array avec la fonction Split.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 137
    Points
    137
    Par défaut
    J'avoue, bien jouée pour la prise en compte de n'importe quelle année.

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

Discussions similaires

  1. Test d'une fonction qui retourne un booléen
    Par Loko dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/10/2011, 20h40
  2. [Tableau] Créer une fonction qui retourne un tableau
    Par Imageek dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/01/2009, 16h54
  3. [JUnit] Comment tester une fonction qui retourne un booléen
    Par Raiden1234 dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 15/12/2007, 19h29
  4. Comment créer une fonction qui retourne un tableau?
    Par Dereck07 dans le forum Delphi
    Réponses: 4
    Dernier message: 26/04/2007, 13h16
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

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