Image issue de l'appareil photo dans un userform
Salut à tous, j'ai découvert récemment l'outil appareil photo (eh oui ) que j'ai trouvé formidable et je me suis mis donc en tête d'afficher l'image dans un formulaire pour afficher un tableau complet, j'ai essayé avec un "Ctrl V" dans la propriété de l'image du formulaire mais l'image reste statique et n'est plus interactif comme lorsqu'elle était présente dans le classeur
Donc pour être clair je souhaite afficher l'image d'un tableau (avec ses mises en forme) dans un formulaire mais qu'il soit dynamique en fonction des données entrées dans ce même formulaire
Est-ce possible ??
Merci d'avance pour l'aide ça fait 2 jours que je cherche
Bon je me réponds tout seul
on considére que le bouton "actualisation" se nomme " CommandButton1" , l'image s'appelle "image1", l'userform se nomme"userform1", les cellules affichées dans l'image sont : ("B3:n14"), (l'appareil photo n'est pas utilisé)
Le but : afficher dans une image d'un userform l’aperçu d'une sélection d'un classeur
Le code n'est pas de moi
Mettre dans l'userform :
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(8) As Byte
End Type
Private Type PICTDESC
cbSize As Long
picType As Long
hImage As Long
End Type
Private Declare Function OpenClipboard& Lib "user32" (ByVal hwnd As Long)
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function GetClipboardData& Lib "user32" (ByVal wFormat%)
Private Declare Function CloseClipboard& Lib "user32" ()
Private Declare Function CopyImage& Lib "user32" _
(ByVal handle&, ByVal un1&, ByVal n1&, ByVal n2&, ByVal un2&)
Private Declare Function IIDFromString Lib "ole32" (ByVal lpsz As String _
, ByRef lpiid As GUID) As Long
Private Declare Function OleCreatePictureIndirect Lib "olepro32" _
(pPictDesc As PICTDESC, ByRef riid As GUID, ByVal fOwn As Long _
, ByRef ppvObj As IPicture) As Long
Private Sub CommandButton1_Click()
ImageToMePicture
End Sub
Private Sub UserForm_Initialize()
ImageToMePicture
End Sub
Private Sub ImageToMePicture()
actualisation
Range("B3:n14").CopyPicture xlScreen, xlBitmap
Dim hCopy&: OpenClipboard 0&
hCopy = CopyImage(GetClipboardData(2), 0, 0, 0, &H4)
CloseClipboard: If hCopy = 0 Then Exit Sub
Const IPictureIID = "{7BF80981-BF32-101A-8BBB-00AA00300CAB}"
Dim iPic As IPicture, tIID As GUID, tPICTDEST As PICTDESC
If IIDFromString(StrConv(IPictureIID, vbUnicode), tIID) Then Exit Sub
With tPICTDEST
.cbSize = Len(tPICTDEST)
.picType = 1
.hImage = hCopy
End With
If OleCreatePictureIndirect(tPICTDEST, tIID, 1, iPic) Then Exit Sub
Me.Image1.Picture = LoadPicture("")
Me.Image1.Picture = iPic
Set iPic = Nothing
ClearClipboard
End Sub
Private Sub ClearClipboard()
OpenClipboard 0&
EmptyClipboard
CloseClipboard
End Sub
Mettre dans un module :
(la macro "userform" sert à afficher le formulaire)
Sub Bouton_Userform()
actualisation
UserForm1.Show
End Sub
Sub actualisation()
Application.Calculate
End Sub