Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Insérer une image dans un signet word depuis excel vba

3 réponses
Avatar
caroual
Bonjour,
Je suis bloqu=E9e depuis une semaine sur ce probl=E8me, il ne doit pas manq=
uer grand chose mais cela m'=E9chappe. Merci =E0 ceux qui se pencheront sur=
mon probl=E8me.
Caroual

Private Sub CommandButton2_Click()
Dim Wd, dc As Variant
Application.ScreenUpdating =3D False
chemins
Set Wd =3D CreateObject("Word.Application")
Wd.Visible =3D True
Set dc =3D Wd.Documents.Add(chemin1 & "Dossier individuel de qualification =
- Controle final.doc")
AppActivate "word", 1
Wd.ActiveDocument.Bookmarks("Photo_Employ=E9").Select
With dc
.Bookmarks("Nom_Formateur").Range.Text =3D formateur
End With
With dc.Bookmarks
.DefaultSorting =3D wdSortByName
.ShowHidden =3D False
End With
'cela fonctionne jusqu'ici, ensuite erreur 438 propri=E9t=E9 ou m=E9thode n=
on g=E9r=E9e par cet objet. J'ai l'impression que mon document word n'est p=
as actif ???

dc.Bookmarks("Photo_Employ=E9").InlineShapes.AddPicture Filename:=3D _
"P:\D_Qualifications\300. Photos Op=E9rateurs\10000.jpg", LinkToFile:=
=3DFalse, SaveWithDocument:=3DTrue
End Sub

3 réponses

Avatar
caroual
Le mardi 8 avril 2014 10:18:59 UTC+2, a écrit :
Bonjour, Je suis bloquée depuis une semaine sur ce problème, il ne do it pas manquer grand chose mais cela m'échappe. Merci à ceux qui se pen cheront sur mon problème. Caroual Private Sub CommandButton2_Click() Dim Wd, dc As Variant Application.ScreenUpdating = False chemins Set Wd = C reateObject("Word.Application") Wd.Visible = True Set dc = Wd.Documents .Add(chemin1 & "Dossier individuel de qualification - Controle final.doc") AppActivate "word", 1 Wd.ActiveDocument.Bookmarks("Photo_Employé").Select With dc .Bookmarks("Nom_Formateur").Range.Text = formateur End With With dc.Bookmarks .DefaultSorting = wdSortByName .ShowHidden = False End Wi th 'cela fonctionne jusqu'ici, ensuite erreur 438 propriété ou méthod e non gérée par cet objet. J'ai l'impression que mon document word n'es t pas actif ??? dc.Bookmarks("Photo_Employé").InlineShapes.AddPicture Fil ename:= _ "P:D_Qualifications300. Photos Opérateurs10000.jpg", LinkT oFile:lse, SaveWithDocument:=True End Sub



Je lance une macro depuis excel, cette macro ouvre un fichier word où j'a i créé des signets dans un tableau, je voudrais insérer une image à l'endroit d'un signet.
Avatar
MichD
Bonjour,

Pour exécuter la procédure suivante, tu dois ajouter au projetVBA d'Excel
la référence : "Microsoft Word xx Objects Library"

Je te suggère de toujours ajouter la référence pour écrire le code. Lorsque
tu définis les variables, les méthodes et propriétés des objets s'affichent
dès que tu insères le "point" après un objet. Cela aide énormément à
écrire le code à moins de connaître par coeur les propriétés et méthodes
de chaque objet...

Lorsque la procédure a été testée et qu'elle fonctionne très bien, on peut
enlever la référence et modifier la déclaration des variables comme "objet"

ATTENTION : selon le code, cela peut être problématique de déclarer une
variable comme Objet. Par exemple, l'objet Range existe dans Word et Excel.
Comme tu es dans un module Excel, à moins de faire une déclaration comme
j'ai fait dans la procédure, l'objet "Range" est considéré comme une objet
appartenant à Excel et à ce titre, il est évident qu'il n'a ni les
propriétés et
les méthodes d'un objet Range dans Word.


Voici un exemple de code : Adapte la valeur des variables et le nom du
bookmark
'-----------------------------------------------------------------------------
Private Sub Test()
Dim Wd As Word.Application, Dc As Word.Document
Dim Chemin As String, Fichier As String
Dim FichierImage As String, Rg As Word.Range
Dim Img As Word.InlineShape

'*************************************************
'où est le document Word
Chemin = "c:UsersTon ProfilDocuments"
'Le nom du fichier Word à ouvrir
Fichier = "Dossier individuel de qualification - Controle final.doc"
'Chemin et nom du fichier Image à insérer
FichierImage = "C:UsersTon profilPicturesFenêtre TDC.JPG"
'*************************************************

Application.ScreenUpdating = False

Set Wd = CreateObject("Word.Application")
Wd.Visible = True
Set Dc = Wd.Documents.Open(Chemin & Fichier)

With Dc
'Teste si le signet existe
If .Bookmarks.Exists("MichD") Then
Set Rg = .Bookmarks("MichD").Range
'supprimer les images si déjà présentes
'dans le signet
With Rg
While .InlineShapes.Count > 0
.InlineShapes(1).Delete
Wend
Set Img = .InlineShapes.AddPicture(FichierImage, False, True)

End With
End If
'Si tu veux travailler avec l'image insérée - Dimension, rogner...
With Img
'Pour définir plusieurs caractéristiques de l'image
.PictureFormat.CropRight = X ' X valeur à définir
.PictureFormat.CropTop = Y ' Y valeur à définir
.ScaleHeight = 37
.ScaleWidth = 37
End With
.Bookmarks.Add "MichD", Rg
End With

'fermer le document Word avec sauvegarde
Dc.Close True
'Fermer l'instance Word
Wd.Quit

'Libérer la mémoire des objets
Set Rg = Nothing: Set Img = Nothing
Set Dc = Nothing: Set Wd = Nothing
Application.ScreenUpdating = True
End Sub
'-----------------------------------------------------------------------------
Avatar
caroual
Cela m'intéressait aussi de modifier les dimensions.
Je vais tester.
Merci beaucoup