Autres Obliger une image en B2

eliot raymond

XLDnaute Occasionnel
Bonjour a toutes et tous, forum bonjour,

J'ai une photo appeler (image 1) sur ma feuille

J'ai utiliser ce petit code pour obliger l'image d'aller se placer en (B2)
et ca ne fonctionne pas l'image se colle tout le temps en (A6)

Par contre quand je fais faire un quart de tour a l'image celle ci se colle bien en (B2)

Je ne vois vraiment pas pourquoi ca marche dans un sens et pas l'autre ???

Merci de votre aide et bon W-end a vous

Cdlt Ray

VB:
Sub Positionnement()
  ActiveSheet.Shapes("Image 1").Top = [B2].Top
  ActiveSheet.Shapes("Image 1").Left = [B2].Left
End Sub
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Eliot,
Fournissez nous un fichier test, car telle qu'écrit la macro marche correctement.
Peut être est ce le format image qui pose problème comme par ex s'il y a du blanc en haut de l'image.
Par ex ci dessous la première image semble positionnée en B18 mais uniquement le blanc, normalement invisible, qui est au dessus.
1645884111936.png
1645884132058.png
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Dans les deux cas, cela fonctionne chez moi
VB:
Sub MacroA()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("Image 1")
shp.Top = [B2].Top
shp.Left = [B2].Left
End Sub
Sub MacroB()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("Image 1")
shp.Top = [C15].Top
shp.Left = [C15].Left
End Sub
 

eliot raymond

XLDnaute Occasionnel
Salut a vous
merci pour les réponses voici donc le fichier avec son image qui est en faites un scan
d'une plaque a pastilles utiliser en électronique.
macro en feuille1 ainsi que la macro de l'ami Staple 1600 merci

Merci a vous
Cdlt Ray
 

Pièces jointes

  • Image ray.xlsm
    917.7 KB · Affichages: 12

patricktoulon

XLDnaute Barbatruc
Bonsoir
en effet c'est tout simplement par ce que l'image est retournée
a savoir que la seule position réelle d'une image dans une feuille est son centre
par consequent si tu doit positionner l'image a un point precis tu doit calculer son left et top tel qu'elle est visible à l’écran

pour cela c'est simple si elle retournée d'un quart (horizontal/vertical)
le top sera le top +(l'image.Width - l'image.Height)'si l'image est haute que large à l'origine
le left sera le left + ((l'image.Height - l'image.Width) / 2)'si l'image est haute que large à l'origine

la dessus tu doit encore soustraire au top la moitié de la new hauteur- ce qui dépasserait vers le ruban
sinon l'image se position au minimum top qui permettrait de rtourner l'image sans la tronquer car une image ne peut etre positionnée à moins que zero dans une feuille
il est donc evident que dans le cas de ton image au mieux pour le top(qui est en fait le left de l'image) sera impossible vu que le rotate t’emmenera a un top de moins 22 a peu pres
donc le plus pres de b2 top sera b2.top+22 soit dans B3 et tu pourra pas monter plus haut

conclusion reprend ton image avec la visionneuse windows fait une rotaion sauve l'image dans le bon sens et utilise la
ou fait la rotation et un copy picture( en mode xlscreen) + delete et place l'image copiée (qui sera dans le bon sens
terminé
 
Dernière édition:

eliot raymond

XLDnaute Occasionnel
Salut patricktoulon,

Merci de ta réponse un peu compliqué pour moi, mais j'ai a peu près compris Lol

Donc j'ai refait et j'ai scanner en faisant faire un quart de tours a la photo, fait essai et c'est bon.
Mais du coup, tu a raison j'ai rebasculer la photo et la ca ne fonctionne plus.

Alors c'est bien mes schémas rentre bien dans le cadre de l'image.

-Autre chose, si tu veux bien, je souhaiterai svp (un code VBA simple nul besoin de compliquer) avec un bouton afin de pouvoir positionner l'image en B2 et aussi bloquer l'image a sa place afin quelle ne bouge pas quand je bouge ou déplace des formes sur l'image.
-Et bien sur un autre bouton pour débloquer l'image au cas ou j'aurai le besoin.

Merci a toi un bon W-end et bon dimanche.
Cdlt Ray
 

patricktoulon

XLDnaute Barbatruc
re
bonjour
pour ton tableau vert
met ça dans un module

VB:
Sub resteICITOI()
    Dim shp As Picture
    Set shp = Feuil1.Pictures(Application.Caller)
    shp.Top = [b2].Top: shp.Left = [b2].Left
End Sub
clickdroite sur l'image verte et affecter une macro affecte lui celle là
tu ne pourra plus la bouger et ca t’empêchera pas de pouvoir bouger les autres
 

eliot raymond

XLDnaute Occasionnel
Salut patricktoulon

Merci pour ta réponse,

Ma feuil1 se nomme "Serrure codée", j'ai donc remplacer sur ton code ci dessous Feuil1 par (Serrure codée)
je n'arrive pas a trouver la bonne syntaxe ???

VB:
Sub resteICITOI()
        Dim shp As Picture
        Set shp = "Serrure codée".Pictures(Application.Caller)
        shp.Top = [b2].Top: shp.Left = [b2].Left
End Sub

--- Et puis je n'ai pas compris pour

tu supprime le on action en fait
dans l'event d'un bouton activesheet.shapes("Image 2").onaction=""

mon image se nomme "Picture 6"

Bonne soirée a toi et merci

Cdlt Ray
 

Dranreb

XLDnaute Barbatruc
Vous pouvez certes consulter la collection Worksheets pour en tirer un objet Worksheet temporaire représentant la feuille portant le nom "Serrure codée" mais sinon, si l'objet fixe mis à votre disposition par l'application hôte pour la représenter s'appelle toujours Feuil1, c'est toujours ce nom là qu'il faut prendre.
Notez que pour vous y retrouver plus facilement vous pouvez toujours le renommer par exemple WshSerrCod (je parle de l'objet VBA, pas de l'entité Excel qu'il représente)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 300
Membres
103 173
dernier inscrit
Cerba95