Bonjour,
Je suis confronté à un petit problème que je n'arrive pas à résoudre, mais comme on dit : "S'il n'y à pas de solution c'est qu'il n'y à pas de problème..."
Dans mon fichier en exemple, je veux faire pivoter d'un certain angle une zone rectangle tout en m'assurant qu'elle reste incluse dans ma zone graphique (que ça ne déborde pas en fin de compte) et qu'elle soit centrée à l'origine de mon repère (le problème...).
J'ai un peu triché en positionnant mon repère de telle sorte que ça m'arrange....mais ça me va !
J'ai à peu près résolu la question du redimensionnement , mais si quelqu'un peut me donner la solution plus propre pour connaitre la dimension exacte de la zone graphique je suis bien évidemment preneur (à défaut je l'ai déclarée dans une variable x).
Bref pour en venir au coeur de mon problème, aux point cardinaux ma zone rectangle semble à quelque chose près bien centrée, mais uniquement aux points cardinaux, après c'est la bérézina...
J'en appelle donc à votre temps et vos compétences pour solutionner mon problème.
J'ai progressé un poil : en limitant la longueur de mon shape à 640, autrement dit entre 31° & 60°, 121° & 151°, 211° & 240° et 301° & 330° je n'ai donc plus de décalage mais je n'utilise pas pour autant l'espace escompté...
tout en m'assurant qu'elle reste incluse dans ma zone graphique (que ça ne déborde pas en fin de compte) et qu'elle soit centrée à l'origine de mon repère (le problème...).
En d'autres termes que la position du centre de gravité soit immobile ?
Un essai en PJ si j'ai bien compris. La rotation s'effectue sans translation horizontale ou verticale, avec :
VB:
Sub ExempleRotation()
ActiveSheet.Shapes("Groupe 11").IncrementRotation [R2]
End Sub
Beaucoup de formes peuvent être utilisées sous XL ( l'outil en répertorie 181 ), ils peuvent être implémentés simplement ... quand on connait la syntaxe. Cet outil est une aide pour ces implémentations. Il permet de choisir le shape désiré, y...
Bonjour sylvanu,
L'effet recherché est effectivement le bon, le centre de gravité de la forme reste au centre des débats.J'avais bien pensé à IncrementRotation, je l'avais écarté car je dois visualiser des données dynamiques et je ne souhaitais pas forcément stocker la valeur n-1 et faire l'incrément de la différence n-(n-1), d'où le ShapeRange.Rotation.
Autre inconvénient de cette solution (pour ce qui me concerne uniquement) c'est que la forme doit être toujours présente sur le graphe et dans mon cas (bien particulier je l'accorde...), elle ne l'est que dans certains cas biens précis, sinon je la supprime et la recréé automatiquement.
Je ne clôture pas encore mon appel à l'aide (on ne sait jamais), mais je garde sous le coude ta solution qui malgré tout fait le job.
Merci de ton soutien et du temps consacré.
Cordialement,
Sylvanu,
IncrementRotation donne une incrémentation par rapport à la position courante.
Donc si je voulais donner une rotation (0 à 360°) à la forme, il me faut absolument stocker la la référence courante.
Dans ton exemple, si je saisi 0 (ce qui pour moi correspond au nord, la forme ne bouge pas, normal un incrément de 0 = 0...
Ma donnée d'entrée est une direction (un gisement pour être précis), c'est pour cette raison qu'initialement j'avais opté pour le Shape.Rotation.
Tout à fait d'accord avec la remarque sur .Visible = True ou False, je ne suis juste pas parti dans cet optique mais il n'y a que les imbéciles qui ne changent pas d'avis...
RE
re
je pige pas trop là
la rotation d'une shape est opérée sur son axe central me semble t il
ou est donc le besoin de recentrer cette shape
ceci dit dans le cas ou il faudrait recentrer (je me demande toujours pourquoi mais bon )
il faut déterminer son axe et l'axe de la surface dans dans la quelle est centrée avant la rotation
et s'en servir pour la replacer
Bonsoir patricktoulon,
C'est ce que je pensais aussi, mais dès lors que je redimensionne mon shape et que je l'oriente différemment qu'aux cardinaux, j'ai un décalage du centre.
J'ai l'impression que le problème vient du redimensionnement car sans tout est OK
Bien évidemment. Si vous redimensionnez le shape la position du centre de gravité change.
Mais avez vous besoin de le redimensionner ? N'y a t-il pas un moyen autre ?
Sinon vous êtes bon pour recalculer la position du centre de gravité avec les anciennes et nouvelles dimensions.
Malheureusement oui je suis obligé de redimensionner mon shape.
Je veux absolument que mon shape affleure la bordure de la zone graphique.
Aux cardinaux c'est simple puisque la longueur est celle de la zone, mais dès que l'on incline l'angle, il faut rallonger...
J'ai fait un essai en déplaçant vers le bas de ma feuille (environ 9 lignes : centre initial ligne 23 déplacé en ligne 32) et là pour le coup c'est correct.
Ça veut dire que je n'étais pas loin de la vérité, mais pour le coup ça ne m'arrange pas du tout de devoir décaler vers le bas.
Il semblerait, mais peut-être que je me trompe que le calcul renvoie une coordonnée erronée...piste à creuser...
J'ai progressé un poil : en limitant la longueur de mon shape à 640, autrement dit entre 31° & 60°, 121° & 151°, 211° & 240° et 301° & 330° je n'ai donc plus de décalage mais je n'utilise pas pour autant l'espace escompté...