Passer à la ligne dans un CommandButton [Résolu]

Signaler
Messages postés
25
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
10 mai 2008
-
Messages postés
25
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
10 mai 2008
-
Bonjour,

J'ai mis dans une cellule Excel un texte de 3 lignes. J'aimerai que ce texte soit repris dans la légende du bouton que j'ai créé dans un UserForm. Pour cela, j'ai utilisé la fonction CommandButton1.Caption = range("APV"). J'aimerai maintenant que le texte passe à la ligne dans le bouton pour qu'il apparaisse complètement. Est-ce possible ? Si oui, quelle démarche dois-je suivre ?

Merci pour vos conseils,

Estelle

10 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
57
Salut,
Essaies de mette la propriété WordWrap de Ton commandButton  a TRUE
@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
AH.... Mais tu es peut-être sous VBA et n'a dans ce cas pas de picturebox !

Si tel est le cas, tu peux faire la même chose, mais en remplaçant la picturebox Picture1 par un userform2
remplacer alors partout le mot Picture1 par le mot UserForm2
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Je n'ai pas VBA !

Il va te falloir attendre un peu.

J'en suis pour l'instant à "perfectionner mon tir" pour déposer une source qui traitera, sous VB, les boutons de commande, les Optionbuttons et les CheckBoxes

Tu me dis que textwidth n'est pas reconnu sous VBA (dommage).

Quand j'en aurai fini avec VB, je te proposerai un essai (avec des fonctions de l'API de Windows) pour VBA.

Si tu veux commencer : Textwidth et Textheight retournent la taille graphique d'une chaîne de caractères, pour une police de caractéristiques précisées.

TextWidth et TextHeight peuvent être remplacés par l'utilisation de la fonction GetTextExtentPoint32  de la librairie gdi32.dll (VB utilise d'ailleurs tout simplement cette fonction pour donner ses résultats de TexWidth et TextHeight).

Ce ne sera donc pas là la vraie difficulté, mais plutôt dans l'utilisation d'une userform complémentaire pour remplacer la picturebox utilisée sous VB...
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
10
Salut soit faire un split sur le texte et mettre des vbcrlf ou alors ajuster la taille du bouton pour avoir le text sur trois ligne!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
Messages postés
25
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
10 mai 2008

Parfait, c'est exactement ce que je voulais. Merci. Y-a-t-il également possibilité d'ajuster le texte au format Justifié plutôt que centré au aligné à gauche ou à droite ?
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Oui, mais il te faudra faire un peu de gymnastique et le me demande si c'est "justifié" (un petit jeu de mot à 4 sous).


Si tu y tiens vraiment, je te dirai comment, mais ça aloudira un peu ton code pour pas grand-chose ...Tu dis ...
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Tiens...
Le vieux a voulu faire joujou, alors ....

Sur une Form :

- Un bouton de commande Command1, avec sa propriété Style = Graphical et des dimensions suffisantes pour y écrire au moins le texte d'essai (ici "Nous voilà)

- une picturebox Picture1

Code (un peu bâclé, mais bon...) :

Private Sub Form_Activate()
  Command1.Caption = "Nous voilà"
  With Font
    .Name = Command1.FontName
    .Size = Command1.FontSize
  End With
  With Picture1
    .Visible = False
    .FontName = Command1.FontName
    .FontSize = Command1.FontSize
    .AutoRedraw = True
    .FontBold = Command1.FontBold
    .Width = Command1.Width
    .Height = Command1.Height
  End With
  esp = (Picture1.Width - TextWidth(Command1.Caption)) / (Len(Command1.Caption) + 2)
 Picture1.CurrentX = esp
  For i = 1 To Len(Command1.Caption)
    Picture1.CurrentY = (Picture1.Height - TextHeight(Command1.Caption)) / 2
    Picture1.Print Mid(Command1.Caption, i, 1)
    DoEvents
    Picture1.CurrentX = esp + (esp * i) + TextWidth(Left(Command1.Caption, i))
  Next
  Command1.Picture = Picture1.Image
  Command1.Caption = ""
End Sub

Lance et vois !

Puis modifie à ta guise les dimensions de ton Command1 et vois ...


 


 


Voilà ! C'est justifié, maintenant
Messages postés
25
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
10 mai 2008

Merci jmfmarques pour ces informations. Je développe en effet mon programme sous VBA. J'ai essayé de faire tourner ta macro, mais il ne reconnaît pas tout le code notamment TextWidth (Sub ou function non définie). Peux-tu me donner le code en VBA ?
Messages postés
25
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
10 mai 2008

Merci jmfmarques pour ces informations. Je développe en effet mon programme sous VBA. J'ai essayé de faire tourner ta macro, mais il ne reconnaît pas tout le code notamment TextWidth (Sub ou function non définie). Peux-tu me donner le code en VBA ?
Messages postés
25
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
10 mai 2008

Merci, je vais attendre.