Bonjour,
à mon avis, il faut remplacer Me.Personnesducour par Itm :
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
|
Private Sub Enregistrercours_Click()
Dim ssql As String
Dim Itm As Variant, retval
With ME.Personnesducour
For Each Itm In .ItemsSelected
ssql = ""
DoCmd.SetWarnings False 'Désactivation des messages access
'Création du code SSQL
ssql = "INSERT INTO TCours (Personnesducour, EmployeId, Date_du_cour, Coupons)"
ssql = ssql & " VALUES (""" & Itm & ""","
ssql = ssql & Me.EmployeId & ", "
ssql = ssql & "#" & format(Me.Date_du_cour,'dd/mm/yyyy') & "#, "
ssql = ssql & Me.Coupons & "); "
DoCmd.RunSQL (ssql) 'Lancement du SSQL
'DoCmd.RunSQL "delete from Tcours" 'efface les lignes sur la table cours
DoCmd.SetWarnings True 'Réactivation des message access
Next Itm
End With
End Sub |
Un conseil, plutôt qu'utiliser les simple quotes, double les doubles-quotes pour plus de sécurité car tu n'es pas à l'abri d'une personne avec un nom contenant un simple quote (exemple D'Aguessau ou N'Dyai) qui peut faire planter ton code.
Les quotes sont réservés au texte donc à éviter pour le numérique (j'ai supposé que EmployeId et Coupons sont de ce type).
Le SELECT fonctionne uniquement associé à une clause FROM (donc avec une table ou une requête) : sinon il faut utiliser VALUES.
Attention avec Date_du_cour si c'est une date il faut les # à la place des ', et utiliser un format car par défaut la date est toujours au format US en VBA donc 01/04/2017 sera interprété 04 Janvier 2017 (c'est d'ailleurs uniquement quand le jour est inférieur ou égal à 12 car pour les autres dates, VBA Access sait les reconnaitre et les convertit sans problème). Par contre, ici tu peux utiliser ' pour le format de date.
Je mettrai aussi les Docmd.SetWarnings hors de la boucle For : juste avant et après c'est suffisant.
Partager