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 :
Ce code fonctionne, et enregistre bien un nouvel élève avec les informations remplies dans les zones de texte.
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
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 :
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
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
Mais je me trompe peut être. Si vous avez idées, je suis preneur.
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
Merci !
Partager