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 :

Masquer un formulaire avec un etat


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 110
    Points : 42
    Points
    42
    Par défaut Masquer un formulaire avec un etat
    Bonsoir
    J’ai un état avec une liste de noms.
    Quand je clic sur un nom, j’ouvre un formulaire pour modifier ou ajouter une date.
    Les dates encadrées en rouge dans le formulaire sont chargées via une procédure à l’ouverture de celui-ci.
    Il arrive comme en 2013 qu’un lundi soit férié, alors je dois changer la date.
    Le 11/11/2013 étant un lundi je change manuellement la date pour le 14/11/2013.
    Apres j’utilise mon formulaire normalement.
    Le problème c’est que quand je ferme mon formulaire pour changer de nom, la modification de date disparait puisque qu’à l’ouverture de mon formulaire il y a une procédure.
    J’ai essayé comme vu sur le forum de cacher le formulaire « Me.visible=false »
    Et de mettre dans le code de mon état une cde avec if pour évité le bug à la première ouverture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Forms !NomDeMonFormulaire.visible=false then  Forms !NomDeMonFormulaire.visible=true
    Et ma procedure

    J’ai un bug qui me dit qu’il ne trouve pas mon formulaire
    Cordialement

    PS la commande openArgs fonctionne avec un état pas encore essayé
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Pourquoi changer la date manuellement.
    Je suppose que tu calcules les dates suivant une boucle.
    Ne serait-il pas plus facile de repérer dans la boucle si la date en cours de calcul correspond à une date fériée et de ce fait ajouter un certain nombre de jours à cette date.

    Cela reste une idée qui me semble simple à mettre en oeuvre

    Bonne continuation

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 110
    Points : 42
    Points
    42
    Par défaut Masquer un formulaire avec un etat
    bonjour,

    la boucle sur les date jamais fait.
    mon premier champ indique une procédure pour trouver 1 lundi de novembre et après j'ajoute 7 jours çà chaque fois.
    cordialement

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 110
    Points : 42
    Points
    42
    Par défaut Masquer un formulaire avec un etat
    re bonjour,

    j'ai suivi ton conseil, et j'essai de faire une boucle pour donnée une valeur à mes 17 dates.
    j'arrive bien à faire fonctionner ma boucle mais :
    1) je ne vois pas comment affecter mes valeur à ValDte1, ValDte2, ValDte3 ,etc
    2) a la ligne 13, il me donne bien la date du 11/11/2013 mais n'applique pas le IF

    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
    Private Sub Form_Open(Cancel As Integer)
    Dim SelectAnnée
    Dim Dte As Control
    ValDte1 = firstDay(1, 11, 2010) 'lui donner le 1er mardi de novembre
     
    For i = 1 To 17
    Set Dte = Me.Controls("ValDte" & i)
    ValDte2 = Dte + 7
     
    Next i
    SelectAnnée = Format(Date, "yyyy")
       If ValDte1 = ("1/" & 11 & "/" & SelectAnnée) Then ValDte1 = ValDte1 + 3
           If ValDte2 = ("11/" & 11 & "/" & SelectAnnée) Then ValDte2 = ValDte2 + 3
     
     
    'TouteLesDates.SetFocus
     
    Exit Sub
    End Sub
    Cordialement

  5. #5
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Peut-être en modifiant comme ci-dessous

    Code VBA : 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
     
    Private Sub Form_Open(Cancel As Integer)
    ' Déclaration des variables
    Dim DateBase as Date
    Dim i as Integer
     
    ' Initialisation de la date de départ
    DateBase = CDate("01/11/" & Year(Date))
     
    ' Début de la boucle 
    For i = 1 To 17
        ' Test pour vérifier que la date en cours n'est pas un jour férié
        If DateBase = CDate("01/11/" & Year(Date)) Or CDate("11/11/" & Year(Date)) Then
            ' Vérifie s'il s'agit d'un Lundi        
            If WeekDay(DateBase,1) = vbMonday then
                ' Si oui, ajoute 3 jour à la date en cours et l'inscrit dans le controle
                Me.Controls("ValDte" & i) = DateAdd("dddd",3,DateBase)
            Else
                ' Inscrit la date dans le controle
                Me.Controls("ValDte" & i) = DateBase
            End if
        Else
            ' S'il ne s'agit pas d'un jour férié, inscrit la date dans le controle
            Me.Controls("ValDte" & i) = DateBase
        End If
        ' Ajoute 7 jours à la date en cours
        DateAdd("dddd",7,DateBase)
    Next i
     
    End Sub

    Je n'ai pas pu tester

    Bonne continuation

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 110
    Points : 42
    Points
    42
    Par défaut Masquer un formulaire avec un etat
    bonjour,

    merci pour la réponse, je teste en rentrant ce soir. je te tiens au courant

    cordialement

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 110
    Points : 42
    Points
    42
    Par défaut Masquer un formulaire avec un etat
    re bjr,

    je viens de tester, il me met erreur sur la ligne 27
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateAdd("dddd",7,DateBase)
    erreur de compilation erreur systeme

    cordialement

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 110
    Points : 42
    Points
    42
    Par défaut Masquer un formulaire avec un etat
    bonsoir,

    a la ligne 17 tu ajoutes 3 a la date pour lui donnée la date 04/11/2013 1er mardi de novembre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("ValDte" & i) = DateAdd("dddd",3,DateBase)
    mais en 2014 le 1er mardi est 03/11/2014

    cordialement

  9. #9
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Je te prie de m'excuser, j'ai fait une erreur idiote

    il faut lire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ' Ajoute 7 jours à la date en cours
     DateBase = DateAdd("d",7,DateBase
    D'autre part, j'ajoute 3 jours à la date si le 1er Novembre est un lundi

    Autre petite correction :
    il n'y a que 1 seul "d" dans l'argument de la fonction DateAdd. Je te remets ci-dessous la procédure corrigée (voilà ce qui se passe quand on ne controle pas )

    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
     
     
    Private Sub Form_Open(Cancel As Integer)
    ' Déclaration des variables
    Dim DateBase as Date
    Dim i as Integer
     
    ' Initialisation de la date de départ
    DateBase = CDate("01/11/10")
     
     
    ' Début de la boucle 
    For i = 1 To 17
        ' Test pour vérifier que la date en cours n'est pas un jour férié
        If DateBase = CDate("01/11/10") And CDate("11/11/10") Then
            ' Vérifie s'il s'agit d'un Lundi        
            If WeekDay(DateBase,1) = vbMonday then
                ' Si oui, ajoute 3 jours à la date en cours et l'inscrit dans le controle
                Me.Controls("ValDte" & i) = DateAdd("d",3,DateBase)
            Else
                ' Inscrit la date dans le controle
                Me.Controls("ValDte" & i) = DateBase
            End if
        Else
            ' S'il ne s'agit pas d'un jour férié, inscrit la date dans le controle
            Me.Controls("ValDte" & i) = DateBase
        End If
        ' Ajoute 7 jours à la date en cours
        DateAdd("d",7,DateBase)
    Next i
     
    End Sub
    J'ai testé, cela fonctionne.
    1. En fixant la première date au 01/01/10
    2. En généralisant la date en utilisant la fonction Year(Date)


    D'autre part, j'ai ajouté 3 parce que tu indiquais que :
    Citation Envoyé par Travanca
    Il arrive comme en 2013 qu’un lundi soit férié, alors je dois changer la date.
    Le 11/11/2013 étant un lundi je change manuellement la date pour le 14/11/2013.
    Bonne continuation

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 110
    Points : 42
    Points
    42
    Par défaut Masquer un formulaire avec un etat
    Bonjour,
    Merci pour ton aide et ta patience.

    En fait j’utilise firstDay parce que ma première date de novembre est toujours le 1er mardi .

    cordialement

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

Discussions similaires

  1. [AC-2003] probleme avec un formulaire et un etat
    Par savannah33 dans le forum IHM
    Réponses: 2
    Dernier message: 28/08/2010, 22h04
  2. Etats et formulaires avec Eclipse
    Par cigala5555 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 17/05/2010, 22h25
  3. Memoriser l'etat des cases a cocher d'un formulaire avec pagination
    Par belaggoun2000 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/02/2010, 15h23
  4. Masquer un texte avec des champs formulaire
    Par JaZZmine dans le forum VBA Word
    Réponses: 6
    Dernier message: 25/09/2008, 22h22
  5. Réponses: 3
    Dernier message: 07/04/2008, 19h42

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