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 :

Vérification des enregistrements d'un formulaire continu. [AC-2010]


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2018
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juin 2018
    Messages : 96
    Points : 50
    Points
    50
    Par défaut Vérification des enregistrements d'un formulaire continu.
    Bonjour,

    j'ai un formulaire en mode continu dans le quel il est possible de modifier certains champs.
    J'aimerais que tous les enregistrements soient vérifiés à la fermeture du formulaire afin d'éviter les erreurs dues aux modifications.
    La cerise sur le gâteau serait d'indiquer le champ incriminé dans la liste des enregistrements.
    Est-ce possible ?

    Par avance merci,
    fifi

  2. #2
    Membre confirmé
    Avatar de dok flint
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 366
    Points : 548
    Points
    548
    Par défaut
    Bonjour,
    En fait tu voudrais tester la valeur de chaque champs et renvoyer un message d'erreur, ou passer par la mise en forme conditionnelle.
    Quel type d'errur de modification il s'agit?
    A+
    Pourquoi faire compliqué quand on peut faire simple
    Je suis encore en ACCESS 2003
    Un petit clic sur ça fait toujours plaisir , c'est par là -------------------------------------------------------v

  3. #3
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2018
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juin 2018
    Messages : 96
    Points : 50
    Points
    50
    Par défaut
    Bonjour doc flint

    pour l'instant j'ai mis ce code sur le bouton qui ferme le formulaire :
    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
    Private Sub Commande18_Click()
     
    DoCmd.GoToRecord , , acFirst   >>> atteindre le premier enregistrement du formulaire
     
    Conditions à vérifier du type if then else pour les champs modifiables
     
     
    SuIvant:
     
    On Error GoTo ErRe >>>>> pour empêcher l'affichage du message d'erreur lorsqu'on a atteint le dernier enregistrement
     
    DoCmd.GoToRecord , , acNext >>> atteindre l'enregistrement suivant
     
    Condition à vérifier dans les enregistrements suivants, les mêmes que pour le premier enregistrement
     
    GoTo SuIvant  >>>> pour créer la boucle
     
    ErRe:
     
     
    End Sub
    ça fonctionne bien, même si ce n'est pas trop "académique"

    Ce que je voudrais bien maintenant, en effet, c'est que la ligne de l'enregistrement concerné par l'erreur passe en surbrillance, ou d'une autre couleur.

    J'ai fait des essais avec la mise en forme conditionnelle, mais pour l'instant je bute sur la façon provoquer cette mise en forme conditionnelle sur un seul enregistrement.

    Fifi

  4. #4
    Membre confirmé
    Avatar de dok flint
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 366
    Points : 548
    Points
    548
    Par défaut
    Bonjour,
    Regarde un peu cette discussion :
    https://www.developpez.net/forums/d1...tionnelle-vba/
    A+
    Pourquoi faire compliqué quand on peut faire simple
    Je suis encore en ACCESS 2003
    Un petit clic sur ça fait toujours plaisir , c'est par là -------------------------------------------------------v

  5. #5
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2018
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juin 2018
    Messages : 96
    Points : 50
    Points
    50
    Par défaut
    bonsoir doc flint

    en fait ce que je cherchais c'était de mettre en surbrillance, dans un enregistrement, dans une ligne donc, uniquement les champs qui sont concernés par l'erreur.
    J'ai ajouté un champ dans la table que j'ai appelé sejourerror avec la tetxtbox correpondante dans le formulaire, txt_sejourerror.
    La procédure qui vérifie les enregistrements, lorsqu'elle rencontre une erreur, en plus de signaler l'erreur par une msgbox, écrit un code dans ce champ txt_sejourerror. Par exemple, si la date de début n'est pas renseignée elle écrit errdeb dans ce champ, ou errfin pour la date de fin ou errdates s'il y a un problème de compatibilité entre les dates comme par exemple une date de fin antérieure à une date de début.
    Ensuite il suffit de faire des mises en forme conditionnelles des champs date avec des expressions sur le champ txt_sejourerror.
    Pour le champ date de début, s'il y a errdeb dans txt_sejourerror, le fond devient rouge...

    La procédure complète donne ça :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
     
    Private Sub bt_CloseForm_Click()
     
     
    DoCmd.GoToRecord , , acFirst
     
    txt_SejourError.Value = ""
     
     
    If txt_DebutSejour.Value = "" Or IsNull(txt_DebutSejour) Then
    MsgBox "La date du début du séjour de  " & txt_IdClient.Value & "  doit être renseignée.", vbCritical, "Saisie manquante."
    txt_SejourError.Value = "errdebut"
    txt_DebutSejour.SetFocus
    Exit Sub
    End If
     
    If txt_finSejour.Value = "" Or IsNull(txt_finSejour) Then
    MsgBox "La date de la fin du séjour de  " & txt_IdClient.Value & "  doit être renseignée.", vbCritical, "Saisie manquante."
    txt_SejourError.Value = "errfin"
    txt_finSejour.SetFocus
    Exit Sub
    End If
     
    If txt_finSejour.Value - txt_DebutSejour.Value < 1 Then
    MsgBox "Les dates de début et de fin du séjour de  " & txt_IdClient.Value & "  sont incompatibles." & vbCr & "Un séjour dure, au moins, une nuit." & vbCr & vbCr & "Vérifiez et corrigez.", vbCritical, " Erreur sur les dates de séjour."
    txt_SejourError.Value = "errdates"
    txt_RmkSejour.SetFocus
    Exit Sub
    End If
     
    If lt_StatutSejour.Value = "Séjour annulé" And (txt_RmkSejour.Value = "" Or IsNull(txt_RmkSejour)) Then
    MsgBox "Si le séjour de  " & txt_IdClient.Value & "  est annulé, indiquez les conditions de l'annulation dans le champ ''Remarques''", vbCritical, "Saisie manquante."
    txt_SejourError.Value = "errAnnul"
    txt_RmkSejour.SetFocus
    Exit Sub
    End If
     
     
    SuIvant:
    On Error GoTo ErRe
     
     
    DoCmd.GoToRecord , , acNext
     
    txt_SejourError.Value = ""
     
     
    If txt_DebutSejour.Value = "" Or IsNull(txt_DebutSejour) Then
    MsgBox "La date du début du séjour de  " & txt_IdClient.Value & "  doit être renseignée.", vbCritical, "Saisie manquante."
    txt_SejourError.Value = "errdebut"
    txt_DebutSejour.SetFocus
    Exit Sub
    End If
     
    If txt_finSejour.Value = "" Or IsNull(txt_finSejour) Then
    MsgBox "La date de la fin du séjour de  " & txt_IdClient.Value & "  doit être renseignée.", vbCritical, "Saisie manquante."
    txt_SejourError.Value = "errfin"
    txt_finSejour.SetFocus
    Exit Sub
    End If
     
    If txt_finSejour.Value - txt_DebutSejour.Value < 1 Then
    MsgBox "Les dates de début et de fin du séjour de  " & txt_IdClient.Value & "  sont incompatibles." & vbCr & "Un séjour dure, au moins, une nuit." & vbCr & vbCr & "Vérifiez et corrigez.", vbCritical, " Erreur sur les dates de séjour."
    txt_SejourError.Value = "errdates"
    txt_finSejour.SetFocus
    Exit Sub
    End If
     
    If lt_StatutSejour.Value = "Séjour annulé" And (txt_RmkSejour.Value = "" Or IsNull(txt_RmkSejour)) Then
    MsgBox "Si le séjour de  " & txt_IdClient.Value & "  est annulé, indiquez les conditions de l'annulation dans le champ ''Remarques''", vbCritical, "Saisie manquante."
    txt_SejourError.Value = "errAnnul"
    txt_RmkSejour.SetFocus
    Exit Sub
    End If
     
     
    GoTo SuIvant
     
    ErRe:
     
    DoCmd.Close
     
    End Sub
    Peut-être pas puriste, mais c'est simple et ça fonctionne parfaitement.

    fifi

  6. #6
    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


    Bravo pour la solution que tu as trouvé et merci de nous la faire partager.
    Maintenant, il faut cloturer la discussion en cliquant sur le bouton placé sous le dernier post de ton fil.

    Merci beaucoup
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  7. #7
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2018
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juin 2018
    Messages : 96
    Points : 50
    Points
    50
    Par défaut
    ah, m...e !!! encore oublié

  8. #8
    Membre confirmé
    Avatar de dok flint
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 366
    Points : 548
    Points
    548
    Par défaut
    Bonjour,
    Bien vu et bonne continuation
    A+
    Pourquoi faire compliqué quand on peut faire simple
    Je suis encore en ACCESS 2003
    Un petit clic sur ça fait toujours plaisir , c'est par là -------------------------------------------------------v

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/05/2014, 19h55
  2. Réponses: 1
    Dernier message: 04/02/2012, 17h39
  3. [Toutes versions] Code vérification des enregistrements
    Par K-rol dans le forum Access
    Réponses: 4
    Dernier message: 11/01/2012, 15h04
  4. [Formulaire-VBA]vérification des enregistrements
    Par Melhiril dans le forum IHM
    Réponses: 1
    Dernier message: 05/04/2007, 11h02
  5. Réponses: 2
    Dernier message: 03/08/2006, 22h00

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