OVH Cloud OVH Cloud

Imprimer un rapport depuis XL

12 réponses
Avatar
Jac
Bonjour à tous,

je suis à la recherche d'une procédure à mettre dans XL qui me permettrait
de lancer l'impression ou la prévisualisation d'un état Access depuis XL.

En fait le fichier XL est attaché au fichier Access, et après mise à jour
des données dans XL, j'aimerais pourvoir lancer l'impression sans sortir
d'Excel et si possible en refermant Access après impression afin que cette
procédure soit transparente pour les utilisateurs.

Est-ce possible ?

Merci d'avance à ceux qui pourraont me mettre sur la voie. S'il le faut,
j'irai exposer le problème sur le forum XL.

Jac

2 réponses

1 2
Avatar
Raymond [mvp]
Bonjour.

je viens de lire la procédure et il me semble qu'elle recèle plusieurs
anomalies, dont le DoCmd.Close qui n'a jamais fermé access mais seulement
l'objet actif.
je me suis attelé à l'automation excel-access et je te donne ci-dessous les
fonctions à placer dans un module dans ton classeur excel.
Option Explicit

Sub macro1()
ReportPrint "c:bd1_2002.mdb", "etat1", acViewNormal
End Sub

Sub ReportPrint(PathName As String, ReportName As String, Optional View As
AcView = acViewNormal)
Dim Acc_App As New Access.Application
With Acc_App
.Visible = True
.OpenCurrentDatabase (PathName)
.DoCmd.OpenReport ReportName, View
If View <> acViewPreview Then
.CloseCurrentDatabase
.Quit
End If
End With
Set Acc_App = Nothing
End Sub

remplace "c:bd1_2002.mdb" et "etat1" par tes noms réels , et exécute la
macro macro1.
la procédure ci-dessus permet d'imprimer ou pré-visualiser ton état. Elle
peut être améliorée.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jac" a écrit dans le message de news:
41ca8e86$0$16260$
Voici la solution selon Patrick Morange du forum XL avec quelques
retouches.

'__________________________________________________________
Sub IMPRIME_RAPPORT_ACCESS_DEPUIS_XL()
'¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
' dans Outils / Références de la fenêtre VBA,
' il faut référencer "Microsoft Access x.0 Object Library"

Dim DB, CP As Object
Dim LE_FICHIER_ACCESS_AVEC_SON_CHEMIN
Dim LE_RAPPORT_A_IMPRIMER As String

' chemin de la base de données Access -------- (à adapter)
LE_FICHIER_ACCESS_AVEC_SON_CHEMIN = "c:essai.mdb"

' nom du rapport à imprimer ------------------ (à adapter)
LE_RAPPORT_A_IMPRIMER = "Nom du rapport"


' ouvre la base de données ------------------------------
Set DB = GetObject(LE_FICHIER_ACCESS_AVEC_SON_CHEMIN)
Set CP = DB.CurrentProject

' lancement de l'impression -----------------------------
DoCmd.OpenReport LE_RAPPORT_A_IMPRIMER, acViewNormal, "", "", acNormal

' fermeture d'Access ------------------------------------
DoCmd.Close

' nettoyage des variables -------------------------------
Set CP = Nothing: Set DB = Nothing

'Il est évident que l'on pourrait imprimer plusieurs rapports
'ou autres objets Access à la suite.

'On ne peut pas prévisualier car Access est invisible donc "ça" ne peut
que partir
'directement sur l'imprimante par défaut ou probablement (car non testé)
sur l'imprimante
'définie dans le rapport.

'On pourrait, si nécessaire, définir l'imprimante cible dans la macro.

'__________________________________________________________
End Sub
'¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯


En espèrant que cette solution pourra être utile
et inspirer d'autres utilisateurs...

Jac


Avatar
Jac
Bonjour Raymond,

j'étais content d'avoir une solution... et maintenant je suis heureux d'en
avoir deux !
J'ai déjà mis en place un msgbox qui permet de choisir entre impression
directe et prévisualisation. Tout fonctionne parfaitement.

Chapeau bas et mille mercis,

Jac

Nb: Joyeux Noël et Bonne Année à tous !!!
1 2