OVH Cloud OVH Cloud

macro pour redimensionner une forme automatique ou objet

3 réponses
Avatar
morganne
Bonjour,

J'aimerais pouvoir redimensionner une forme automatique ou un objet, sans
passer par la fenêtre "propriété" de l'objet. Est ce possible d'un click sur
l'objet ou la forme cela ouvre un mini formulaire qui demande la hauteur
puis la largeur de la forme voulue puis en validant, la macro se déclenche
pour redimensionner automatiquement. Je sais faire le formulaire, avec les 2
txt pour demander les dimensions mais la macro d'éxecution, c'est autre
chose.....

(Petite remarque: en passant par "propriété" de la forme (click droit
souris), si je met une hauteur de 1cm et une longueur de 8cm, excel me met
d'office 1.01cm de haut et 7.99cm de large!!!!! quelqu'un a déjà réussi à
contourner ce problème?)

Merci d'avance pour votre aide.
Morganne

3 réponses

Avatar
Modeste
Bonsour®
morganne wrote:
(Petite remarque: en passant par "propriété" de la forme (click droit
souris), si je met une hauteur de 1cm et une longueur de 8cm, excel me met
d'office 1.01cm de haut et 7.99cm de large!!!!! quelqu'un a déjà réussi à
contourner ce problème?)


cela est du à ce que les pixels ne sont pas fractionnables !!!
et qu'une conversion de dimensions en pouce, mm ou autres fait que l'on a
finalement toujours des pixels entiers d'affichés
comme les dimensions de pixels (variables selon les normes de
constructions) sont déja en fractions de pouce ou mm
l'arrondi se fait à la valeur entiere(pixel) la plus proche...

pour la premiere partie de la question :
il faut affecter la macro à l'objet ou bien à un bouton
ex voici le principe : dans ta macro formulaire qui récupere les valeurs
hauteur, largeur (éventuellement PosX et PosY)
puis
active.drawingobjects.width= largeur
active.drawingobjects.height= hauteur
active.drawingobjects.left= PosX
active.drawingobjects.top= PosY

à-propos des dimensions sur papier, je te conseille de lire ma reponse à ta
question précédente
;o)))

@+

--
les news pas à jour ?? ne passez plus par votre FAI, les news à la source
!!!
placez ce raccourci dans la ligne de commande
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr

Avatar
morganne
Bonjour,

Merci pour ta réponse.

Je pense avoir mal interprété ton code. A partir de l'objet, j'ouvre mon
formulaire "userform1" . Sur ce formulaire, j'ai mis 2 textbox: "txthaut"
pour la hauteur et "txtlarg" pour la largeur et un bouton pour valider
"cmdvalider".
A l'execution, il me met "erreur 424" objet requis.
Comme tu peux le voir, mon niveau en VBA n'est pas très haut....

Ci-joint ton code que j'ai voulue adapter:

Private Sub cmdvalider_Click()
active.DrawingObjects.Width = txthaut
active.DrawingObjects.Height = txtlarg
active.DrawingObjects.Left = posx
active.DrawingObjects.Top = posY

ActiveWindow.WindowState = xlMaximized
Unload UserForm1
End Sub

"Modeste" a écrit dans le message de news:

Bonsour®
morganne wrote:
(Petite remarque: en passant par "propriété" de la forme (click droit
souris), si je met une hauteur de 1cm et une longueur de 8cm, excel me
met
d'office 1.01cm de haut et 7.99cm de large!!!!! quelqu'un a déjà réussi à
contourner ce problème?)


cela est du à ce que les pixels ne sont pas fractionnables !!!
et qu'une conversion de dimensions en pouce, mm ou autres fait que l'on a
finalement toujours des pixels entiers d'affichés
comme les dimensions de pixels (variables selon les normes de
constructions) sont déja en fractions de pouce ou mm
l'arrondi se fait à la valeur entiere(pixel) la plus proche...

pour la premiere partie de la question :
il faut affecter la macro à l'objet ou bien à un bouton
ex voici le principe : dans ta macro formulaire qui récupere les valeurs
hauteur, largeur (éventuellement PosX et PosY)
puis
active.drawingobjects.width= largeur
active.drawingobjects.height= hauteur
active.drawingobjects.left= PosX
active.drawingobjects.top= PosY

à-propos des dimensions sur papier, je te conseille de lire ma reponse à
ta question précédente
;o)))

@+

--
les news pas à jour ?? ne passez plus par votre FAI, les news à la source
!!!
placez ce raccourci dans la ligne de commande
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr





Avatar
Modeste
Bonsour®
morganne wrote:
Comme tu peux le voir, mon niveau en VBA n'est pas très haut....


;o)))
tu t'attaques à des choses qui en VBA ne sont pas à proprement parler de
niveau débutant
car cela implique la connaissances préalables d'autres notions plus etendues
et beaucoup plus basiques...

comme tu ne fournis pas le code de ton formulaire, il est difficile
d'adapter une ebauche de solution
à un cas concret.
j'espère que tu saura adapter l'exemple simple rapidement fourni :
http://cjoint.com/?lBad2RkXWa

dans cet exemple seuls certains objets sont associés à la macro de
redimensionnement
pour que cette macro s'applique implicitement à n'importe quel objet,
il faudrait d'abord la modifier (application.caller n'est plus valable)
de façon à ce qu'elle réponde à une proc évenementielle (module de classe)
du type objet_change

par extension il serait également possible de modifier
l'ordre (superposition),
les couleurs( texte,trait,fond)
la rotation

@+







"Modeste" a écrit dans le message de news:

Bonsour®
morganne wrote:
(Petite remarque: en passant par "propriété" de la forme (click droit
souris), si je met une hauteur de 1cm et une longueur de 8cm, excel me
met
d'office 1.01cm de haut et 7.99cm de large!!!!! quelqu'un a déjà réussi
à
contourner ce problème?)


cela est du à ce que les pixels ne sont pas fractionnables !!!
et qu'une conversion de dimensions en pouce, mm ou autres fait que l'on a
finalement toujours des pixels entiers d'affichés
comme les dimensions de pixels (variables selon les normes de
constructions) sont déja en fractions de pouce ou mm
l'arrondi se fait à la valeur entiere(pixel) la plus proche...

pour la premiere partie de la question :
il faut affecter la macro à l'objet ou bien à un bouton
ex voici le principe : dans ta macro formulaire qui récupere les valeurs
hauteur, largeur (éventuellement PosX et PosY)
puis
active.drawingobjects.width= largeur
active.drawingobjects.height= hauteur
active.drawingobjects.left= PosX
active.drawingobjects.top= PosY

à-propos des dimensions sur papier, je te conseille de lire ma reponse à
ta question précédente
;o)))

@+

--
les news pas à jour ?? ne passez plus par votre FAI, les news à la source
!!!
placez ce raccourci dans la ligne de commande
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr



--
les news pas à jour ?? ne passez plus par votre FAI, les news à la source
!!!
placez ce raccourci dans la ligne de commande
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr