Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Export sous formulaire sous Excel

1 réponse
Avatar
Alexis
Bonjour =E0 tous,
J'ai un Formulaire contenant un sous formulaire format feuille de
donn=E9es sous Access 97.
Je laisse l'utilisateur modifier la taille des colonnes, voir le
masquage, l'ordre de tri. Je souhaite ensuite que l'utilisateur puisse
exporter sous excel le resultat de ses manipulations.
Si je fais par VBA l'ouverture, puis l'export du formulaire (qui est
inclus comme sous formulaire dans mon formulaire principal), il ne
tient pas compte des modifications effectu=E9es sur les colonnes, le
tri...
Si manuellement, j'ouvre mon formulaire en mode modif, que je double
clique sur le controle de mon sous formulaire pour l'ouvrir (cette fois
les modif tri, colonnes... sont bien prises en compte) puis que je fais
l'export excel, la c'est correct.
Mais comment lui faire faire tout ca par VBA...
J'ai essay=E9 qq chose du genre
docmd.openform me.fille0.form, acFormDS
mais il en veut pas
Une id=E9e... ? Messieurs de la Communaut=E9 Scientifique Accessoise... ?
Merci d'avance

1 réponse

Avatar
Alexis
Merci beaucoup pour votre aide abondante et spontanée !!!! VRAIMENT
MERCI !!!!
Je plaisante bien sur, je suis bien conscient que tout ne peut pas
toujours trouver de réponses et surtout dans les délais espérés.
Je me suis donc débrouillé et ai trouvé la solution tout seul comme
un grand (que je suis)
Pour ceux que ca intéresse :

Dim i As Integer
Dim ctl As Control
Dim sfrm As String
Dim nomsfrm As String

'Recherche le controle sous formulaire pour définir le nom du
formulaire à ouvrir et le nom du controle
For Each ctl In Me
If ctl.ControlType = acSubform Then
sfrm = ctl.SourceObject
nomsfrm = ctl.Name
End If
Next ctl

'ouvre le formulaire qui correspond au sous formulaire
DoCmd.OpenForm sfrm, acFormDS
'Reporte les tailles des colonnes
For i = 0 To Me.Controls(nomsfrm).Form.Controls.Count - 1 '(-1 car on
démmarre l'index à 0)
If Me.Controls(nomsfrm).Form.Controls(i).ControlType = acTextBox Then
'La propriété ColumnWidth d'un champ n'est pas disponible lorsque la
propriété ColumnHidden de ce champ est activée (True).
Forms(sfrm).Controls(i).ColumnHidden = False
Forms(sfrm).Controls(i).ColumnWidth =
Me.Controls(nomsfrm).Form.Controls(i).ColumnWidth
End If
Next i
'Reporte l'ordre de tri
Forms(sfrm).OrderBy = Me.Controls(nomsfrm).Form.OrderBy
'Exporte vers excel
DoCmd.RunCommand acCmdOutputToExcel
'Ferme le sous formulaire
DoCmd.Close acForm, sfrm

End Sub

Bien sur cela marche dans mon cas qui n'ai qu'un seul sous formulaire
à traiter dans mon formulaire sinon il faut surement adapter un peu...
Voila
Merci Moi