Propriete caption

Dennnisss

XLDnaute Occasionnel
Bonjour a tous

Une question tres simple , lorsque que je cree un bouton en vba , et que je vais dans la propriete je selectionne caption pour en changer le nom jusque la ca va bien , mon probleme est que le bouton ne doit pas etre trop large et l'ecriture du caption est trop grande alors peut-on ecrire le texte en deux ligne sur le meme bouton ce texte comporte deux a trois mots

alors merci de votre aide
dennnisss ;);)
 

jeanpierre

Nous a quitté
Repose en paix
Re : Propriete caption

Re,

Ce que je t'ai dit : "Mais pas sûr que tu y trouves ton bonheur"

Plus facile avec un bouton de la barre d'outils Formulaire....

Je n'ai pas réussi avec le bouton de la boîte à outils Contrôle.

C'est peut-être simple, mais là je bloque (pas réveillé ou pas attentif ou les deux à la fois...).

Bonne soirée.

Jean-Pierre
 

fred65200

XLDnaute Impliqué
Re : Propriete caption

bonjour,
quel type de bouton crées tu? sur un userform, sur une feuille?
Peux tu montrer ton code?

Cordialement

EDIT tu peux peut être utiliser une police fixe de type Courrier ou Courrier New, afin de pouvoir manipuler les dimensions de ton bouton suivant le nombre de caractères.
 
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : Propriete caption

Bonsoir Dennisss, Jean-Pierre,

Dennnisss à dit:
l'ecriture du caption est trop grande

Sur la partie "propriété" de ton bouton, en dessous de "caption", tu as une ligne appelé "Font", clic sur les "..." tu peux changer la police mais également la taille de la police.

Le nombre le plus petit proposé est 8, mais si tu veux, manuellement, tu peux mettre moins.

Concernant le saut de ligne je ne sais pas faire, personnellement je joue avec la largeur et la hauteur du bouton pour que le saut de ligne soit où je veux.

Edition : suite à la lecture du post de fred65200, que je salue au passage, je tenais à préciser que ma manip. concerne les boutons CommandButton des UserForm.

Bonne fin de soirée
 

Dennnisss

XLDnaute Occasionnel
Re : Propriete caption

Salut Excel-lent et fred 65200


J'ai bien recu votre message et je comprend qu'il n'a pas grand chose a faire
alors merci de prendre la peine de me repondre et de prendre du temps a reflechir
alors a la prochaine dennnisss ;);)
 

fred65200

XLDnaute Impliqué
Re : Propriete caption

rebonjour,
Salut Excel-lent et fred 65200


J'ai bien recu votre message et je comprend qu'il n'a pas grand chose a faire
alors merci de prendre la peine de me repondre et de prendre du temps a reflechir
alors a la prochaine dennnisss ;);)

Je ne comprends pas bien le sens de ce message

-----------------------------------------------------------------------------------

une solution en vba pour un Userform
à adapter suivant tes besoins.

Code à placer dans un UserForm.

Peut être que de mettre des & vbLf & peut suffire dans ton cas
Code:
Option Explicit
Private Declare Function GetDC Lib "User32" _
  (ByVal hwnd As Long) As Long

Private Declare Function ReleaseDC Lib "User32" _
  (ByVal hwnd As Long, ByVal hDC As Long) As Long

Private Declare Function CreateFontA Lib "Gdi32" _
  (ByVal H As Long, ByVal W As Long, ByVal E As Long, _
  ByVal O As Long, ByVal W As Long, ByVal I As Long, _
  ByVal u As Long, ByVal S As Long, ByVal C As Long, _
  ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, _
  ByVal PAF As Long, ByVal F As String) As Long

Private Declare Function SelectObject Lib "Gdi32" _
  (ByVal hDC As Long, ByVal hObject As Long) As Long

Private Declare Function DeleteObject Lib "Gdi32" _
  (ByVal hObject As Long) As Long

Private Declare Function GetTextExtentPoint32A Lib "Gdi32" _
  (ByVal hDC As Long, ByVal lpsz As String, _
  ByVal cbString As Long, lpSize As SDimTexte) As Long

Private Declare Function GetDeviceCaps Lib "Gdi32" _
  (ByVal hDC As Long, ByVal nIndex As Long) As Long

Private Type SDimTexte
  Largeur As Long
  Hauteur As Long
End Type

Dim Larg As Integer
Dim nbLigne As Integer

'____________________________________________________________
'Fonction trouvée sur http://xcell05.free.fr/pages/api/dimtexte.htm
Private Function DimTexte(Texte As String, Police As String, _
  Taille As Double, Optional Gras As Boolean, _
  Optional Italique As Boolean) As SDimTexte

  Dim hFont As Long, hDC As Long
  Dim PixpInch As Double

  hDC = GetDC(0)
  PixpInch = GetDeviceCaps(hDC, 90) / 72
  hFont = CreateFontA(-Taille * PixpInch, 0, 0, 0, _
    400 - 300 * Gras, -Italique, 0, 0, 1, 0, 0, 0, 0, Police)
  If hFont = 0 Then
    ReleaseDC 0, hDC
    DimTexte.Largeur = 0
    DimTexte.Hauteur = 0
  Else
    SelectObject hDC, hFont
    GetTextExtentPoint32A hDC, Texte, Len(Texte), DimTexte
    DeleteObject hFont
    ReleaseDC 0, hDC
  End If

End Function

Private Sub UserForm_Initialize()
    Btn.Caption = "abcdefghijklm nopqrstuvwxyz 1234567890 abcdefghijklm nopqrstuvwxyz 1234567890"
    Btn.Width = 72
    'recherche de la largeur du bouton selon la police
    Larg = DimTexte(Btn.Caption, Btn.Font, Btn.FontSize, False, False).Largeur
    'remplacement des espaces par de sauts de ligne
    Btn.Caption = Replace(Btn.Caption, " ", vbLf)
    'calcul du nombre de lignes
    nbLigne = CInt(Larg / 72)
    'hauteur du bouton
    Btn.Height = 9.75 * nbLigne + 12 '(9.7614 * nbLigne + 11.993)

End Sub
Cordialement
 
Dernière édition:

Discussions similaires

Réponses
26
Affichages
965
Réponses
3
Affichages
316

Statistiques des forums

Discussions
312 429
Messages
2 088 350
Membres
103 822
dernier inscrit
kader55