Dessiner un regtangle sous Excel 2007

Le
Apitos
Bonjour,

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

http://cjoint.com/?BDDokqugQZ3

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #24438931
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
---------------------------------------------------------------
Apitos
Le #24439601
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
MichD
Le #24439701
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
---------------------------------------------------------------
Apitos
Le #24442181
Bonsoir,

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

Des remarques ?

http://cjoint.com/?BEbaHVk4ldx
MichD
Le #24442291
| 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
---------------------------------------------------------------
Apitos
Le #24442671
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.
MichD
Le #24443341
| 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
---------------------------------------------------------------
Gloops
Le #24444851
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 ?
MichD
Le #24444931
| 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
---------------------------------------------------------------
Gloops
Le #24445361
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.
Publicité
Poster une réponse
Anonyme