insertion objet

jeffjeff

XLDnaute Nouveau
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
 

jeffjeff

XLDnaute Nouveau
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.
 

Dranreb

XLDnaute Barbatruc
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.
 

kingfadhel

XLDnaute Impliqué
Bonsoir,
VB:
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
 

jeffjeff

XLDnaute Nouveau
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?
 

kingfadhel

XLDnaute Impliqué
Re,
Je crois tu auras ton bonheur avec ce code.

VB:
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.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

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
 

Discussions similaires

Réponses
4
Affichages
117

Statistiques des forums

Discussions
312 178
Messages
2 085 982
Membres
103 079
dernier inscrit
sle