bonjour tout le monde,
je souhaite inserer un shape (rectangle par exemple) mais un endroit precis.
l'insertion est à l'angle supérieur gauche de la cellule C2. sachant que la largeur des colonnes sont ajustables.
merci de votre aide
bonsoir dranred,
le left et top, si je ne dis pas de bêtise sont les coordonnées du shape (ou autre chose comme USF) à partir du bord superieur gauche de l'ecran
la je souhaire placer un rectangle a partir du coin superieur gauche d'une cellule, et que la largeur des colonnes peuvent varier.
si j'augmente la largeur de la colonne B, le shape doit toujour etre afficher par rapport a la colonne C.
Ah, je croyais seulement que vous ne saviez pas comment le positionner à la création.
On ne peut pas détecter un changement de largeur de colonne, mais normalement il suit si vous avez aussi mis sa propriété Placement à xlMove ou xlMoveAndSize. C'est seulement si elle est à xlFreeFloating qu'il ne suit pas.
Edit: Ce n'est pas comme les Left et Top d'un UserForm: ces dernier sont par rapport à l'écran et non par rapport au document comme pour les Range et les Shape.
sub insertion_objet_rectangle()
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 120, 15, 94.5, 38.25).Select
'AddShape( Type , Left , Top , Width , Height )
End sub
avec :
Type : msoShapeRectangle
Left =distance à partir de gauche: 120 pts
Top = distance à partir du haut : 15 pts
Width = Largeur de l'objet : 94.5 pts
Height= Hauteur de l'objet : 38.25 pts
merci pour avoir pris soin d'etudier mon probleme et repondu
mais je n'ai pas tout a fait ma reponse
je vais la tourner différemment.
je souhaite inserer un shape rectangle a la partie superieur gauche de la cellule active.
donc je ne connais pas les coordonnées de ma cellule.
y a t'il une fonction pour ca?
Sub addshapetocell()
Dim clLeft As Double
Dim clTop As Double
Dim clWidth As Double
Dim clHeight As Double
Dim cl As Range
Dim my_shape As Shape
Set cl = Range(Selection.Address)
clLeft = cl.Left
clTop = cl.Top
clHeight = cl.Height
clWidth = cl.Width
Set my_shape = ActiveSheet.Shapes.AddShape(msoShapeRectangle, clLeft, clTop, 90, 40)
End Sub
avec 90 et 40 = largeur et hauteur du rectangle en pts.
Même réponse que Dranreb avec un petit exemple
(A TESTER UNIQUEMENT SUR UNE FEUILLE VIERGE)
VB:
Sub M_Shape()
Dim shp As Shape, r As Range
Set r = Range("c8")
ActiveSheet.DrawingObjects.Delete
Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, r.Left, r.Top, 5, 5)
'juste pour exemple
MsgBox shp.Name
End Sub
bonjour tout le monde,
je souhaite inserer un shape (rectangle par exemple) mais un endroit precis.
l'insertion est à l'angle supérieur gauche de la cellule C2. sachant que la largeur des colonnes sont ajustables.
merci de votre aide
Sub M_ShapeII()
Dim r As Range: Set r = Range("C8")
ActiveSheet.DrawingObjects.Delete
With r
ActiveSheet.Shapes.AddShape 1, .Left, .Top, .Width, .Height
End With
End Sub