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

Modifier la taille d'une image insérée par macros

1 réponse
Avatar
DarthMac
Bonjour aux experts Word qui hantent ce groupe,

je quitte temporairement la salle MPFExcel pour venir taper à votre
porte et chercher une réponse à mes questionnements. Je dis cela pour
vous expliquer que VBA m'est connu, mais que je développe surtout sur
Excel. Les connaissances acquises m'ont juste permis, sur word (comme
sur ppt d'ailleurs) d'enregistrer des macros et de purifier un peu le
code a posteriori.

Bref, ma question (ref à mon sujet de fil) vient parce que je dois en
ce moment inséré moult images dans un document (un cahier des charges
pour la petite histoire) et que je dois à chaque fois les resizer à ma
mesure, d'autant que, maniaque que je suis à la limite du T.O.C., il me
faut toujours des valeurs entières de taille au moins d'un côté, ou
alors un pourcentage (entier) de l'initiale.

re-Bref, j'ai donc enregistré une macro après avoir inséré ma première
image dans ce doc et je n'ai gardé que :
Selection.InlineShapes(1).Height = xxx.x (idem pour Width)
Mais comme je préfère le pourcentage, j'ai cherché un chouilla dans
l'aide (pas plus claire, voire moins que celle de VBA for XL) et j'ai
finalement opté pour :
Sub sixtypercent()
Selection.InlineShapes(1).ScaleHeight = 60
Selection.InlineShapes(1).ScaleWidth = 60
End Sub

Parfait, rebelote pour du 70% tout pareil.

J'ai désormais 2 problèmes.

1 - Le premier est que je voulais améliorer ma macro et tâcher de
récupérer la valeur de "scale" en cours et que la macro (à chaque
activation) ayant le "scale", y ajoute 10. Et ainsi de 10 en 10 (ou 20
en 20) jusqu'à mettons 120% et hop, on repart à 50%.

Cela aurais été super mais je n'arrive pas à récupérer le "scale" en
cours. Savez-vous comment je puis faire cela ?

2 - Second problème. Ce soir j'insère des images et je les passe en
habillage "derrière" au lieu de "aligné" (ce dernier est le cas des
images de ce fameux cahier des charges).
Hélas, après avoir fait cela, la macro sus-citée sixtypercent() ne
fonctionne pas [Le membre de la collection requis n'existe pas]. Too
bad !
Je me dis alors, je vais enregistrer la macro. Je lance ça et là :
impossible de changer de "derrière" vers "aligné" et inverse... grrrr !
Je me dis, ce n'est pas grave, modifions la taille en "derrière" ce
sera déjà ça. Et là, l'enregistreur m'a mis pas loins de 30 lignes pour
ne rien mettre sur la modif. de taille d'image que je venais de
faire...
re-grrrrrrrrrr !

Seconde question donc, comment pourrais-je faire ? Est-ce à dire que
les objets images sont différents selon la méthode d'habillage ?

Merci de vos lumières car j'avoue que je suis largué. Je trouve que
pour Wd, VBA est beaucoup plus sensible (et peut-être limité pour le
béotien) que XL.

Merci d'avance de vos très nombreuses et appréciables réponses.

Mac

1 réponse

Avatar
DarthMac
Re bonjour à tous,

j'ai finalement (en rechargeant + de messages en entier) trouvé des
bouts de réponses.
Pour la question 1, pour une image "alignée" sur le texte, je sais donc
comment faire.
Reste la 2 : en résumé 2 sous-questions :
- comment passer de mode "aligné" à habillé "derrière" ( par exemple) ?
- comment appliquer du scale sur une image habillée derrière puisque
Selection.InlineShapes(1).ScaleHeight = 60
ne fonctionne pas dans ce cas ?


Merci encore et d'avance :-)

mac


DarthMac a émis l'idée suivante :
Bonjour aux experts Word qui hantent ce groupe,

je quitte temporairement la salle MPFExcel pour venir taper à votre porte et
chercher une réponse à mes questionnements. Je dis cela pour vous expliquer
que VBA m'est connu, mais que je développe surtout sur Excel. Les
connaissances acquises m'ont juste permis, sur word (comme sur ppt
d'ailleurs) d'enregistrer des macros et de purifier un peu le code a
posteriori.

Bref, ma question (ref à mon sujet de fil) vient parce que je dois en ce
moment inséré moult images dans un document (un cahier des charges pour la
petite histoire) et que je dois à chaque fois les resizer à ma mesure,
d'autant que, maniaque que je suis à la limite du T.O.C., il me faut toujours
des valeurs entières de taille au moins d'un côté, ou alors un pourcentage
(entier) de l'initiale.

re-Bref, j'ai donc enregistré une macro après avoir inséré ma première image
dans ce doc et je n'ai gardé que :
Selection.InlineShapes(1).Height = xxx.x (idem pour Width)
Mais comme je préfère le pourcentage, j'ai cherché un chouilla dans l'aide
(pas plus claire, voire moins que celle de VBA for XL) et j'ai finalement
opté pour :
Sub sixtypercent()
Selection.InlineShapes(1).ScaleHeight = 60
Selection.InlineShapes(1).ScaleWidth = 60
End Sub

Parfait, rebelote pour du 70% tout pareil.

J'ai désormais 2 problèmes.

1 - Le premier est que je voulais améliorer ma macro et tâcher de récupérer
la valeur de "scale" en cours et que la macro (à chaque activation) ayant le
"scale", y ajoute 10. Et ainsi de 10 en 10 (ou 20 en 20) jusqu'à mettons 120%
et hop, on repart à 50%.

Cela aurais été super mais je n'arrive pas à récupérer le "scale" en cours.
Savez-vous comment je puis faire cela ?

2 - Second problème. Ce soir j'insère des images et je les passe en habillage
"derrière" au lieu de "aligné" (ce dernier est le cas des images de ce fameux
cahier des charges).
Hélas, après avoir fait cela, la macro sus-citée sixtypercent() ne fonctionne
pas [Le membre de la collection requis n'existe pas]. Too bad !
Je me dis alors, je vais enregistrer la macro. Je lance ça et là : impossible
de changer de "derrière" vers "aligné" et inverse... grrrr !
Je me dis, ce n'est pas grave, modifions la taille en "derrière" ce sera déjà
ça. Et là, l'enregistreur m'a mis pas loins de 30 lignes pour ne rien mettre
sur la modif. de taille d'image que je venais de faire...
re-grrrrrrrrrr !

Seconde question donc, comment pourrais-je faire ? Est-ce à dire que les
objets images sont différents selon la méthode d'habillage ?

Merci de vos lumières car j'avoue que je suis largué. Je trouve que pour Wd,
VBA est beaucoup plus sensible (et peut-être limité pour le béotien) que XL.

Merci d'avance de vos très nombreuses et appréciables réponses.

Mac