Pivoter un textBox d'un UserForm
Bonjour,
Je travaille actuellement sur un Userform et j'aimerai bien pivoter certains de mes textbox de 45° par exemple.
S'il vous plaît , Est-il possible de le faire ? Comment le faire ?
j'ai joint le fichier contenant le userform
Merci.
Bonjour,
C'est tout simplement pas possible !
Hervé.
Bonjour Moustapha, Theze,
Juste pour le plaisir de la discussion, C'est tout simplement pas possible !.
Soit un UserForm et un Module de classe.
L'userform, lors de son initialize, peut créer un (ou des) objet(s) personnalisé(s) dans la classe.
Supposons maintenant qu'à chaque Classs_Initialize, l'objet créé soit un Shape rectangle, créé (dessiné) sur une feuille masquée.
On peut très bien faire une rotation de cet objet.
Supposons également que la Classe créée sur notre UserForm, un contrôle Image à fond transparent et sans bordure.
On pourrait alors imaginer que ce contrôle Image contienne, dans sa propriété Picture, une "photo" de notre Shape...
Ne reste qu'à faire en sorte de pouvoir saisir dans le Shape depuis l'userform. Cela pourrait s'arranger en intégrant, dans l'userform, un textbox invisible, que l'on rendrait visible lors d'un clic sur l'image, puis a nouveau invisible lorsqu'il perdrait le focus...
ça fait beaucoup de Si et de conditionnel, mais la discussion mérite peut être que l'on s'y attarde... Ou pas...
Alors, juste pour "le fun" parce que le résultat est ... DégueuToutPourri, voici l'illustration (ma foi très très laide) de ce que je décrivais auparavant :
PS : ce qui rend le truc si moche, c'est la méthode pour créer le fichier image.
On créé un graph à partir du Shape ce qui rend son fond non-transparent.
Je suis sur qu'il existe d'autres moyens de créer ce fichier image qui permettrait un rendu moins "toutdégueu"...
Voir peut-être une API...
PS 2 : Par exemple : http://jacxl.free.fr/cours_xl/cours_xl_jac.html#images_api
Bonjour,
Sur la base de ce que propose pijaku, j'ai bricolé un truc avec 3 contrôles Image qui reçoivent un export en Gif de trois zones de texte. Pour voir l'effet, clique sur le bouton !
Je poste aussi le code :
Dans un module standard :
Sub Oblique(Img As MSForms.Image, Degres As Single, Cote As String, NomShape As String)
Dim Fe As Worksheet
Dim S As Shape
Dim Graph As ChartObject
Dim Largeur As Single
Dim Hauteur As Single
Dim Angle As Single
Const Pi As Single = 3.14159265358979
Set Fe = ActiveSheet
Set S = Fe.Shapes.AddTextbox(1, 0, 0, 300, 300)
With S
.Name = NomShape
.TextFrame.Characters.Text = Cote
.TextFrame.Characters.Font.Name = "Vernada"
.TextFrame.Characters.Font.Size = 12
.BackgroundStyle = 9
.TextEffect.Alignment = 4
.TextEffect.FontBold = True
.Rotation = Degres
.TextFrame.AutoSize = True
.Fill.Transparency = 0 '<--- valeur de la transparence (0 opaque à 1 transparent)
.CopyPicture
Angle = Abs(180 - .Rotation)
If Angle > 90 Then Angle = 180 - Angle
Largeur = .Width * Cos(Angle * Pi / 180) + .Height * Sin(Angle * Pi / 180)
Hauteur = .Width * Sin(Angle * Pi / 180) + .Height * Cos(Angle * Pi / 180)
.Delete
End With 'S
Fe.ChartObjects.Add(0, 0, Largeur, Hauteur).Chart.Paste
Set Graph = Fe.ChartObjects(1)
With Graph
.Chart.ChartArea.Format.Fill.BackColor.RGB = RGB(255, 0, 0)
.Chart.ChartArea.Border.LineStyle = 0
.Chart.Export ThisWorkbook.Path & "\" & NomShape & ".gif", "gif"
.Delete
End With 'Graph
With Img
.Height = Hauteur
.Width = Largeur
.Picture = LoadPicture(ThisWorkbook.Path & "\" & NomShape & ".gif")
.BorderStyle = 0
.BackStyle = 0
End With 'Image
End Sub
Sub Afficher()
UserForm1.Show
End Subdans le module de la Form :
Private Sub UserForm_Initialize()
Dim CoteGauche As String
Dim CoteDroite As String
Dim CoteBase As String
CoteGauche = ActiveSheet.Range("G4").Value
CoteDroite = ActiveSheet.Range("G5").Value
CoteBase = ActiveSheet.Range("G6").Value
Oblique Me.Img_Gauche, 302, CoteGauche, "Cotation_Gauche"
Oblique Me.Img_Droite, 58, CoteDroite, "Cotation_Droite"
Oblique Me.Img_Bas, 0, CoteBase, "Cotation_Basse"
End SubHervé.
Petite précision, comme j'ai utilisé des propriétés d'objet qui ont été ajoutées à Excel 2007, il faut que ce soit utiliser sur 2007 et postérieur sinon, supprimer les lignes de code sur lesquelles s'arrête le compilateur.
Hervé.
Salut,
Apparemment ,j'ai eu plus que ma réponse. Merci à tous le monde.