Bonjour,

Je souhaite dupliquer un enregistrement sur un formulaire en vidant certains champs mais aussi dupliquer les enregistrements du sous-formulaire. Or quand on duplique de manière classique (bouton dupliquer) seul l'enregistrement principal est dupliqué, le sous-formulaire est mis à vide.
J'ai regardé avec la méthode recordset mais je ne comprends pas bien le 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
22
23
24
25
26
27
28
29
30
31
32
Private Sub Commande104_Click()
Private Sub Dupliquer()
Dim rstProtocole As DAO.Recordset, rstProtocole2 As DAO.Recordset
Dim Db As DAO.Database, fld As DAO.Field
Dim sql As String
Dim id As Long
Set Db = CurrentDb
'Ouvre le recordset où sera prélevé le protocole
Set rstProtocole = Db.OpenRecordset("SELECT NomProtocole FROM Protocole WHERE IdProtocole=1")
'Verifie que le protocole 1 existe
If rstProtocole.EOF Then Exit Sub
'ouvre le recordset où sera ajouté le protocole
Set rstProtocole2 = Db.OpenRecordset("protocole")
'Duplique le protocole
With rstProtocole2
  .AddNew
  'duplique les champs
  For Each fld In rstProtocole.Fields
    .Fields(fld.Name) = fld.Value
  Next
  id = .Fields("idprotocole")
  .Update
  'se positionne sur l'enregistrement ajouté
End With
 
'Duplique les lignes
sql = "insert into LigneProtocole (IdProtocole,Libelleligne) SELECT " & _
  id & ", LibelleLigne FROM LigneProtocole WHERE idprotocole=1"
Db.Execute sql
End Sub
 
End Sub
J'ai le formulaire principal basé sur une requête liant deux tables (Interim et Contrat)
Interim (n°Interim, Nom, DateNais, ...)
Contrat (N°contrat, Date, Responsable, Usine, ..., n°Interim)

Pour chaque contrat d'intérimaire, il y a un sous-formulaire avec les différentes semaines du contrat (Pointages). Ce sous-formulaire est basé sur la table Point (n°pointage, N°semaine, Mission, nbHeures, Salaire, Coef, N°contrat)

Toutes les clés primaire sont en n°auto.

Je veux lorsqu'un intérimaire est en fin de contrat, appuyer sur un bouton dupliquer et que cela duplique le formulaire principal (donc tous les éléments de la requête, je viderai juste le champ Date). Mais que cela duplique aussi le sous-formulaire afin que je n'ai pas à retaper les champs Mission, nbheures, salaire, coef... qui sont identiques de contrat en contrat.

Pouvez-vous m'aider si j'ai été assez clair ?

Merci.

Fred