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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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