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 :

Aide pour la création d'une macro [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Par défaut Aide pour la création d'une macro
    Bonjour,

    j'aimerai créer une macro pour que ma base de données m'avertir lorsqu'un champs n'a pas été remplit, alors qu'il est requis si on a sélectionné tels champs.

    Par exemple, lorsque je rentre une date, je ne peux pas finir ma ligne si je n'ai pas renseigné le libellé du mouvement.

    M'aider à comprendre à créer une ligne, et j'essaierai de faire la suite ensuite par mes soins.

    Voici la capture d'&écran : http://www.hostingpics.net/viewer.ph...32307Macro.png

    Je remercie tous les gens qui m'aideront.
    Bonne fin de journée,
    cordialement.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,

    Il faut faire un test sur les valeurs de DateMvt et LibelleMvt sur l'évènement après mise à jour du formulaire.
    Si l'un est Non Nul et l'autre est Nul,
    Envoyer un message d'avertissement
    Annuler la saisie.

    Un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_AfterUpdate()
    If Not IsNull(Me.DateMvt) And IsNull(Me.LibelleMvt) Then
        MsgBox "Vous avez oublié de saisir un libellé !"
        Me.Undo
        Me.LibelleMvt.SetFocus
    End If
    End Sub
    Code à adapter bien sûr.

    Cordialement,

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Par défaut
    Bonjour,

    merci pour votre remercie tout d'abord.

    Par contre, il me semble que l'on peut regrouper plusieur en ligne ensemble ?

    Car j'ai crée 5 lignes qui dépend du champs DateMvt, qui veut dire que s'il y a une date alors il y a un libellé, un montant, un code de paiement, un code journal et un code de sous journal.

    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
    Private Sub Form_AfterUpdate()
    If Not IsNull(Me.DateMvt) And IsNull(Me.LibelleMvt) Then
        MsgBox "Vous avez oublié de saisir un libellé !"
        Me.Undo
        Me.LibelleMvt.SetFocus
    End If
    End Sub
     
    Private Sub Form_AfterUpdate()
    If Not IsNull(Me.DateMvt) And IsNull(Me.MontantMvt) Then
        MsgBox "Vous avez oublié de saisir un montant !"
        Me.Undo
        Me.MontantMvt.SetFocus
    End If
    End Sub
     
    Private Sub Form_AfterUpdate()
    If Not IsNull(Me.DateMvt) And IsNull(Me.CodePmt) Then
        MsgBox "Vous avez oublié de saisir un code de paiement !"
        Me.Undo
        Me.CodePmt.SetFocus
    End If
    End Sub
     
    Private Sub Form_AfterUpdate()
    If Not IsNull(Me.DateMvt) And IsNull(Me.CodeJrnl) Then
        MsgBox "Vous avez oublié de saisir un code de journal!"
        Me.Undo
        Me.CodeJrnl.SetFocus
    End If
    End Sub
     
    Private Sub Form_AfterUpdate()
    If Not IsNull(Me.DateMvt) And IsNull(Me.CodeSsJrnl) Then
        MsgBox "Vous avez oublié de saisir un code de journal!"
        Me.Undo
        Me.CodeSsJrnl.SetFocus
    End If
    End Sub
    Ensuite, j'ai crée une ligne qui traduit la phrase suivante : Si le code de paiement correspond à un chèque alors il y a un numéro de chèque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_AfterUpdate()
    If (Me.CodePmt)="CHQ" And IsNull(Me.NumChq) Then
        MsgBox "Vous avez oublié de saisir le numéro de chéque correspondant!"
        Me.Undo
        Me.NumChq.SetFocus
    End If
    End Sub
    Pourriez vous me dire si je suis bien parti si vous plaît ? Car il me semble que les balises on ne les remets pas à plusieurs fois (balises =End If et End Sub).

    Je vous remercie,
    cordialement.

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonsoir,

    1- Vous ne pouvez pas avoir "PLUSIEURS" modules Form_AfterUpDate sur un même formulaire (en fait c'est l'évènement après mise à jour du formulaire). Après dans ce module, vous pouvez avoir plusieurs conditions "IF.... END IF". Ce qui donnerait à peu près :
    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
     
    Private Sub Form_AfterUpdate()
    If Not IsNull(Me.DateMvt) And IsNull(Me.LibelleMvt) Then
        MsgBox "Vous avez oublié de saisir un libellé !"
        Me.Undo
        Me.LibelleMvt.SetFocus
    End If
    If Not IsNull(Me.DateMvt) And IsNull(Me.MontantMvt) Then
        MsgBox "Vous avez oublié de saisir un montant !"
        Me.Undo
        Me.MontantMvt.SetFocus
    End If
    If Not IsNull(Me.DateMvt) And IsNull(Me.CodePmt) Then
        MsgBox "Vous avez oublié de saisir un code de paiement !"
        Me.Undo
        Me.CodePmt.SetFocus
    End If
    If Not IsNull(Me.DateMvt) And IsNull(Me.CodeJrnl) Then
        MsgBox "Vous avez oublié de saisir un code de journal!"
        Me.Undo
        Me.CodeJrnl.SetFocus
    End If
    If Not IsNull(Me.DateMvt) And IsNull(Me.CodeSsJrnl) Then
        MsgBox "Vous avez oublié de saisir un code de journal!"
        Me.Undo
        Me.CodeSsJrnl.SetFocus
    End If
    If (Me.CodePmt)="CHQ" And IsNull(Me.NumChq) Then
        MsgBox "Vous avez oublié de saisir le numéro de chéque correspondant!"
        Me.Undo
        Me.NumChq.SetFocus
    End If
    End Sub
    La difficulté résiderait à la mise en place des conditions avec IF et de prévoir l'exécution du code correctement.

    Cordialement,

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Par défaut
    Bonsoir,

    effectivement sa serait un peu plus léger déjà.

    Mais que voulez vous dire par votre phrase : "La difficulté résiderait à la mise en place des conditions avec IF et de prévoir l'exécution du code correctement. " ? C'est à dire que les If ne sont pas terrible dans de tels macro ?

    Je vous remercie encore,
    cordialement.

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,

    Je ne parle pas de performance, mais de "logique" dans les conditions dans l"instruction "IF", surtout lorsqu'on teste plusieurs champs "en même temps".
    Dans votre cas, vous faites un test séquentiel de chaque champ, donc normalement il ne devrait pas y avoir trop de souci.

    Cordialement,

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

Discussions similaires

  1. Aide pour la création d'une requête
    Par Marc_27 dans le forum IHM
    Réponses: 1
    Dernier message: 15/12/2008, 12h26
  2. Aide pour la création d'une vue
    Par bossun dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/07/2008, 09h19
  3. besoin d'aide pour la création d'une requête
    Par fabien59420 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 11/06/2008, 15h29
  4. Réponses: 3
    Dernier message: 26/06/2007, 14h53
  5. Réponses: 2
    Dernier message: 10/03/2006, 13h55

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