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 avec Requery


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème avec Requery
    Bonjour à tous,

    Tout d'abord et avant de vous exposer mon problème, je vous assure que j'ai chercher sur le forum, dans la FAQ, mais que ce que j'y ai trouvé n'a pas marché.

    Voila, j'ai un formulaire avec plusieurs champs, dont ceux-ci :
    DateEchéance
    DélaiPréavis (qui est une zone de liste déroulante)
    DatePréavis

    Je souhaiterai que lorsque je rentre une date d'échéance, puis quand je choisis un délai de préavis, le champ DatePréavis se mette à jour automatiquement (même si je ne touche pas à la date d'échéance, mais dès que je change de délai de préavis dans la zone de liste).

    J'ai déjà entré ce code comme procédure évenementielle "Après Mise à jour" pour DateEchéance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub DateEchéance_AfterUpdate()
    If DélaiPréavis = "1 mois" Then
    DatePréavis = DateAdd("m", -1, [DateEchéance])
    ElseIf DélaiPréavis = "2 mois" Then DatePréavis = DateAdd("m", -2, [DateEchéance])
    Else
    DatePréavis = DateAdd("m", -3, [DateEchéance])
    End If
    End Sub
    Et comme j'ai mis comme valeur par défaut "1 mois" pour DélaiPréavis, il suffit que je rentre une date d'échéance pour qu'apparaisse la date limite de préavis dans DatePréavis.

    L'ennui, c'est que lorsque je veux changer par exemple de 1 mois à 2 mois ou à 3 mois, le champ DatePréavis ne se met pas à jour.

    J'ai essayé le code suivant comme procédure évenementielle "Sur changement" et aussi "Après MAJ" pour DélaiPréavis, mais ça ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me![DatePréavis].Requery

    J'espère que je me suis fait comprendre..

    Merci d'avance pour vos réponses!

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 355
    Points
    34 355
    Par défaut
    bonjour,
    je crois qu'il s'agit de la définition du controls qui n'est pas bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub DateEchéance_AfterUpdate()
    If Me.DélaiPréavis = "1 mois" Then
    Me.DatePréavis = DateAdd("m", -1, Me.DateEchéance)
    ElseIf Me.DélaiPréavis = "2 mois" Then Me.DatePréavis = DateAdd("m", -2, Me.DateEchéance)
    Else
    Me.DatePréavis = DateAdd("m", -3, Me.DateEchéance)
    End If
    End Sub
    non ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Non non, le code que j'ai ecris fonctionne, il permet de mettre à jour le champs DatePréavis en fonction du champ DateEchéance.

    Mais ce que je voudrai, c'est que le champs DatePréavis soit également mis à jour lorsque je change de choix dans la la zone de liste déroulante DélaiPréavis.

    En fait, lorsque j'entre une date d'échéance, j'obtiens automatiquement une date de préavis, grâce au code que j'ai écris, et grâce au fait que j'ai défini une valeur par défaut de 1 mois (donc il me sort comme date de préavis : date d'échéance - 1 mois).

    Mais ce que je voudrai c'est que lorsque je change "1 mois" dans la zone de liste déroulante, pour choisir "2 mois" ou "3 mois", automatiquement le champs DatePréavis se mette à jour.

    Je crois savoir que c'est Requery qu'il faut utiliser, mais ça ne marche pas

    Des idées?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 355
    Points
    34 355
    Par défaut
    salut,
    ajouter le .value peut-il servir ici ou pas ?
    voir repaint et refresh éventuellement aussi.

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 155
    Points : 196
    Points
    196
    Par défaut
    Bonjour,

    Je crois qu'il faut mettre le même code dans DélaiPréavis_AfterUpdate que dans DateEchéance_AfterUpdate

    Peut-être que ce code pourrait figurer dans un Private Sub... du module du formulaire et être appelé par DélaiPréavis_AfterUpdate et DatEchéance_AfterUpdate.

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos réponses!

    J'ai eu la même idée qu'Alain, et ça a marché.

    Voici donc le code utilisé :

    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
    Private Sub DateEchéance_AfterUpdate()
    If DélaiPréavis = "1 mois" Then
    DatePréavis = DateAdd("m", -1, [DateEchéance])
    ElseIf DélaiPréavis = "2 mois" Then DatePréavis = DateAdd("m", -2, [DateEchéance])
    Else
    DatePréavis = DateAdd("m", -3, [DateEchéance])
    End If
     
    End Sub
     
    Private Sub DélaiPréavis_Change()
    If DélaiPréavis = "1 mois" Then
    DatePréavis = DateAdd("m", -1, [DateEchéance])
    ElseIf DélaiPréavis = "2 mois" Then DatePréavis = DateAdd("m", -2, [DateEchéance])
    Else
    DatePréavis = DateAdd("m", -3, [DateEchéance])
    End If
    End Sub
    Desormais, dès que j'opte pour l'un des trois choix de la zone de liste déroulante, le champ "DatePréavis" se met à jour automatiquement. Pratique

    Encore merci à tous!

Discussions similaires

  1. [AC-2010] Problème avec la fonction Requery VBA
    Par redojackson dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/06/2013, 11h43
  2. [DAO] problème avec Requery sur mon recordset
    Par vcattin dans le forum VBA Access
    Réponses: 8
    Dernier message: 03/04/2007, 23h08
  3. Problème avec Requery
    Par Gali dans le forum Access
    Réponses: 3
    Dernier message: 25/04/2006, 16h42
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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