Dupliquer enregistrement sous formulaire avec VBA
Bonjour à tous, mon projet a bien avancé avec votre aide et il me reste une petite chose encore à améliorer. Je souhaite avoir un bouton permettant de dupliquer le dernier enregistrement de mon formulaire. Mon formulaire comporte 3 sous formulaire et j'aimerai dupliquer les informations pour mon formulaire et mon sous formulaire 1. Hors avec la méthode ci-dessous que j'utilise je ne parviens à copier les valeurs de mon enregistrement que pour mon formulaire général.
- Module DupliquerEnregistrement
Code:
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
| Option Compare Database
Sub DupliquerEnregistrement( _
frm As Access.Form, _
avarChamps As Variant, _
Optional ByVal blnFin As Boolean = True)
' Quelques variables...
Dim rst As DAO.Recordset
Dim varChamp As Variant
' Source de données du formulaire
On Error Resume Next
Set rst = frm.RecordsetClone
' Se positionner en début ou en fin de table
If blnFin Then
rst.MoveLast
Else
rst.MoveFirst
End If
' Transférer les données
If rst.EOF Then
MsgBox "Aucune donnée à dupliquer !", vbInformation
Else
For Each varChamp In avarChamps
frm(varChamp) = rst(varChamp)
Next
End If
' Libérer les ressources
Set rst = Nothing
End Sub |
Et voici le code que j'utilise ensuite pour dupliquer les champs souhaités de l'enregistrement précédent
Code:
1 2 3 4 5 6 7 8 9
| Private Sub Commande101_Click()
Dim avarChamps As Variant
' La liste des champs à dupliquer
avarChamps = Array("code_etat_quest", "contact", "code_unep", "nom_source", "nom_source_periode", "nom_exploitant", "code_unite_taux_activite")
' On appelle la procédure de copie
DupliquerEnregistrement Me, avarChamps
End Sub |
Tous les champs mentionnés ici appartiennent à mon formulaire principale et la duplication fonctionne parfaitement pour le formulaire principale. Si j'essaye de rajouter des noms de champs de mon sous formulaire 1 dans avar Champs, la copie ne fonctionne que pour les champs du formulaire principale... J'ai essayé d'intégrer un second bouton DupliquerElement dans mon sous formulaire 1 en lui reformulant les champs souhaités du sous formulaire 1 mais toujours sans succès (message d'erreur).
J'ai regardé la FAQ et notamment l'article dupliquer un élément en cascade dans un formulaire mais je ne comprends pas du tout le code VBA utilisé et n'arrive pas à l'adapté à ma propose base (je n'y connais rien en VBA).
L'ideal pour mon projet serait d'avoir un seul bouton DupliquerElement permettant de dupliquer les champs voulu de mon formulaire principales ainsi que ceux de mon sous formulaire 1.
Comment intégrer cette exigence pour le sous formulaire 1 dans le code VBA que j'utilise ?
Je pense qu'il doit être possible de rajouter une ligne avarChamps2 pour mon sous formulaire 1 et une seconde ligne pour la procédure de copie mais je bloque...
Bonne journée