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 :

105tb-rotatif.zip (20.93 Ko)

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 Sub

dans 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 Sub

Hervé.


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.

Rechercher des sujets similaires à "pivoter textbox userform"