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 :

Formulaire, controles et code VBA


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut Formulaire, controles et code VBA
    J'ai besoin d'aide dans les formulaires ACCESS (2003) et sur le code VBA :
    J'ai un formulaire simple dont la source est une table à 4 champs : Code_Auto, Nom, Prénom, Commune.
    Je dois saisir à la suite plusieurs personnes de la même commune, sans vouloir ressaisir la commune à chaque nouvel enregistrement.
    1 - Sur quel évenement dois-je mémoriser la commune saisie, par ex dans la variable comm_preced, dès la validation de l'enregistrement
    2 - Sur quel évenement du nouvel enregistrement dois-je attribuer la variable (comm_preced) pour que je n'ai pas la peine de remplir à nouveau le controle 'commune'.
    3 - Ou déclarer cette variable (comm_preced) avant de pouvoir m'en servir ?
    4 - Quelle syntaxe de VBA pour la renseigner ?
    5 - Quelle syntaxe pour en restituer la valeur dans la saisie suivante ?
    PS- J'ai bien lu l'excellent tuto de Loufab sur le sujet des évenements, mais je n'y arrive pas !
    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Sans programmation tu peux utiliser [ctrl][shift][,] pour recopier le contenu du champ dans l'enr précédant.

    Cela te suffit-il ou tu tiens à la version programmée ?

    A+

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Déclare ta variable Comm_Prec publique ou globale selon ce que tu en feras.

    Sur l'événement after_update de ton champ commune, tu mets le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commune_AfterUpdate()
        Comm_Prec = Commune
    End Sub
    Et dans la propriété valeur par défaut, de ton champ commune, ajoutes :

    =Comm_Prec

    Cela devrait répondre à ta question.

  4. #4
    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,

    Déclarer un nom de variable dans une propriété de formulaire me paraît scabreux. Le mieux est d'utiliser l'événement Avant insertion du formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Form_BeforeInsert(Cancel As Integer)
       Commune = Comm_Prec
    End Sub
    par ailleurs, la variable Comm_Prec peut être déclarée en tête du module du formulaire. Par exemple, après Option Compare database et Option Explicit.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Bonjour,


    Je n'ai jamais parlé de la déclarer dans la propriété. Je pensais effectivement à la tête du module pour la déclaration en Public ou Global.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Il n'est pas nécessaire de déclarer Comm_Prec public ni global si elle n'est utilisée que dans ce formulaire.

    Les variables globales doivent être utilisées avec prudence car elles sont sources de bugs difficiles à retracer. Quand une variable est globale, n'importe quel module dans l'application peut la voir donc potentiellement dépendre d'elle pour son fonctionnement et la modifier si l'envie lui en prend.

    A+

  7. #7
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    Donc si j'ai compris vos conseils, je résume :

    1 - Pas la peine de déclarer la variable 'comm_prec' car elle n'est utilisée que dans ce formulaire.

    2 - Pour mémoriser la valeur de 'commune' saisie la première fois, je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commune_AfterUpdate()
        Comm_Prec = Commune
    End Sub
    3 - Pour retrouver cette valeur, posée dans le champ 'commune' lorsque le formulaire va s'afficher pour que je saisisse l'enregistrement suivant, je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_BeforeInsert(Cancel As Integer)
       Commune = Comm_Prec
    End Sub
    4 -Ainsi je n'ai plus à saisir 'commune' si sa valeur reste la même.

    Est-ce OK ?

    Merci les amis.
    Michel

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    1 - Pas la peine de déclarer la variable 'comm_prec' car elle n'est utilisée que dans ce formulaire.
    Non pas besoin de la déclarer Public ou Global mais il faut la déclarer au niveau du formulaire comme le mentionne Geache sinon elle va être locale à la procédure te tu ne pourras pas la réutiliser.

    De plus il est recommandé de TOUJOURS déclarer ses variables. à mes début en programmation, une non déclaration de variable m'a déjà coûté une semaine de recherche de bug.

    Pour être obliger de déclarer les variables il faut activer l'option déclaration de variable oblgatoire. Cela rajoute Option Explicit en tête de tous les nouveaux modules. Attention cela n'a pas d'effet rétro-actif, si un module a été créé sans il faut ajouter Option Explicit à la main après Option Compare Database.

    À part cela c'est parfais.

    A+

  9. #9
    Membre régulier
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Points : 99
    Points
    99
    Par défaut
    merci.
    Vos conseils m'ont aidé.
    Je ne sais pas comment faite pour mettre 'résolu' à cette discussion.
    A+ pour d'autres questions.
    Michel

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Je l'ai fait pour toi, il suffit d'appuyer sur le bouton Résolu en bas de la discussion.

    A+

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/03/2015, 14h00
  2. Affichage formulaire valeur de code VBA
    Par overlolo dans le forum Access
    Réponses: 2
    Dernier message: 09/12/2010, 16h45
  3. Réponses: 14
    Dernier message: 17/04/2007, 12h26
  4. Réponses: 2
    Dernier message: 03/05/2006, 08h33
  5. [VBA-A] Code vba pour inclure un formulaire Acces
    Par MadSquirrel dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/04/2006, 18h19

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