patricktoulon
XLDnaute Barbatruc
Mise a jour le 18/11/2025
Bonjour a tous
cette question vient de ressortir dans le forum j'ai pensé que ca devait etre mis dans les astuces
en effet le text dans un label ne peut etre centré qu'horizontalement avec la properties(textalign)
il existe plusieurs astuces simples
méthode 1 avec une commandbars
Elle qui consiste à mettre une image de 1 pixel (même 1 point ca fonctionne aussi) transparente dans le .picture et de mettre le picture aligné au centre.
reste que l'on doit avoir cette image dispo dans le disque dur
je vous propose une astuce dans l'astuce
le jeu consiste a fabriquer cette image dynamiquement
à savoir utiliser le picture d'un commandbarcontrolbutton
et là les choses deviennent tout de suite plus simples
Cela consiste à.
et voila le tour est joué votre texte dans le label est centré horizontalement et verticalement
La méthode 2
On opte pour un renderer automatique excité en interne avec un stdpicture
Je pense que le code parle de lui-même pas la peine d'en dire plus
Avantage (rapidité,pluri compatible 2007 à 2024)
Utilisation de librairie interne sans ref a activer
Depuis la version 2007, un Label affiche son texte verticalement centré automatiquement dès qu’une image (même vide) est définie dans sa propriété .Picture.
Il suffit donc d’assigner n’importe quelle instance de StdPicture, même vide, pour activer le centrage interne du teste dans les labels
Comment ca marche
En fait si l'on devait utiliser une vraie image loadée sur le disque dur il faudrait que l'image mesure exactement la dimension au pixel près du label
le moteur du rendu interne de l'activX renvoie le texte au centre par-dessus l’image car il considère que comme aucune data se trouve dans l'image ,il l'interprète à la dimension du conteneur en l'occurrence le contrôle Label (sans même régler le pictureposition(cest pas la peine)
Et voici la simplicité même
Et diverses autres avec les api par exemple
modèle avec les api en macro 4 pour ceux que ça intéresse
www.excel-downloads.com
Patrick
Bonjour a tous
cette question vient de ressortir dans le forum j'ai pensé que ca devait etre mis dans les astuces
en effet le text dans un label ne peut etre centré qu'horizontalement avec la properties(textalign)
il existe plusieurs astuces simples
méthode 1 avec une commandbars
Elle qui consiste à mettre une image de 1 pixel (même 1 point ca fonctionne aussi) transparente dans le .picture et de mettre le picture aligné au centre.
reste que l'on doit avoir cette image dispo dans le disque dur
je vous propose une astuce dans l'astuce
le jeu consiste a fabriquer cette image dynamiquement
à savoir utiliser le picture d'un commandbarcontrolbutton
et là les choses deviennent tout de suite plus simples
Cela consiste à.
- Créer une shape
- la copier
- La coller dans le commandbarbutton avec pasteFace
- Utiliser son .picture qui renvoie un ipicturedisp
et voila le tour est joué votre texte dans le label est centré horizontalement et verticalement
VB:
'date:10/11/2021
'auteur: patricktoulon sur exceldownloads
'version:2.1 (2021) sans créeation de commandbars mais en utilisant la commandbars (1)
''******************************************
Private Sub CommandButton1_Click()
centrer_le_text Label1
End Sub
Sub centrer_le_text(obj As msforms.Label)
Dim bout As CommandBarControl, shap As Shape
Set bout = CommandBars(1).Controls.Add(Type:=msoControlButton)
Set shap = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, 0, 1, 1)
With shap: .Line.Visible = msoFalse: .Fill.Visible = msoFalse: .CopyPicture: .Delete: End With 'copypicture=copie en WMF(garde la transparence)
bout.PasteFace
With obj
.Picture = bout.Picture
.PicturePosition = fmPicturePositionCenter
.TextAlign = 2
End With
CommandBars(1).Reset
End Sub
La méthode 2
On opte pour un renderer automatique excité en interne avec un stdpicture
Je pense que le code parle de lui-même pas la peine d'en dire plus
Avantage (rapidité,pluri compatible 2007 à 2024)
Utilisation de librairie interne sans ref a activer
Depuis la version 2007, un Label affiche son texte verticalement centré automatiquement dès qu’une image (même vide) est définie dans sa propriété .Picture.
Il suffit donc d’assigner n’importe quelle instance de StdPicture, même vide, pour activer le centrage interne du teste dans les labels
Comment ca marche
En fait si l'on devait utiliser une vraie image loadée sur le disque dur il faudrait que l'image mesure exactement la dimension au pixel près du label
le moteur du rendu interne de l'activX renvoie le texte au centre par-dessus l’image car il considère que comme aucune data se trouve dans l'image ,il l'interprète à la dimension du conteneur en l'occurrence le contrôle Label (sans même régler le pictureposition(cest pas la peine)
Et voici la simplicité même
VB:
Private Sub UserForm_Activate()
Dim stdp As New StdPicture
Label1.Picture = stdp
End Sub
Et diverses autres avec les api par exemple
modèle avec les api en macro 4 pour ceux que ça intéresse
XL 2010 - Centrer VERTICALEMENT un texte dans un TextBox
Bonsoir, Centrer horizontalement un texte dans un TextBox, cela ne pose pas de problème. En revanche, centrer ce même texte verticalement, c'est une autre paire de manches... Dans mon cas, le texte est bien centré horizontalement mais tout en haut du TextBox, ce qui n'est pas très esthétique...
Patrick
Pièces jointes
Dernière édition: