Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 texte en filigrane dans une textbox

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pascal21

XLDnaute Barbatruc
bonjour à tous
dans un userform j'aimerais ne pas utiliser les labels pour indiquer le sujet de la textbox qui va avec (hum!!! déja pas tres clair)
donc, j'aimerais savoir si il est possible d'indiquer "NOM" par exemple dans un textbox pour que je sache ce qu'il faut y mettre?
merci
 
@Dudu2
essaie de faire simple
VB:
Sub SetFond(Ref As Control, Texte_De_Fond As String)
    Dim Label As MSForms.Label
    Const Retrait = 8

    Set Label = Controls.Add("Forms.Label.1", "Fond_" & Ref.Name, True)

    With Label
        .ForeColor = &H80000010
        .BackColor = Ref.BackColor
        .Font.Name = Ref.Font.Name
        .Font.Size = Ref.Font.Size
        .Tag = Me.Name & "+" & Ref.Name
        .Caption = Texte_De_Fond
        .AutoSize = True
        .Move Ref.Left + Retrait, Ref.Top + (Ref.Height - .Height) / 2
    End With

    If Not (Not TabLabelEventClass) Then
        ReDim Preserve TabLabelEventClass(1 To UBound(TabLabelEventClass) + 1)
    Else
        ReDim TabLabelEventClass(1 To 1)
    End If
    With TabLabelEventClass(UBound(TabLabelEventClass))
        Set .Label = Label
        Set .tbxassocié = Ref
    End With
End Sub
et ton module classe
VB:
Option Explicit

Public WithEvents Label As MSForms.Label
Public tbxassocié As Object
Private Sub Label_click()
    tbxassocié.SetFocus
End Sub
terminé
 
Ou avec la technique de @patricktoulon dont le code est à compléter.
Mais une classe comme dans ce Post c'est finalement plus "carré".
j'ai utilisé cette techno pour 2 boutons pour 3 c'est déjà trop
je l'ai dit plus haut + de 2 on fait du subclassing
sinon çà devient vite une usine a gaz absurde
le sub classing tu peux le faire dans un module classe ou l'userform comme tu veux
 
re
c'est pas le bon shema @fanch55 ton label est bel et bien dessus et non en dessous sinon il n'y aurait pas de soucis avec le click sur label

au dessus c'est zorder 0

si c'etait vraiment le cas comme tu est en autosize pour le label donc plus petit avec un textbox transparent on verrait un le label plus petit
et comme tout la surface est blanche donc le textbox backstyle 1 le label est forcement dessus d'autant plus que tu le left à 10 du left du textbox
donc shemas faux
à moins que j'ai raté un exemple dans la discussion
 
Dernière édition:
exellent code remasterisé 🤣 🤣 🤣 🤣
j'ai mis 3 lignes 🤣🤣

pourquoi j'ai fait la classe inverse:
pour libérer les events change original qui peuvent servir pour traiter les valeurs ce qui est le rôle de cet event a l'origine
essaie tu va voir les deux vont marcher
celui de la classe va rendre in/visible
l'autre fait ce que tu veux dedans

et pour faire du code propre tu pourrais utiliser une collection
et voila
merci @fanch55💪👍
 
c'est pas le bon shema @fanch55 ton label est bel et bien dessus et non en dessous sinon il n'y aurait pas de soucis avec le click sur label
Pas d'accord, je n'ai aucun problème de click sur le label, puisqu'il se fait sur le textbox .

Sinon, le demandeur ne doit pas être forcément un cador du code, il ne demande finalement qu'à mettre une indication dans sa textbox ...
Vous allez lui demander de mettre des classes et du faire du sub-classing sur un label dynamique, on se tape sur le ventre mais on va être les seuls ...
Sinon ton dernier code fonctionne parfaitement avec un seul label ...
 
re
Pas d'accord, je n'ai aucun problème de click sur le label, puisqu'il se fait sur le textbox .
oui quand tu click pas sur le mot du label
ce qui prouve bien qu'il est dessus
dans celui ci tout les textboxs marchent
 

Pièces jointes

Je crois avoir compris comment fonctionne le code initial de @fanch55.

Les TextBoxes qu'il utilise sont en BackStyle = 0, c'est à dire transparent. C'est là toute l'astuce !
Les TextBoxes sont toujours en ZOrder = 0, soit en premier plan.

La transparence permet d'afficher les Labels qui sont en arrière plan.
Il y a 1 Label pour mettre le fond blanc.
Il y a 1 Label transparent aussi pour mettre le titre

On peut se passer du Label pour le fond blanc en utilisant le Label du titre en fond blanc.
Comme les TextBoxes sont toujours en premier plan, quand on clique dessus ce sont bien leurs évènements qui sont activés.
 

Pièces jointes

re
et pour qu'ils restent blancs
VB:
Private Sub TextBox1_Change()
    Controls("Fond_Textbox1").Visible = Len(TextBox1) = 0
    TextBox1.BackStyle = Abs(TextBox1 <> "")
End Sub

Private Sub TextBox2_Change()
    Controls("Fond_Textbox2").Visible = Len(TextBox2) = 0
    TextBox2.BackStyle = Abs(TextBox2 <> "")
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
228
Réponses
40
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…