Suman doit utiliser une macro pour insérer une image à la page 10 d’un document particulier. Il s’interroge sur la meilleure façon, au sein de la macro, de procéder.

Si vous voulez que l’image soit la seule chose de la page 10, la tâche est plutôt simple: utilisez la macro pour localiser la page 10, insérez l’image, puis insérez un saut de page après l’image. Cela fait alors remonter tout après l’image d’une page, de sorte que l’ancienne page 10 devient la page 11, la page 11 devient la page 12, et ainsi de suite.

Sub InsertImage1()

Dim PicPath As String

PicPath = "C:\My Pictures\My Scans\scan0002.jpg"

ActiveDocument.GoTo(What:=wdGoToPage, Count:=10).Select     Selection.InlineShapes.AddPicture FileName:=PicPath, _       LinkToFile:=False, SaveWithDocument:=True     Selection.InsertBreak Type:=wdPageBreak End Sub

La macro insère l’image sous forme de forme en ligne. Si vous préférez, vous pouvez insérer l’image sous forme de forme flottante, ce qui permettrait au texte de s’enrouler autour de l’image. La macro suivante fait cela, ainsi que le centrage de l’image au centre de la page:

Sub InsertImage2()

Dim PicPath As String     Dim aShape As Shape

PicPath = "C:\My Pictures\My Scans\scan0002.jpg"

ActiveDocument.GoTo(What:=wdGoToPage, Count:=10).Select     Set aShape = Selection.InlineShapes.AddPicture(FileName:=PicPath, _       LinkToFile:=False, SaveWithDocument:=True).ConvertToShape     With aShape         .WrapFormat.Type = wdWrapTight         .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage         .RelativeVerticalPosition = wdRelativeVerticalPositionPage         .Top = wdShapeCenter         .Left = wdShapeCenter         .Select     End With End Sub

Si vous souhaitez que votre image remplace une image existante (peut-être par une image mise à jour), vous pouvez le faire en utilisant une macro un peu plus complexe.

La macro suivante localisera la première image sur la page souhaitée et la remplacera par une forme en ligne.

Sub ReplaceImage()

Dim r1 As Range     Dim r2 As Range     Dim nPages As Long     Dim nP As Long     Dim PicPath As String     Dim sTemp As String

PicPath = "C:\My Pictures\My Scans\scan0002.jpg"

nP = 10    ' Page number on which to replace the image

sTemp = ""

nPages = ActiveDocument.ComputeStatistics(statistic:=wdStatisticPages)

If nP > nPages Then         sTemp = "You are trying to go to a non-existent page"

Else         Set r1 = ActiveDocument.GoTo(What:=wdGoToPage, Count:=nP)

If nP = nPages Then             Set r2 = ActiveDocument.Range             r1.End = r2.End         Else             Set r2 = ActiveDocument.GoTo(What:=wdGoToPage, Count:=nP + 1)

r1.End = r2.Start - 2         End If         If r1.InlineShapes.Count = 0 Then             sTemp = "Page " & nP & " does not have an inline picture"

Else             r1.InlineShapes(1).Select             Selection.InlineShapes.AddPicture FileName:=PicPath, _               LinkToFile:=False, SaveWithDocument:=True         End If     End If     If sTemp > "" Then MsgBox sTemp End Sub

WordTips est votre source pour une formation Microsoft Word rentable.

(Microsoft Word est le logiciel de traitement de texte le plus populaire au monde.) Cette astuce (13139) s’applique à Microsoft Word 2007, 2010, 2013, 2016, 2019 et Word dans Office 365.