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 :

Pourquoi mon code ne marche pas dans l'événement "Dirty" [AC-2013]


Sujet :

IHM

  1. #1
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut Pourquoi mon code ne marche pas dans l'événement "Dirty"
    Bonjour membres du forum !

    Le code suivant permet de contrôler une zone de liste déroulante en cas de modification:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ListeClasseFrancais_Dirty(Cancel As Integer)
    If MsgBox("ATTENTION !!" & vbCrLf & "VOULEZ-VOUS CHOISIR" & vbCrLf & "UNE AUTRE CLASSE ?", vbQuestion + vbYesNo + vbDefaultButton2, "CLASSE FRANÇAISE") = vbNo Then
        Cancel = True
        Me.ListeClasseFrancais.Requery
    End If
    End Sub
    dans l'événement "si modification" de la zone de liste déroulante (Combobox) du formulaire.
    Cependant, le code ci dessus ne renvoie aucun message d'erreur.
    Constat: il ne marche pas.
    Aidez moi à y trouver la solution.
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonjour,
    il ne faut pas confondre "Si modification" (Dirty) et "Après modification" (After_Update): Dirty ne se déclenche pas avec une zone de liste indépendante mais uniquement avec une zone de liste associée à un champ de la source (table ou requête) du formulaire: un choix dans une liste indépendante ne modifie pas une donnée si il n'y pas de source contrôle:

    Nom : _0.JPG
Affichages : 285
Taille : 40,3 Ko

    Je te conseille d'utiliser l'évènement "Après modification" (After_Update) ou "Sur Clic" (Click)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonsoir tee_grandbois !
    Bonsoir membres du forum !

    Je viens d'appliquer le code à la zone de liste déroulante "ListeClasseFrancais" dont le contenu est
    basé sur les éléments de la table "CLASSE_FRANCAIS".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ListeClasseFrancais_Click()
    Dim Cancel As Integer
    If MsgBox("ATTENTION !!" & vbCrLf & "VOULEZ-VOUS CHOISIR" & vbCrLf & "UNE AUTRE CLASSE ?", vbQuestion + vbYesNo + vbDefaultButton2, "CLASSE FRANÇAISE") = vbNo Then
        'Me.ListeClasseFrancais = ""
        Cancel = True
        Me.ListeClasseFrancais.Requery
    End If
     
    End Sub
    Voici les captures d'écran du résultat obtenu:

    Nom : COMBO_BOX_1.PNG
Affichages : 251
Taille : 10,6 Ko

    Nom : COMBO_BOX_2.PNG
Affichages : 251
Taille : 14,5 Ko

    Mon objet est d'éviter le changement de donnée dans le cas où je clique sur le bouton "Non" de la boite de message qui s'affiche.
    Sinon, accepter le changement de donnée en cas de clique sur le bouton "Oui" de la boite de message qui s'affiche.
    Ce qui n'est pas le cas pour l'instant; le changement s'effectue dans les deux cas.

    Quel est la solution ?

    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    il n'y a aucun effet sur le Cancel avec l'évènement Clic d'un contrôle indépendant. Il va falloir envisager une autre manière de faire.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    il n'y a aucun effet sur le Cancel avec l'évènement Clic d'un contrôle indépendant. Il va falloir envisager une autre manière de faire.
    Bonsoir tee_grandbois !
    Bonsoir membres du forum !

    J'ai essayé avec Evénement BeforeUpdate ne marche pas non plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub classeFrancais_BeforeUpdate(Cancel As Integer)
    'Dim Cancel As Integer
    If MsgBox("ATTENTION !!" & vbCrLf & "VOULEZ-VOUS CHOISIR" & vbCrLf & "UNE AUTRE CLASSE ?", vbQuestion + vbYesNo + vbDefaultButton2, "CLASSE FRANÇAISE") = vbNo Then
        'Me.ListeClasseFrancais = ""
        Cancel = True
       ' Me.classeFrancais.Requery
    End If
     
    End Sub
    Pièce jointe

    Cordialement.
    Fichiers attachés Fichiers attachés
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonsoir,
    que ce soit clair une bonne fois pour toutes: on ne peut pas modifier la valeur d'une liste déroulante (avant mise à jour ou encore moins sur clic) si celle-ci est indépendante.
    Le code ci-dessous ne fonctionnera que si la liste déroulante est basée sur un champ de la table du formulaire, autrement dit: la propriété source contrôle de la liste doit être renseignée car il s'agit d'annuler la modification d'une donnée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub classeFrancais_BeforeUpdate(Cancel As Integer)
    If MsgBox("ATTENTION !!" & vbCrLf & "VOULEZ-VOUS CHOISIR" & vbCrLf & "UNE AUTRE CLASSE ?", vbQuestion + vbYesNo + vbDefaultButton2, "CLASSE FRANÇAISE") = vbYes Then
        Cancel = True
    End If
     
    End Sub
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut Résultat
    Bonjour membres du forum !
    Finalement, j'ai créé une requête interne à mon formulaire. Et ça marche.
    Pièce jointe.
    Merci infiniment tee_grandbois,
    merci à toute la famille developpez.net.
    Cordialement
    Fichiers attachés Fichiers attachés
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

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

Discussions similaires

  1. [AC-2007] pourquoi mon code ne marche pas
    Par erebios dans le forum VBA Access
    Réponses: 16
    Dernier message: 04/05/2010, 23h43
  2. diaporama: pourquoi mon code ne marche pas
    Par secondechance dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/05/2009, 02h04
  3. Réponses: 2
    Dernier message: 31/07/2006, 08h48
  4. Pourquoi mon script ne marche pas?
    Par amarcil dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/05/2006, 21h37
  5. [VBA-E] mon code ne marche pas sur un autre PC
    Par yannph dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/01/2006, 21h03

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