Bonjour,
Après avoir vu que vous insistez pour dire qu'un formulaire n'est pas fait pour être imprimé j'ai voulu créer un envoi de champs d'un enregistrement Access vers un fichier Excel.
J'ai trouvé un moyen sur Internet que voici
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
45
Private Sub Imp_fiche_Click()
  Dim TableClient As Recordset
  Dim son_nom, son_prenom, sa_profession, son_lieu_naissance, son_adresse1, son_adresse2, son_cp, sa_ville, son_tel1, son_tel2, son_e_mail, sa_licence, son_Vulcain As String
  Dim ma_d_naissance As Date
  ' là j'enregistre la valeur des champs de l'enregistrement en cours
  son_nom = Me.adherent
  son_prenom = Me.prenom
  sa_profession = Me.profession
  sa_d_naissance = Me.d_naissance
  son_lieu_naissance = Me.lieu_naissance
  son_adresse1 = Me.adresse1
  son_adresse2 = Me.adresse2
  son_cp = Me.cp
  sa_ville = Me.ville
  son_tel1 = Me.tel1
  son_tel2 = Me.Tel2
  son_e_mail = Me.e_mail
  sa_liocence = Me.licence
  son_Vulcain = Nz(Me.Vulcain)
 
  Dim MonExcel As Object
  Set MonExcel = New Excel.Application ' là je vois bien que ça crée une nouvelle feuille Excel c'est peut être là qu'il faudrait déclarer la feuille où coller les données mais je n'ai pas trouver comment
 
  MonExcel.ActiveWorkbook.ActiveSheet.Range("D4").Value = son_nom
  MonExcel.ActiveWorkbook.ActiveSheet.Range("D5").Value = son_prenom
  MonExcel.ActiveWorkbook.ActiveSheet.Range("D6").Value = sa_profession
  MonExcel.ActiveWorkbook.ActiveSheet.Range("D7").Value = sa_d_naissance
  MonExcel.ActiveWorkbook.ActiveSheet.Range("E7").Value = son_lieu_naissance
  MonExcel.ActiveWorkbook.ActiveSheet.Range("C8").Value = son_adresse1
  MonExcel.ActiveWorkbook.ActiveSheet.Range("C9").Value = son_adresse2
  MonExcel.ActiveWorkbook.ActiveSheet.Range("C10").Value = son_cp
  MonExcel.ActiveWorkbook.ActiveSheet.Range("E10").Value = sa_ville
  MonExcel.ActiveWorkbook.ActiveSheet.Range("C12").Value = son_tel1
  MonExcel.ActiveWorkbook.ActiveSheet.Range("F12").Value = son_tel2
  MonExcel.ActiveWorkbook.ActiveSheet.Range("C13").Value = son_e_mail
  MonExcel.ActiveWorkbook.ActiveSheet.Range("M4").Value = sa_licence
  MonExcel.ActiveWorkbook.ActiveSheet.Range("M5").Value = son_Vulcain
 
  On Error Resume Next
 
  MonExcel.ActiveWorkbook.SaveAs "C:\Access\Fiche_adhesion.xlsx" ' et là ça écrase ma feuille au lieu de ne rentrer que les champs
  MonExcel.ActiveWorkbook.Close
  Set MonExcel = Nothing
 
End Sub
Ca marche bien mais cela crée à chaque fois un nouveau fichier: Fiche_adhesion.xlsx
Or le but de la manip est de sortir un fichier papier pour nos archives avec une architecture identique pour chacun.
Mais comme chaque fois on repart à zéro il sort un fichier Excel vierge.
Vous avez en pièce jointe mon modèle de fichier Excel.
Ce que j'aimerais c'est que les champs se mettent à la place prévue sans effacer ma belle page !

Fiche_adhesion.xlsx

Si quelqu'un pouvait m'aider ce serait vraiment gentil.
Si en plus il m'indiquait comment lancer de l'impression de la feuille Excel à la fin ce serait encore mieux.
Merci d'avance.
Cordialement.
Serge VM