OVH Cloud OVH Cloud

Redimensionner les images en VBA

12 réponses
Avatar
Fabrice
Bonjour à tous,

Je souhaite créer une macro qui redimensionne l'image sélectionnée à 50% de
sa taille réelle, vu que j'en ai beaucoup à redimensionner.

Je souhaiterais que ma macro fonctionne comme suit :

- Sélection de l'image
- Exécution de la macro pour qu'elle agisse sur la sélection

J'ai enregistré une macro pour voir le code et il me donne l'instruction
suivante :

Selection.InlineShapes(1).Width = 282.9

Est-ce qu'il est possible d'agir sur l'objet sélectionné et non sur l'objet
avec l'index 1 et comment lui dire que je souhaites le 50% de la taille
d'origine. Il refuse les %.

Merci d'avance de votre aide et bonne journée
Fabrice

10 réponses

1 2
Avatar
geo
Bonjour

-----Message d'origine-----
Bonjour à tous,

Je souhaite créer une macro qui redimensionne l'image
sélectionnée à 50% de

sa taille réelle, vu que j'en ai beaucoup à
redimensionner.


Je souhaiterais que ma macro fonctionne comme suit :

- Sélection de l'image
- Exécution de la macro pour qu'elle agisse sur la
sélection


J'ai enregistré une macro pour voir le code et il me
donne l'instruction

suivante :

Selection.InlineShapes(1).Width = 282.9


Une idée (non testée) :
L = Selection.InlineShapes(1).Width
Selection.InlineShapes(1).Width = L/2

A+

Avatar
Anacoluthe
Bonjour !

'Fabrice' nous a écrit ...
J'ai enregistré une macro pour voir le code et il me donne l'instruction
suivante : Selection.InlineShapes(1).Width = 282.9


Ce sont les limites de l'enregistreur de macro :
il enregistre vos dimensions en absolu ! Alors qu'il suffit
d'écrire un truc tout simple du genre
With Selection.InlineShapes(1)
.Width = .Width / 2
' ou encore pour reprendre vos % : .Width = .Width * 0.5
End With

Anacoluthe
« L'ennui, avec l'absolu, c'est que quand on le quitte,
on tombe nécessairement dans le relatif. »
- Jean-Claude CLARI

Avatar
Anacoluthe
Bonjour !

'geo' nous a écrit ...
Une idée (non testée) :
L = Selection.InlineShapes(1).Width
Selection.InlineShapes(1).Width = L/2


Oups, pas vu que tu avais déjà retaillé les images comme il faut

A+
A~

Avatar
geo
Bonjour

Oups, pas vu que tu avais déjà retaillé les images comme
il faut


Ta solution est pas mal non plus :-)))

Avatar
Fabrice
Merci de ta réponse Anacoluthe et excuse-moi de ma réponse tardive.

Ton code fonctionne très bien merci.

Je pensais que l'instruction With Selection.InlineShapes(1) faisait toujours
référence à la première forme insérée, vu qu'il y a le chiffre (1). Mais
non, ça marche sur la sélection. Je trouve ça bizarre. Pour ma culture
générale, est-ce que tu as une explication ?

En tout cas, merci de ton aide et bonne journée

Fabrice

"Anacoluthe" a écrit dans le message de
news:
Bonjour !

'Fabrice' nous a écrit ...
J'ai enregistré une macro pour voir le code et il me donne l'instruction
suivante : Selection.InlineShapes(1).Width = 282.9


Ce sont les limites de l'enregistreur de macro :
il enregistre vos dimensions en absolu ! Alors qu'il suffit
d'écrire un truc tout simple du genre
With Selection.InlineShapes(1)
.Width = .Width / 2
' ou encore pour reprendre vos % : .Width = .Width * 0.5
End With

Anacoluthe
« L'ennui, avec l'absolu, c'est que quand on le quitte,
on tombe nécessairement dans le relatif. »
- Jean-Claude CLARI




Avatar
Geo

Merci de ta réponse Anacoluthe et excuse-moi de ma réponse tardive.

Ton code fonctionne très bien merci.

Je pensais que l'instruction With Selection.InlineShapes(1) faisait
toujours référence à la première forme insérée, vu qu'il y a le
chiffre (1). Mais non, ça marche sur la sélection. Je trouve ça
bizarre. Pour ma culture générale, est-ce que tu as une explication
?


Moi aussi j'aimerais savoir, oh Anacoluthe le magicien des formes.

Avatar
Anacoluthe
Bonjour !

'Fabrice' nous a écrit ...
Selection.InlineShapes(1)
Je trouve ça bizarre.


Selection.InlineShapes(1) = le 1er des InlineShapes de Selection
à supposer que Sélection, qui n'est qu'un sous-ensemble
particulier ( 'Range') du document contienne une collection
de InlineShapes non vide bien sûr. Le premier InlineShape
de tout le document s'écrirait plutôt
ActiveDocument.InlineShapes(1)

Anacoluthe
« -Moi, j'ai dit bizarre ? Comme c'est bizarre... »
- Jacques PREVERT - Marcel CARNE

Avatar
Bonsoir à tous,

Pour moi cette éclaircissement, est aussi clair que :
' ou encore pour reprendre vos % : .Width = .Width * 0.5

J'espère pour lui que mon homonyme comprend mieux.
Pour ma part je me suis déjà inscrit depuis longtemps pour un pélerinage en Normandie mais bon j'ai déjà fait Lourdes, sur les
conseil de Coluche j'avais aussi fait Lisieux...
Bref un jour peut être je comprendrais pourquoi tout cela est si drôle de ne pas comprendre ! Bon sang mais c'est bien sur !

Merci d'avoir lu jusque là.
Avatar
Fabrice
Merci Anacoluthe pour ton explication.

Je ne savais pas que Selection était aussi une collection. C'est nickel.
Merci

Bonne journée et cordiales salutations
Fabrice

"Anacoluthe" a écrit dans le message de
news:
Bonjour !

'Fabrice' nous a écrit ...
Selection.InlineShapes(1)
Je trouve ça bizarre.


Selection.InlineShapes(1) = le 1er des InlineShapes de Selection
à supposer que Sélection, qui n'est qu'un sous-ensemble
particulier ( 'Range') du document contienne une collection
de InlineShapes non vide bien sûr. Le premier InlineShape
de tout le document s'écrirait plutôt
ActiveDocument.InlineShapes(1)

Anacoluthe
« -Moi, j'ai dit bizarre ? Comme c'est bizarre... »
- Jacques PREVERT - Marcel CARNE




Avatar
Geo
Bonjour Anacoluthe


Bonjour !

'Fabrice' nous a écrit ...
Selection.InlineShapes(1)
Je trouve ça bizarre.


Selection.InlineShapes(1) = le 1er des InlineShapes de Selection
à supposer que Sélection, qui n'est qu'un sous-ensemble
particulier ( 'Range') du document contienne une collection
de InlineShapes non vide bien sûr. Le premier InlineShape
de tout le document s'écrirait plutôt
ActiveDocument.InlineShapes(1)


Ce que j'ai compris c'est que le facteur de réduction s'est appliqué
d'un coup à toutes les formes comprises dans la sélection.
Et là effectivement je comprends pas non plus.


1 2