Avoir un apercu ecran d'un etat access avant de l'imprimer

Contenu du snippet

Slt à tous,
ce bout de code ne va pas servir à bcp d'entre vous, mais j'ose espérer que comme pour moi, ceux qui en auront besoin seront bien content !

Je m'explique : je part d'une base de donnée Access, qui contient des données, et je veux sortir ces données proprement pour un utilisateur (vous savez cet espèce chian... et emmerda... pour les programmeurs ;) ).
Pour cela, ya rien de mieux qu'un état Access pure, fait par lui-même : et là cet état je voulais l'afficher, comme access l'aurait fait dans une feuille pour un aperçu avant impression quoi.

J'ai chercher partout mais les codes existants soit imprimaient directement (je voulait un aperçu !), ou m'affichait ce que je voulais mais DANS access !!! Et moi je veux pas que l'utilisateur se retrouve sous Access !

Donc j'ai pondu ça (comme une poule, sisi) :

Source / Exemple :


'ATTENTION : Il faut qd mm référencer les "Microsoft Access xx Library Object"
'Ba oui j'utilise Access qd mm, je suis pas magicien !

'Il vous faut aussi un ctrl Webbrowser sur la form nommé Wb

Private Sub BT_Click()
On Error Resume Next
Dim A As Access.Application

      Set A = CreateObject("Access.Application")

'là j'ouvre la base qui m'interesse, ici bd1.mdb du dossier de l'appli
      A.OpenCurrentDatabase App.Path & "\bd1.mdb"

'et là, c'est toute l'astuce, j'exporte l'état vers un fichier HTML !!!
'Ici, "Epiece" c'est le nom de l'état de la base qui m'interesse
      A.DoCmd.OutputTo acOutputReport, "Epiece", acFormatHTML, App.Path & "\tmp.html"
      A.Quit
      DoEvents

'Maintenant j'affiche la page générée dans mon Webbrowser Wb (que j'ai
'caché en dehors de la feuille : attention le visible =false fait des bugs)
'Le ctrl d'erreur c'est parceque des fois c'est pas pret et ca plante
      Do
        Wb.Navigate App.Path & "\tmp.html"
        DoEvents
      Loop Until Wb.ReadyState = READYSTATE_COMPLETE

'ça c'est parceque l'aperçu se dimensionne à la taille de la forme
'donc je la met en plein écran temporairement
      Me.WindowState = 2

'et ici je demande au Webbrowser de m'afficher l'apercu impression de la page
'le ctrl d'erreur est a peu pret pour les mm raisons, sur les systemes lents
'c'est parfois pas pret et ca plante, a qq dixieme de sec, c con !
      Do
        Err.Clear
        Wb.ExecWB OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT
        DoEvents
      Loop Until Err.Number <> -2147221248

'ici je remet enfin la form a sa taille initiale
      Fimpression.WindowState = 0

End Sub

'ET LA VOUS AVEZ SOUS VOS YEUX l'apercu avant impression de l'état Access

Conclusion :


Voilà !

Si vous avez un truc meilleur, PITIE dites le moi, en tout cas ça ça tourne bien.
Libre à vous par la suite de remplir la base avec des instructions SQL sous VB afin de formater une sortie de données personnalisées, comme je m'apprete a le faire...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.