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
 
Bonjour Patrick,
J'ai proposé deux approches avec Clic et MouseDown au post #3, mais ne semble pas intéressé Pascal. Je ne suis même pas sur qu'il ait fait l'effort d'ouvrir les PJ. 😅
Avec MouseDown, on peut aussi re-remplir une textbox après avoir cliqué sur une autre sans avoir rempli la précédente.
Test4.gif
 

Pièces jointes

Dernière édition:
Bonjour @sylvanu, @patricktoulon,
J'ai ouvert et testé tes 2 classeurs. Ça fonctionne bien, pas de souci.
Cependant, je trouve que les méthodes (la mienne et surtout celle de @fanch55 -Oh Meuse endormeuse et douce à mon enfance-) ne nécessitant pas de clic préalable et restorant le titre quand on vide la TextBox sont plus aisées. La saisie peut se faire naturellement comme dans des Controls standards.
 
si vous voulez gérer cela de long en large
il vous faut 3 events
le mouse down ou up (c'est pareil)
le keydown ou up
le exit

et faire cela en 3 sub générique pour les textboxs
juste pour le fun
VB:
Private Sub tbx_Nom_Exit(ByVal Cancel As MSForms.ReturnBoolean): tbx_Exit tbx_Nom, "Nom:": End Sub
Private Sub tbx_Nom_Keyup(ByVal keycode As MSForms.ReturnInteger, ByVal Shift As Integer): tbx_Keyup tbx_Nom, "Nom:", keycode: End Sub
Private Sub tbx_Nom_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): tbx_MouseUp tbx_Nom, "Nom:": End Sub

Private Sub tbx_Prenom_Exit(ByVal Cancel As MSForms.ReturnBoolean): tbx_Exit tbx_Prenom, "Prenom:": End Sub
Private Sub tbx_Prenom_Keyup(ByVal keycode As MSForms.ReturnInteger, ByVal Shift As Integer): tbx_Keyup tbx_Prenom, "Prenom:", keycode: End Sub
Private Sub tbx_Prenom_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): tbx_MouseUp tbx_Prenom, "Prenom:": End Sub

Private Sub tbx_age_Exit(ByVal Cancel As MSForms.ReturnBoolean): tbx_Exit tbx_age, "Age:": End Sub
Private Sub tbx_age_Keyup(ByVal keycode As MSForms.ReturnInteger, ByVal Shift As Integer): tbx_Keyup tbx_age, "Age:", keycode: End Sub
Private Sub tbx_age_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single): tbx_MouseUp tbx_age, "Age:": End Sub



Private Sub tbx_Exit(ByRef tbx, prefixe)
    With tbx
        If .Value = "" Then .Value = prefixe: .ForeColor = RGB(220, 220, 220)
    End With
End Sub

Private Sub tbx_Keyup(ByRef tbx, prefixe$, keycode)
     With tbx
     If .Value = prefixe Then .Value = ""
      Select Case keycode
            Case 8 , 46: If .Value = Left(prefixe, Len(prefixe) - 1) And keycode = 8 Then keycode = 0: .Value = prefixe: .ForeColor = RGB(220, 220, 220): Exit Sub
            Case 48 To 90, 96 To 105
            Case Else
        End Select

        If .Value = "" Then .Value = prefixe
    End With
End Sub
Private Sub tbx_MouseUp(ByRef tbx, prefixe)
    With tbx
        If .Value = prefixe Then .Value = "": .ForeColor = vbBlack
    End With
End Sub
ainsi au depart dans le vbe on met les prefixe
ensuite au mousedown le préfixe disparait et on est en mode édition
si on fait rien et que l'on sort par le exit le prefixe revient
keydown
si l'on tape la touche 8(retour en arrierre et que l'on vide il revient
si il y est déjà ben il reste

j'ai mis un select case au cas ou vous voudriez paramétrer d'autre chose
demo1.gif
 
je le fait sinon on va dire que je fait les choses à moitié
VB:
Private Sub tbx_Keyup(ByRef tbx, prefixe$, keycode)
     With tbx
     If .Value = prefixe Then .Value = ""
      Select Case keycode
            
            Case 8, 46: If .Value = Left(prefixe, Len(prefixe) - 1) And keycode = 8 Then keycode = 0: .Value = prefixe: .ForeColor = RGB(220, 220, 220): Exit Sub
            
            Case 48 To 90, 96 To 105
            If Left(.Value, Len(prefixe)) = prefixe Then .Value = Mid(.Value, Len(prefixe) + 1)
            
            Case 9, 13
                        
            Case Else
        
        End Select

        If .Value = "" Then .Value = prefixe: .ForeColor = RGB(220, 220, 220)
    End With
End Sub
 
Je t'ai déjà dit que du code ça sert à rien car on ne va pas se casser le Q à refaire un fichier avec des bouts de code pour essayer de comprendre ce que tu fais. Envoie plutôt un fichier.
pas "on ne va pas mais "je ne vais pas "(ne parle pas pour les autres )
comprendre ce que je fait
sincèrement celui qui ne comprend pas mon petit code de rien du tout autant qu'il ne s'amuse pas a jouer à détourner les events alors
mais bon puisque tu y tiens
amusez vous bien 😉
 

Pièces jointes

- 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
179
Retour