[Catégorie modifiée .Net -> VBA] VBA Image

cs_guij35 Messages postés 5 Date d'inscription jeudi 7 avril 2011 Statut Membre Dernière intervention 18 avril 2011 - 7 avril 2011 à 10:40
cs_guij35 Messages postés 5 Date d'inscription jeudi 7 avril 2011 Statut Membre Dernière intervention 18 avril 2011 - 13 avril 2011 à 06:27
Bonjour à toutes et à tous,

Voila, à partir d'un Userform sous excel,l'utilisateur rentre les données tel que le "nom" , "prenom"... dans l'userform et apres avoir cliqué sur un boutton, cela créer une entete sous word avec ces données. Ce que je cherche à faire est de mettre dans l'entete une image qui se trouve sur une feuille excel
et non sur le disque dure (C:\...).
Quelqu'un saurait comment s'y prendre?


Merci d'avance

guij35

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 avril 2011 à 12:47
Salut

Tu as de la chance, j'ai résolu ce problème récemment dans du VBA sous Word :
En supposant que l'image s'appelle imgLogoClient et que l'emplacement du curseur du doc Word soit dans un tableau Word

Déclaration :
Private Declare Function CopyImage Lib "user32" (ByVal Handle As Long, ByVal imageType As Long, ByVal newWidth As Long, ByVal newHeight As Long, ByVal lFlags 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 Const IMAGE_BITMAP          As Long = &H0
Private Const LR_COPYRETURNORG      As Long = &H4
Private Const CF_BITMAP             As Long = &H2

Code
Dim ImageHandle As Long
With maSelection   ' objet Selection
    ' Charge l'image et fournit son adresse, on lui écrira
    ImageHandle = CopyImage(imgLogoClient.Handle, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG)
    ' Ouvre le presse-papier (= Selection en VBA)
    OpenClipboard ByVal 0&
    ' Nettoyage avant insertion
    EmptyClipboard
    DoEvents
    ' Insersion de l'adresse de l'image dans la zone graphique du presse-papier
    SetClipboardData CF_BITMAP, ImageHandle
    ' Referme le presse-papier
    CloseClipboard
    ' Sélectionne quelque chose
    .MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    ' Rappelle l'image et l'insère sur le document
    DoEvents
    .Paste
    ' Déplacement 2ème cellule
    .MoveRight Unit:=wdCharacter, Count:=1
End With

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_guij35 Messages postés 5 Date d'inscription jeudi 7 avril 2011 Statut Membre Dernière intervention 18 avril 2011
13 avril 2011 à 06:27
Merci beaucoup Jack,

Cependant, un message d'erreur surlignant la première ligne " private declare function...." apparait précisant: " seuls des commentaires peuvent apparaitre apres End Sub, End function ou End Property"



( Il n'est peut etre pas utile de le préciser mais j'utilise excel 2010)
0
Rejoignez-nous