Imprimer page avec contenu webbrowser

  • Initiateur de la discussion Initiateur de la discussion guilhem138
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

guilhem138

Guest
Bonjour,

Mon soucis est à la fois simple et compliqué :
J'ai une page excel contenant 4 webbrowser ; Il permettent d'accéder a différents type de plan google map a partir d'une adresse contenue dans une cellule du classeur.
Je souhaiterais que lorsque j'imprime cette page, le contenu des 4 webbrowser soit visible. Et c'est la que ça se complique! 🙁
Après plusieurs heures de recherche, il ne me semble pas que ce soit possible (à moins que vous me donniez tort ? 🙄).
J'envisage donc de crée un bouton sur cette page qui permettrait une fois de transformer le webbrowser en image (même taille et même emplacement sur la page) pour que le tout s'imprime ; Mais je ne vois pas du tout comment coder cette commande... 😕

Qu'en pensez vous ? Quels sont vos conseils ? vos idées ?

Merci d'avance à tout ceux qui prendront le temps de me répondre.

Guilhem

Pour info, je travaille sur excel 2007.
 
Re : Imprimer page avec contenu webbrowser

Bonjour,

Voici 4 commandes que je n'ai jamais eu l'occasion de tester.
À toi de le faire !

'----------------------------------------

Private Sub Command1_Click() 'Bouton Print
WebBrowser1.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT 'Show Print Window
End Sub
'----------------------------------------
Private Sub Command2_Click() 'Bouton Print Preview
WebBrowser1.ExecWB OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT 'Show Print Preview Window
End Sub
'----------------------------------------
Private Sub Command3_Click() 'Bouton Page Setup
WebBrowser1.ExecWB OLECMDID_PAGESETUP, OLECMDEXECOPT_DODEFAULT 'Show Page Setup Window
End Sub
'----------------------------------------
Private Sub Command4_Click() 'Bouton Page Properties
WebBrowser1.ExecWB OLECMDID_PROPERTIES, OLECMDEXECOPT_DODEFAULT 'Show Page Properties Window
End Sub
'----------------------------------------
 
Re : Imprimer page avec contenu webbrowser

Bonsoir,

Alors j'ai testé tout ça :
- La commande 1 imprime la page mais le webbrowser n'est pas visible
- La commande 2 ne fait rien
- La commande 3 ne fait rien
- La commande 4 affiche les paramètres du webbrowser

J'avais déjà vu la commande 1 sur internet mais elle ne répond pas a la situation 🙁

J'ai continué à parcourir internet toute l'aprem et il semble que cela soit encore plus compliqué que je ne l'avais imaginé. Malgré tout il y a peut être une solution. 😕

Pour simplifier la situation, je considère une page excel avec 1 webbrowser qui affiche google map.

L'astruce serait de crée un bouton qui exécuterai les fonctions suivantes :
1 - Effectuer un printscreen du userform
2 - Enregistrer cette image au format bmp
3 - Charger cette image dans une picture box
4 - Masquer le webbrowser
5 - Afficher la picture box

3, 4 et 5 sont des commandes simple (arrêter moi si je me trompe) :
3 - Image1.picture = Loadpicture(chemin)
4 - Webbrowser1.visible = false
5 - Image1.visible = true

La ou je bloque c'est sur les 2 première. 🙁
J'ai trouvé quelques trucs sur le net mais le webbrowser doit être en pleine ecran et donc l'image ne sera pas a la bonne taille.

Mes interrogations sont donc :
- Est il possible d'effectuer la capture d'écran d'un webbrowser (et uniquement de ce webbrowser) en utilisant sa localisation (location), sa hateur (height) et sa largeur (width) ?
- Comment enregistrer une capture d'écran au format .Jpg

Je continue a creuser la chose et je vous tien informé si j'avance la dessus mais n'hésitez pas a donner vos idées.

Bonne soirée à tous.

Guilhem.
 
