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

IHM Discussion :

Afficher une étiquette selon certaines conditions liées à la date du jour [AC-2013]


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Afficher une étiquette selon certaines conditions liées à la date du jour
    Bonjour à tous,

    Je viens sur ce forum vous demander un peu d'aide concernant un problème devant lequel je suis actuellement confronté.
    J'ai créé une étiquette avec la propriété non visible.
    En fonction de la date du jour, j'aimerais afficher, ou pas, cette étiquette, si l'utilisateur se trouve à une date entre le 20/12 et le 10/1 ou entre le 20/03 et le 10/04 ou entre le 20/06 et le 10/07 ou bien encore entre le 20/09 et le 10/10, le cycle trimestriel recommençant au début.
    J'ai tenté de créer une macro sur le modèle suivant, dans la propriété sur ouverture du formulaire :

    Si Date() Entre #20/12/2013# Et #10/01/2014# Ou Entre [...]
    Alors

    Ouvrir Formulaire
    [...]
    Définir propriété
    Nom d'objet
    Propriété --- Visible
    Dans un premier temps, je pense que je ne dois pas utiliser Date() car je souhaite une récurrence d'années en années. Malheureusement, je ne sais pas quelle autre fonction utiliser pour ne prendre en considération que le jour et le mois.

    D'avance, merci de votre aide.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 112
    Points : 5 237
    Points
    5 237
    Par défaut
    Bonjour,

    Il est possible d'utiliser month(date) et day(date)
    Par exemple en les combinant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    jour = 100*month(date)+day(date)
    MonLabel.visible = (jour>... and jour<...) or ...

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonjour vous deux,

    On peut aussi utiliser la fonction DateSerial pour généraliser ton code.

    Voici un exemple


    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
    Option Compare Database
    Option Explicit
     
     
    Public Function DansPeriode(UneDate As Date) As Boolean
      If UneDate >= DateSerial(Year(UneDate), 12, 20) And UneDate <= DateSerial(Year(UneDate) + 1, 1, 10) Then
        DansPeriode = True
        Exit Function
      End If
     
      If UneDate >= DateSerial(Year(UneDate), 3, 20) And UneDate <= DateSerial(Year(UneDate), 4, 10) Then
        DansPeriode = True
        Exit Function
      End If
     
      If UneDate >= DateSerial(Year(UneDate), 6, 20) And UneDate <= DateSerial(Year(UneDate), 7, 10) Then
        DansPeriode = True
        Exit Function
      End If
     
      If UneDate >= DateSerial(Year(UneDate), 9, 20) And UneDate <= DateSerial(Year(UneDate), 10, 10) Then
        DansPeriode = True
        Exit Function
      End If
     
    End Function
    N.B. La date doit être entrée au format anglo-saxon (mois/jour/an).
    Pour tester ouvre la fenêtre d'exécution (CTRL+G)


  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Bonjour à vous deux.
    Merci pour vos réponses.
    Je trouve votre méthode très ingénieuse Nico, ça simplifie énormément d'attribuer chaque jour de l'année à un entier ; Néanmoins, j'essaie d'appliquer le second code dans le but de comprendre un peu mieux les conditions.

    Option Compare Database
    Option Explicit


    Public Function DansPeriode(UneDate As Date) As Boolean
    If UneDate >= DateSerial(Year(UneDate), 12, 20) And UneDate <= DateSerial(Year(UneDate) + 1, 1, 10) Then
    DansPeriode = True
    Exit Function
    End If

    If UneDate >= DateSerial(Year(UneDate), 3, 20) And UneDate <= DateSerial(Year(UneDate), 4, 10) Then
    DansPeriode = True
    Exit Function
    End If

    If UneDate >= DateSerial(Year(UneDate), 6, 20) And UneDate <= DateSerial(Year(UneDate), 7, 10) Then
    DansPeriode = True
    Exit Function
    End If

    If UneDate >= DateSerial(Year(UneDate), 9, 20) And UneDate <= DateSerial(Year(UneDate), 10, 10) Then
    DansPeriode = True
    Exit Function
    End If

    End Function
    J'ai placé ce code dans la propriété sur chargement. Si l'une des conditions est valide, cela doit me faire apparaître mon étiquette. J'ai tenté de réécrire ma condition ( qui est donc validée si la variable DansPeriode est vraie ) sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If DansPeriode = True Then alerte.Visible
    (Alerte étant le nom de mon étiquette), mais cela ne fonctionne pas.
    Est-ce que ce code doit être rentré dans un module pour être appelé à chaque fois lors de la vérification de la condition au chargement du formulaire ou bien est-ce la syntaxe qui est erronée ?
    Merci pour votre implication dans la résolution de ce problème

  5. #5
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 112
    Points : 5 237
    Points
    5 237
    Par défaut
    Je pense qu'il faut un argument à dansperiode !

    Et comme il s'agit de 2 booleens on peut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alerte.visible = dansperiode(date)

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Désolé pour le retard.
    Merci beaucoup de votre aide, cela a été très productif. Pourquoi faire compliqué quand on peut faire simple : la première méthode est 100% fonctionnelle et permet de calculer simplement les dates.

    Encore merci pour votre aide et votre disponibilité !

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 12/04/2010, 17h27
  2. [AC-2003] afficher une valeur selon une condition
    Par Souri84 dans le forum IHM
    Réponses: 3
    Dernier message: 19/11/2009, 11h10
  3. Réponses: 1
    Dernier message: 22/06/2009, 19h13
  4. Afficher une MsgBox selon une condition
    Par arkorrigan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/05/2008, 14h08
  5. afficher une image selon condition
    Par sakia dans le forum VBA Access
    Réponses: 4
    Dernier message: 04/10/2007, 17h40

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