Trouver les images dans un fichier Word pour les modifier

bernardbouree Messages postés 36 Date d'inscription dimanche 1 juillet 2001 Statut Membre Dernière intervention 19 avril 2015 - 19 avril 2015 à 16:28
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 26 avril 2015 à 17:51
Bonjour,
Je cherche à modifier les images d'un fichier word.
J'ai le code suivant:
Dim myS As Shape

For Each myS In ActiveDocument.Shapes
With myS
.Height = 50
.Width = 50
.Left = InchesToPoints(1.5)
.RelativeHorizontalPosition = wdRelativeHorizontalPositionRightMarginArea
.Top = InchesToPoints(1.5)
.RelativeVerticalPosition = wdRelativeVerticalPositionParagraph


End With
Next myS


Mais il ne marche pas , il ne trouve aucune image.

Merci de votre aide.

Bernard

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 19/04/2015 à 20:42
Bonjour,
Une image insérée sur un document Word par le menu Insertion ==>> image, n'est pas un objet Shape (et n'appartient donc pas à la collection Shapes)
Ce que t'aurait sans aucun doute perrmis de réaliser :
MsgBox ActiveDocument.Shapes.Count


________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
BernardBouree
26 avril 2015 à 17:27
Bonjour

J'ai pas eu le temps de répondre.
Un peu surpris par ce message!
Je ne suis surement pas très doué, mais il se trouve que j'ai passé beaucoup de temps dans l'aide et sur MSDN sans trouver ce que je cherchais.
En effet il semble que des images peuvent être insérées de plusieurs façons dans Word, pouvant coexister mais demandant des traitements différents.
Je n'ai trouvé nul part un document qui m'explique clairement quelles étaient les différences entre Shape, InlineShape, Picture ?
Elles peuvent être redimensionnées mais certaines ne peuvent voire leur position modifiées.

Merci pour ton aide.

Bernard
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 26/04/2015 à 18:11
Je ne vois pas où est ton brouillard.
Voici ce que tu peux lire dans l'aide VBA, à propos de la collection Shapes :
La collection Shapes ne contient pas d'objets InlineShape. Les objets InlineShape sont traités comme des caractères et, en tant que tels, insérés dans une ligne de texte. Les objets Shape sont ancrés à une plage de texte mais sont flottants et peuvent être placés n'importe où sur la page. Pour convertir des formes d'un type à un autre, utilisez les méthodes ConvertToInlineShape et ConvertToShape. Seuls les objets OLE, les images et les contrôles ActiveX peuvent être convertis en formes insérées.

Et voici ce que tu peux lire dans l'aide VBA, à propos de la collection InlineShapes :
Les objets Shape sont ancrés à une plage de texte mais sont flottants et peuvent être placés n'importe où sur la page. Pour convertir des formes d'un type à un autre, utilisez les méthodes ConvertToInlineShape et ConvertToShape. Seuls les objets OLE, les images et les contrôles ActiveX peuvent être convertis en formes insérées.

L'utilisation de la propriété Count pour cette collection dans un document renvoie le nombre d'éléments présents dans l'article principal seulement. Pour compter les éléments placés dans d'autres articles, utilisez la collection avec l'objet Range.


les différences entre Shape, InlineShape, Picture ?

tout cela ma parait clair.

Picture est une propriété qui ne peut concerner qu'un contrôle activex... (contrôle image en ce qui te concerne) , ce qu'est un objet shape et n'est pas un objet inlineshape

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 19/04/2015 à 22:31
Maintenant :
1) je ne travaille personnellement jamais avec Word, ni avec son VBA.
2) Mais, puisque tu as posé une question, j'ai très exceptionnellement ouvert Word, juste pour voir ...
Mon premier réflexe a été de chercher dans l'aide VBA de Word (hé oui ! ... Elle est faite pour cela, l'aide, à consommer sans modération).
J'y ai tout de suite vu que les images ainsi insérées étaient du type InlineShape et appartenaient à la collection InlineShapes.

Dis-moi, s'il te plait : quelle est selon toi la différence fondamentale qu'il y a entre toi et moi ?

EDIT : parce que j'y étais et que je suis curieux, j'ai été intrigué par le nom d'une méthode (devine laquelle). Je l'ai essayée, juste pour voir ... ===>> hé oui, tu sais quoi, en plus ? ===>> elle est tout simplement capable de transformer une inlineshape en shape (si on le souhaite). Je l'ai donc fait ===>> et après, j'ai bel et bien eu des shapes, avec leur nom et tout et tout ...
Je te laisse la chercher et la découvrir à ton tour. Un indice : le nom de cette méthode est on ne peut plus révélateur de sa fonction.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
-1
Rejoignez-nous