Re : Imprimer page avec contenu webbrowser

re,

J'ai trouvé ce code qui semble bon mais je n'arrive pas a l'exploiter :

'------------------------------------------------------------
' Purpose: Allows screen captureing of controls/windows based on hWnd and save to a .BMP.
' Parameters:
' Example:
' Date: August,21 1998 @ 16:17:24
'------------------------------------------------------------
Option Explicit
Private Const CCHDEVICENAME = 32
Private Const CCHFORMNAME = 32
Public FileName As String
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type DEVMODE
dmDeviceName As String * CCHDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCHFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As DEVMODE) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Sub ScrnCap(Lt, Top, Rt, Bot)
On Error GoTo ErrorScrnCap
Dim rWIDTH As Long, rHEIGHT As Long
Dim SourceDC As Long, DestDC As Long, bHANDLE As Long, Wnd As Long
Dim dHANDLE As Long, dm As DEVMODE
rWIDTH = Rt - Lt
rHEIGHT = Bot - Top
SourceDC = CreateDC("DISPLAY", 0&, 0&, dm)
DestDC = CreateCompatibleDC(SourceDC)
bHANDLE = CreateCompatibleBitmap(SourceDC, rWIDTH, rHEIGHT)
SelectObject DestDC, bHANDLE
BitBlt DestDC, 0, 0, rWIDTH, rHEIGHT, SourceDC, Lt, Top, &HCC0020
Wnd = 0
OpenClipboard Wnd
EmptyClipboard
SetClipboardData 2, bHANDLE
CloseClipboard
DeleteDC DestDC
ReleaseDC dHANDLE, SourceDC
Exit Sub
ErrorScrnCap:
MsgBox Err & ":Error in ScrnCap(). Error Message:" & Err.Description, vbCritical, "Warning"
Exit Sub
End Sub
'------------------------------------------------------------
' Purpose: Captures a control/window based on hWnd and save to a .BMP.
' Parameters: hWnd=Control/Window to capture, fNAME=Save .BMP to...
' Example: obj.Capture lvLIST.hWnd,"TEST.BMP"
' Date: August,21 1998 @ 16:18:27
'------------------------------------------------------------
Public Sub Capture(control_hWnd As Long, Optional fNAME As String = "", Optional OnlyToClipBoard As Boolean = False)
On Error GoTo ErrorCapture
Dim sp As RECT, x As Long
If fNAME = "" Then
fNAME = Me.FileName
Else
Me.FileName = fNAME
End If
If Me.FileName <> "" Then
x = GetWindowRect(control_hWnd, sp)
ScrnCap sp.Left, sp.Top, sp.Right, sp.Bottom
If OnlyToClipBoard = False Then
SavePicture Clipboard.GetData, Me.FileName
End If
End If
Exit Sub
ErrorCapture:
MsgBox Err & ":Error in Caputre(). Error Message:" & Err.Description, vbCritical, "Warning"
Exit Sub
End Sub'------------------------------------------------------------



Et donc j'ecris Call webbrowser1.capture (lvLIST.hWnd,"TEST.BMP") mais ça ne fonctionne pas. 🙁

Des idées ? 😕
 
Re : Imprimer page avec contenu webbrowser

Une alternative :

À cette adresse, tu peux télécharger un programme gratuit qui peut imprimer en diverses formats
les cartes... Google Map Saver - Telecharger gratuit

Et tu peux faire apparaître la fenêtre de l'exécutable en utilisant cette petite procédure :

Je te laisse t'amuser avec les commandes "SendKeys" pour obtenir ce que tu désires ! ;-))
'----------------------------------------
Sub ShellOuvrirFichier()
Dim Fich As String
Fich = "Chemin où est l'exécutable" & "\gms.exe"
SendKeys "{TAB}"
Shell Fich
SendKeys "Montréal Canada" & "~"
End Sub
'----------------------------------------
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour