Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Manipulation en Excel par VBA d'objets de dessin

12 réponses
Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

Tout d'abord, je demande pas une réponse complète ici, cela me semble
impossible, mais des pistes Internet, ou livresques, mais alors éprouvées.
L'aide F1 est complètement muette à ce sujet.
Merci aussi de lire les destinataires de cette présente avant de faire un
scandale, je sais que l'expérience des autres fera profiter celles des uns.

Alors :

Je cherche à manipuler dans Excel (+/- 2002) et en VBA des objets de dessin,
(en fait le simple rectangle / zone de texte).
En Excel pour le support de ses fonctions de zoom ou de différentes
résolutions, notamment en largeur.
En Excel parce que je maîtrise l'automation à partir d'Access.
En VBA parce qu'il n'y a pas d'autres solutions.

Exemple de ce que je veux faire :
+ Créer des zones de texte / rectangle (shape) ;
+ Les dimensionner en hauteur et largeur ;
+ Modifier leurs caractéristiques graphiques (les fonds, couleurs, ...) ;
+ Y introduire éventuellement du texte ;
+ Les placer en regard de lignes et colonnes XL bien précises :
- soit en hauteur ;
- soit en ligne de base ;
- soit en libre ! ;
* sans que les côtés gauche ou droite collent aux parois gauche ou
droite des cellules XL

Excusez-moi d'avoir été si long...

Cdt, Blaise
---- ---- ----

2 réponses

1 2
Avatar
FS
Bonsoir,

Au cas où tu n'aurais eu aucune réponse, une procédure qui devrait te
permettre de démarrer :

'=================== Sub EssaiRectangle()
Dim cell As Range, shp As Shape

'cellule de référence
Set cell = ActiveSheet.Range("C5") 'par exemple
'création d'un rectangle "décollé" de 5 points
'à gauche et en haut de la cellule choisie
Set shp = ActiveSheet.Shapes.AddShape( _
msoShapeRectangle, cell.Left + 5, cell.Top + 5, 250, 15)
With shp
'couleur de remplissage
.Fill.ForeColor.SchemeColor = 15
With .TextFrame.Characters
'texte
.Text = "Essai rectangle"
'mise en forme du texte
With .Font
.Bold = True
.Color = vbRed
.Name = "Algerian"
End With
End With
End With

End Sub
'===================
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Blaise Cacramp a écrit :
Selon : Bonjour ou bonsoir

Tout d'abord, je demande pas une réponse complète ici, cela me semble
impossible, mais des pistes Internet, ou livresques, mais alors éprouvées.
L'aide F1 est complètement muette à ce sujet.
Merci aussi de lire les destinataires de cette présente avant de faire un
scandale, je sais que l'expérience des autres fera profiter celles des uns.

Alors :

Je cherche à manipuler dans Excel (+/- 2002) et en VBA des objets de dessin,
(en fait le simple rectangle / zone de texte).
En Excel pour le support de ses fonctions de zoom ou de différentes
résolutions, notamment en largeur.
En Excel parce que je maîtrise l'automation à partir d'Access.
En VBA parce qu'il n'y a pas d'autres solutions.

Exemple de ce que je veux faire :
+ Créer des zones de texte / rectangle (shape) ;
+ Les dimensionner en hauteur et largeur ;
+ Modifier leurs caractéristiques graphiques (les fonds, couleurs, ...) ;
+ Y introduire éventuellement du texte ;
+ Les placer en regard de lignes et colonnes XL bien précises :
- soit en hauteur ;
- soit en ligne de base ;
- soit en libre ! ;
* sans que les côtés gauche ou droite collent aux parois gauche ou
droite des cellules XL

Excusez-moi d'avoir été si long...

Cdt, Blaise
---- ---- ----





Avatar
MichDenis
Bonjour Blaise,

En lisant la réponse de Frédéric, je me suis rendu
compte que ma réponse avait été envoyé sur le forum Access.

Avec beaucoup de retard, voici une copie de ma réponse :


'------------------------------------------
Sub test()

Dim Xl As Object
Dim Wk As Object
Dim F As Object
Dim AGauche As Double, EnHaut As Double
Dim Largeur As Double, hauteur As Double

On Error Resume Next
Set Xl = GetObject(, "Excel.Application")
If Err <> 0 Then
Err.Clear
Set Xl = CreateObject("Excel.Application")
End If
Set Wk = Xl.Workbooks.Add
Xl.Visible = True 'optionnelle
Set F = Wk.Worksheets(1)
'en supposant que tu veux mettre la zone de texte
'exactement sur la plage "C5:G10"
With Wk.Worksheets(F.Name).Range("C5:G10")
EnHaut = .Top
AGauche = .Left
hauteur = .Height
Largeur = .Width
End With
Set Sh = F.Shapes.AddTextbox(msoTextOrientationHorizontal, _
AGauche, EnHaut, Largeur, hauteur)
With Sh
With .OLEFormat.Object
.Text = "Bonjour tout le monde"
With .Font
.Name = "Arial"
.Size = 12
.Bold = True
.ColorIndex = 3
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
End With
With .ShapeRange.Fill
.ForeColor.SchemeColor = 13
.Visible = msoTrue
.Solid
.Line.ForeColor.SchemeColor = 10
.Line.Visible = msoTrue
.Line.BackColor = RGB(152, 0, 25)
.Line.Style = msoLineSingle
End With
End With
End With
End Sub
'------------------------------------------



"Blaise Cacramp" a écrit dans le message de groupe de discussion :

Selon : Bonjour ou bonsoir

Tout d'abord, je demande pas une réponse complète ici, cela me semble
impossible, mais des pistes Internet, ou livresques, mais alors éprouvées.
L'aide F1 est complètement muette à ce sujet.
Merci aussi de lire les destinataires de cette présente avant de faire un
scandale, je sais que l'expérience des autres fera profiter celles des uns.

Alors :

Je cherche à manipuler dans Excel (+/- 2002) et en VBA des objets de dessin,
(en fait le simple rectangle / zone de texte).
En Excel pour le support de ses fonctions de zoom ou de différentes
résolutions, notamment en largeur.
En Excel parce que je maîtrise l'automation à partir d'Access.
En VBA parce qu'il n'y a pas d'autres solutions.

Exemple de ce que je veux faire :
+ Créer des zones de texte / rectangle (shape) ;
+ Les dimensionner en hauteur et largeur ;
+ Modifier leurs caractéristiques graphiques (les fonds, couleurs, ...) ;
+ Y introduire éventuellement du texte ;
+ Les placer en regard de lignes et colonnes XL bien précises :
- soit en hauteur ;
- soit en ligne de base ;
- soit en libre ! ;
* sans que les côtés gauche ou droite collent aux parois gauche ou
droite des cellules XL

Excusez-moi d'avoir été si long...

Cdt, Blaise
---- ---- ----
1 2