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

  1. #1
    Membre régulier
    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
    Points : 74
    Points
    74
    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 éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    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,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre régulier
    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
    Points : 74
    Points
    74
    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 éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    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,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre régulier
    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
    Points : 74
    Points
    74
    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 éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    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,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  7. #7
    Membre régulier
    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
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    je ferai un test sur une base de donnée avant de la mettre dans la vraie base, cependant il faut aussi crée un module pour qu'elle s’exécute ou une macros suffit ?

    Je vous remercie pour votre aide,
    cordialement.

  8. #8
    Expert éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Normalement, le module Private Sub Form_AfterUpdate() est une routine qui s'exécute sur l'évènement Après mise à jour de votre formulaire. Il est rattaché au formulaire, donc pas besoin de nouveau module.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  9. #9
    Membre régulier
    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
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    quand je crée la macro je mets quoi comme action aussi ?

    je vous remercie pour votre aide,
    cordialement.

  10. #10
    Expert éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Quelle macro? Normalement vous avez votre routine qui va se lancer.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  11. #11
    Membre régulier
    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
    Points : 74
    Points
    74
    Par défaut
    bonsoir,

    quand je lance le module, il me lance un message d'erreur en me disant : "erreur de compilation : Utilisation incorrecte du mot clé Me",
    sa veut dire quoi ceci ?

    Encore merci de votre aide.

  12. #12
    Expert éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Normalement, le module se lance dans VOTRE FORMULAIRE sur l'évènement mise à jour.
    1- Vous ouvrez votre formulaire en mode création.
    2- Vous allez dans les propriétés Après Mise à Jour du Formulaire et appuyer sur les '...' à la fin de la ligne.
    3- La fenêtre VBA va s'ouvrir avec le module Form_AfterUpDate.
    4- Vous collez dedans le code indiqué.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  13. #13
    Membre régulier
    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
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    je l'ai mis dans exécuter un code, mais ceci ne fonctionne pas par contre =/

    Quand je ne mets qu'une date, et que je quitte la ligne ou je ferme le formulaire, il me dit rien.. Aurais-je fais une mauvaise manipulation quelque part ?

    Encore merci pour votre aide.
    Cordialement Jiben59.

  14. #14
    Membre régulier
    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
    Points : 74
    Points
    74
    Par défaut
    Bonsoir,

    sa fonctionne au final, je me suis tromper de formulaire, car il fallait l’intégrer dans le sous-formulaire

    Par contre, serait il possible que la casse du champs "en attente" se coche automatiquement lorsque ce dernier est payé par chèque ?

    Je vous remercie pour votre aide,
    cordialement.

  15. #15
    Expert éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If (Me.CodePmt)="CHQ" And Not IsNull(Me.NumChq) Then
        Me.LeChampEnAttente = True
    End If
    à mettre sur l'évènement Après Mise à jour des champs CodePmt et NumChq je pense.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  16. #16
    Membre régulier
    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
    Points : 74
    Points
    74
    Par défaut
    Merci, sa fonctionne.

    Par contre, je ne peux plus changer de sous journal après la saisit, comment sa se peut ?

    Merci pour votre aide,
    cordialement.

  17. #17
    Expert éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    C'est quoi le "sous-journal"?
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  18. #18
    Membre régulier
    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
    Points : 74
    Points
    74
    Par défaut
    C'est ceci : http://hpics.li/6b2d0be

    Sa ira mieux pour comprendre.

  19. #19
    Membre régulier
    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
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    quelqu'un peut-il m'aider pour que la casse du champs "en attente" se coche automatiquement lorsque ce dernier est payé par chèque s'il vous plaît.

    Meilleurs vœux à vous et à la communauté.

    Cordialement.

  20. #20
    Membre régulier
    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
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par madefemere Voir le message
    Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If (Me.CodePmt)="CHQ" And Not IsNull(Me.NumChq) Then
        Me.LeChampEnAttente = True
    End If
    à mettre sur l'évènement Après Mise à jour des champs CodePmt et NumChq je pense.

    Cordialement,

    Bonsoir,

    quelqu'un peut m'aider s'il vous plaît ?
    Car quand je sélectionne le code de paiement par chèque, le mouvement se mets en attente mais ensuite je ne peux plus changer de sous journal après la saisit.

    Je vous mets ma base de données ci-joint : Pièce jointe 167125

    Je vous remercie pour votre aide.
    Cordialement Jiben59.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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