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 :

Code générique d'un nouvel enregistrement à partir d'un formulaire


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Code générique d'un nouvel enregistrement à partir d'un formulaire
    Bonjour,

    Je débute sur access et j'ai déjà fait un peu de vba sur excel, mais je suis loin de maîtriser totalement l'outil vba.
    J'ai cherché sur le forum et sur la FAQ des solutions à mon problème, sans résultat.

    Mon problème est le suivant, je suis en train de créer une base de données d'élèves. J'ai créé un formulaire d'ajout d'un nouvel élève. L'utilisateur doit inscrire les informations de l'élève dans ce formulaire, puis cliquer sur un bouton pour enregistrer le nouvel élève. Jusqu'ici pas de problème. Je suis parvenu au code suivant :

    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
    Dim rst As DAO.Recordset
    'sélection de la table
    Set rst = CurrentDb.OpenRecordset("Table élèves", dbOpenDynaset)
    'nouvel enregistrement
    rst.AddNew
     
    rst("Civilité") = Me.[Civilité]
    rst("Nom") = Me.[Nom]
    rst("Prénom") = Me.[Prénom]
    rst("Formation") = Me.[Formation]
    rst("Adresse personnelle") = Me.[Adresse personnelle]
    rst("CP") = Me.[CP]
    rst("Ville") = Me.[Ville]
    rst("Téléphone") = Me.[Téléphone]
    rst("Courriel") = Me.[Courriel]
    rst("Mode de financement") = Me.[Mode de financement]
    rst("Si autre ou informations OPCA") = Me.[Si autre ou informations OPCA]
    rst("Entreprise / Organisme") = Me.[Entreprise / Organisme]
    rst("Fonction") = Me.[Fonction]
    rst("Adresse de facturation si différente") = Me.[Adresse de facturation si différente]
    rst("Mode de règlement") = Me.[Mode de règlement]
    rst("Frais d'inscription") = Me.[Frais d'inscription]
    rst("Réduction ?") = Me.[Reduction]
    rst("Réduction accordée pour") = Me.[Réduction accordée pour]
    rst("Date de début") = Me.[Date de début]
    rst("Mail Tuteur") = Me.[Mail Tuteur]
    rst("Responsable RH") = Me.[Responsable RH]
    rst("Mail responsable RH") = Me.[Mail responsable RH]
    rst("Tuteur en entreprise") = Me.[Tuteur en entreprise]
    rst("Age") = Me.[Age]
    rst("Numero INE") = Me.[Numero INE]
    rst("Numero de sécurité sociale") = Me.[Numero de sécurité sociale]
    rst("Nationalité") = Me.[Nationalité]
    rst("Ville de naissance") = Me.[Ville de naissance]
    rst("Pays de naissance") = Me.[Pays de naissance]
    rst("Département de naissance") = Me.[Département de naissance]
    rst("Dernier diplome obtenu") = Me.[Dernier diplome obtenu]
    rst("Année d'obtention") = Me.[Année d'obtention]
     
    rst.Update
     
    rst.Close
    Set rst = Nothing
    MsgBox "Elève enregistré !", vbInformation
    Ce code fonctionne, et enregistre bien un nouvel élève avec les informations remplies dans les zones de texte.
    J'aimerais maintenant généraliser ces enregistrements, en attribuant successivement à une variable le nom de chaque champ. Le but serait d'éviter d'avoir à taper le nom de chaque champ dans mon code.

    J'ai essayé ce code :
    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 EnregistrementEleve_Click()
    Dim rst As DAO.Recordset
    Dim champ As Field
     
    'selection de la table
    Set rst = CurrentDb.OpenRecordset("table élèves", dbOpenDynaset)
     
    'enregistrement pour chaque champ
    With rst
        For Each champ In rst.Fields
            rst.AddNew
            rst.Field = Controls("champ").Value
            rst.Update
        Next
    End With
     
    rst.Close
    Set rst = Nothing
    MsgBox "Elève enregistré !", vbInformation
     
    End Sub
    Malheureusement cela ne fonctionne pas. Je pense à une erreur de syntaxe, dans la partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With rst
        For Each champ In rst.Fields
            rst.AddNew
            rst.Field = Controls("champ").Value
            rst.Update
        Next
    End With
    Mais je me trompe peut être. Si vous avez idées, je suis preneur.
    Merci !

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour et bienvenue parmi nous,


    J'aimerais maintenant généraliser ces enregistrements, en attribuant successivement à une variable le nom de chaque champ. Le but serait d'éviter d'avoir à taper le nom de chaque champ dans mon code.

    Nom : L3346.jpg
Affichages : 219
Taille : 2,6 KoOriente-toi plutôt vers un processus qui copie le contenu dans la propriété « Valeur initiale » des contrôles concernés, ainsi quand tu encodes l'enregistrement suivant, Access te propose les champs préremplis.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci de cet accueil et de ta réponse !

    Je ne suis pas sûr de m'être bien exprimé. Le but que je me suis fixé est de réaliser le code générique d'un bouton que j'utiliserai après l'entrée des données dans les zones de texte. Ce bouton a pour but de créer un nouvel enregistrement à partir des données des différentes zones de texte. Les noms de mes zones de texte sont les mêmes que ceux des champs de la table à laquelle je veux ajouter l'enregistrement. Donc, à l'aide d'une boucle qui récupèrerais les noms des champs de ma table, je veux qu'à chaque champ soit associé la valeur de la zone de texte correspondante.

    Au niveau de l'algorithmie ça donnerait à peu près ça :

    Pour chaque champ de ma table :
    rst.addnew
    rst("champ") = Me.[champ].value
    rst.update
    Fin pour

    Il faut peut être passer par une variable tampon qui prend successivement le nom de chaque champ.

    J'espère m'être mieux exprimé.

    Merci !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    631
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 631
    Points : 360
    Points
    360
    Par défaut
    Pour éviter tout ça, il suffit d'utiliser les champs de ta table dans le formulaire au lieu d'utiliser des contrôles qui vont ensuite alimenter les champs de ta table

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/03/2010, 17h29
  2. Réponses: 13
    Dernier message: 25/10/2009, 23h11
  3. Réponses: 1
    Dernier message: 10/10/2008, 23h29
  4. nouvel enregistrement à partir d'un formulaire
    Par sunwind dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 30/04/2008, 13h21
  5. Réponses: 1
    Dernier message: 13/06/2006, 09h23

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