Bonjour à tous !
Comme beaucoup ici, je débute vba et même en cherchant partout sur les différents forums, il reste quelques problèmes que je n'arrive pas à résoudre...
Voici le contexte : je dispose de différents documents Excel, chacun contenant des tableaux, que je souhaite récupérer sous format image depuis vba Word pour les insérer dans ma page Word active.
Pour cela, j'utilise le code suivant :
La partie qui me pose problème est celle-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 Private Sub Montableau() Set AppXL = New Excel.Application Set AppXL = CreateObject("Excel.Application") AppXL.Visible = False AppXL.DisplayAlerts = False 'On sélectionne le fichier Excel d'où on tire l'image Set DocExcel = AppXL.Workbooks.Open(FileName:="Chemin\fichierexcel.xlsx") DocExcel.Activate 'On copie le tableau DocExcel.Sheets("Mononglet").Range("A1:P50").Copy 'On le colle dans le doc atuel (word), avec lien avec le tableau sous Excel, sous format image Selection.PasteSpecial Link:=True, DataType:=wdPasteBitmap 'On l'insère à un endroit choisi du document word grâce à un signet (Bookmark) Selection.GoTo What:=wdGoToBookmark, Name:="Signet1" 'On sélectionne l'image dans le doc ActiveDocument.Shapes(1).Select 'On redimensionne l'image Selection.ShapeRange.ScaleWidth 0.49, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.ScaleHeight 0.49, msoFalse, msoScaleFromBottomRight 'On déplace l'image Selection.ShapeRange.IncrementLeft 44.25 Selection.ShapeRange.IncrementTop -8.25 'On fait en sorte que le texte se positionne autour de l'image, et non pas dessous (par défaut) Selection.ShapeRange.WrapFormat.AllowOverlap = True Selection.ShapeRange.WrapFormat.Side = wdWrapBoth Selection.ShapeRange.WrapFormat.DistanceTop = CentimetersToPoints(0) Selection.ShapeRange.WrapFormat.DistanceBottom = CentimetersToPoints(0) Selection.ShapeRange.WrapFormat.DistanceLeft = CentimetersToPoints(0.32) Selection.ShapeRange.WrapFormat.DistanceRight = CentimetersToPoints(0.32) Selection.ShapeRange.WrapFormat.Type = wdWrapSquare DocExcel.Close True AppXL.Quit MsgBox "Tentative effectuée" End Sub
En effet, je ne parviens pas à trouver de fonction qui me permette de récupérer le nom de mon image (qui varie à chaque tentative), pour ensuite lui appliquer les attributs suivants (dimensions, etc).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'On sélectionne l'image dans le doc ActiveDocument.Shapes(1).Select
J'ai cru comprendre qu'il était nécessaire de renommer l'image pendant le copier-coller, parce qu'impossible de le faire après, mais je ne vois pas trop comment ?
Tout le reste du code fonctionne, le seul problème est de sélectionner l'image qui m'intéresse pour lui appliquer des attributs.
Merci beaucoup d'avance pour votre aide !! Bonne soirée à tous
Partager