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

Dessiner un regtangle sous Excel 2007

14 réponses
Avatar
Apitos
Bonjour,

Comme l'enregistreur de macros ne fonctionne pas pour les formes dans Excel=
2007, j'aimerais trouver une solution comme indiqu=E9e dans le fichier joi=
nt.

http://cjoint.com/?BDDokqugQZ3

Merci.

10 réponses

1 2
Avatar
MichD
Bonjour,

Pour dessiner un rectangle comme celui dans le classeur :

Tu ajustes les dimensions du rectangle selon tes besoins.
Pour renseigner ces données, tu peux utiliser comme référence
une plage de cellule et définir les propriétés du rectangle selon
les propriétés de la plage de cellules. (.top, .left, .width, .height)


'------------------------------------------
Sub test()
Dim Sh As Shape
Set Sh = Sheet1.Shapes.AddShape(msoShapeRoundedRectangle, _
Left:„.75, Top:$9.75, Width:0.25, Height:2)

With Sh
.OLEFormat.Object.Text = "Texte1" & vbCrLf & "Texte2" & _
vbCrLf & "texte3"
.TextFrame.HorizontalAlignment = xlHAlignCenter
.TextFrame.VerticalAlignment = xlVAlignCenter
End With
End Sub
'------------------------------------------


MichD
---------------------------------------------------------------
Avatar
Apitos
Bonsoir Denis,

Ton code ne donne rien ! je ne sais pas pourquoi ?

En fait, en PJ un code qui fonctionnait très bien avec Excel 2003.

Avec Excel 2007 ça ne donne qu'un trait en vertical.

http://cjoint.com/?BDDwwJfWcBJ
Avatar
MichD
Ceci fonctionne très bien avec Excel 2010.

La dimension du rectangle est délimitée par l'étendue de la plage
de cellules C5:G10.
Si tu rends actif la commande OLEFormat.Object.AutoSize = True
il ne faut pas te surprendre si la dimension du rectangle est réduite
à l'espace nécessaire à l'affichage du texte.


'----------------------------------------------------------
Sub test()
ListeFenetre Range("C5:G10"), "Bonjour à tous"
End Sub
'----------------------------------------------------------
Public Sub ListeFenetre(Target As Range, Texte As String)
Dim Fenetre As Shape
Set Fenetre = Feuil1.Shapes. _
AddShape(msoShapeRoundedRectangle, _
Left:=Target.Left, Top:=Target.Top, _
Width:=Target.Width, Height:=Target.Height)

With Fenetre
.Name = "Commentaire"
If Texte <> "" Then
.OLEFormat.Object.Text = Texte
.OLEFormat.Object.Font.ColorIndex = 0
.OLEFormat.Object.Font.Size = 18
'.OLEFormat.Object.AutoSize = True
Else
.OLEFormat.Object.Text = "Mot introuvable"
.OLEFormat.Object.Font.ColorIndex = 0
.OLEFormat.Object.Font.Size = 18
'.OLEFormat.Object.AutoSize = True
End If
.TextFrame.HorizontalAlignment = xlHAlignCenter
.TextFrame.VerticalAlignment = xlVAlignCenter
.Fill.ForeColor.SchemeColor = 0
.Visible = True
.Fill.Visible = msoTrue
.Fill.ForeColor.SchemeColor = 65
.Fill.BackColor.SchemeColor = 13
.Fill.TwoColorGradient msoGradientHorizontal, 2
End With
Set Fenetre = Nothing
End Sub
'-------------------------------------------------------------


MichD
---------------------------------------------------------------
Avatar
Apitos
Bonsoir,

Voila un exemple qui dessine bien un regtangle sous Excel 2007.

Des remarques ?

http://cjoint.com/?BEbaHVk4ldx
Avatar
MichD
| Voila un exemple qui dessine bien un regtangle sous Excel 2007.

Est-ce une façon d'insinuer que la proposition faite ne dessinait pas aussi un rectangle?

Autant que je sache, tu n'as jamais parlé de formatage.

Si tu as trouvé ce que tu cherchais, tant mieux!



MichD
---------------------------------------------------------------
Avatar
Apitos
Bonjour Denis,

Est-ce une façon d'insinuer que la proposition faite ne dessinait pas a ussi un rectangle?



Ton code comme présenté, ne dessine qu'une ligne verticale.
Mais je m'y suis basé pour apporter des modifications et avoir mon regtan gle.

Autant que je sache, tu n'as jamais parlé de formatage.



Normalement celà allait venir par la suite.


Si tu as trouvé ce que tu cherchais, tant mieux!



Si tu n'a pas des remarques, alors merci bien de ton aide précieuse.
Avatar
MichD
| Ton code comme présenté, ne dessine qu'une ligne verticale.

Je n'en crois rien, à moins que tu aies un environnement très particulier!


Un fichier exemple : http://cjoint.com/?BEbnFPnJdiV



MichD
---------------------------------------------------------------
Avatar
Gloops
MichD a écrit, le 29/04/2012 23:55 :
Public Sub ListeFenetre(Target As Range, Texte As String)
Dim Fenetre As Shape
Set Fenetre = Feuil1.Shapes. _
AddShape(msoShapeRoundedRectangle, _
Left:=Target.Left, Top:=Target.Top, _
Width:=Target.Width, Height:=Target.Height)



Bonjour,

Si je peux me permettre (tant pis, vous ne me répondrez peut-être pas
...) ceci fonctionne si Target est une plage (ah oui j'allais encore
dire un champ) de la feuille Feuil1 (peut-être faut-il même précise r, du
classeur actif).

Tout le monde en phase, là-dessus ?
Avatar
MichD
| ceci fonctionne si Target est une plage

| Public Sub ListeFenetre(Target As Range, Texte As String)

Dans la déclaration de la procédure, cela est explicite



MichD
---------------------------------------------------------------
Avatar
Gloops
MichD a écrit, le 01/05/2012 21:07 :
Dans la déclaration de la procédure, cela est explicite




Ah non non pas du tout, dans la déclaration de la procédure, il est
juste dit que c'est un champ -enfin ... une plage.

La suite, c'est toi qui l'as coupée. Et c'était pourtant ça qui com ptait.
1 2