1ère lettre en majuscule dans plusieurs txtbox

Bonsoir, à toutes et tous,

J'ai un userform qui contient 35 textbox

Je cherche à éviter la répétition de la macro suivante qui force la première lettre en majuscule.

Private Sub TextBox1_Change()
TextBox1.Value = Application.Proper(TextBox1.Value)
End Sub 

J'aimerai par une seule macro (Une boucle si cela est possible) mettre la première lettre sur les 8 premiers textbox(s), en majuscule.

Ces txtbox sont nommés comme suit (f-ent1 - f_ent2 - ...f_ent8)

Merci d'avance

Cordialement

Bonsoir chindou,

j'ai pas testé, mais j'crois qu'ça s'rait dans ce genre :

Sub Essai()
  Dim i As Byte
  For i = 1 To 8
    With Controls("f_ent" & i)
      .Value = Worksheets.Proper(.Value)
    End With
  Next i
End Sub
screen

un tiret contre 2 soulignés : j'ai choisi le souligné

dhany

Merci bien dhany

Ton code m'as beaucoup aidé et m'as permis de résoudre en grande partie le problème

J'utilise ton code comme ci-dessous mais il me donne toutes lettres en majuscule.

Private Sub TB_Change()
Dim TB As textbox
  Dim i As Byte
  For i = 1 To 8
    With Controls("f_ent" & i)
      .Value = Application.Proper(.Value)
    End With
  Next i
End Sub
screen

comme au départ tu avais utilisé Proper, j'croyais qu'tu voulais ça.


sinon, utilise à la place UCase$ :

Private Sub TB_Change()
Dim TB As textbox
  Dim i As Byte
  For i = 1 To 8
    With Controls("f_ent" & i)
      .Value = UCase$(.Value)
    End With
  Next i
End Sub

dhany

j'ai essayé cette ligne ça donne rien toutes les ltres en minuscules

je vais essayer autre chose, tu ma donner l'important (une clé) je crois que j'arriverais à résoudre le problme.

tu a écrit :

j'ai essayé cette ligne ça donne rien toutes les ltres en minuscules

??? UCAse$() = UpperCase = en MAJUSCULES ! c'est LCase$() = LowerCase qui met en minuscules !

dhany

merci bien dhany

bonjour, Dhany , bonjour, tous le monde

Mon problème n'est pas résolu.

j'ai fait beaucoup de teste, mais je n'ai pas réussi à mettre en place le bon code.

Bonjour

au plus simple

Private Sub TB_Change()
Dim I As Long
  For I = 1 To 8
    Controls("f_ent" & I).Value = Application.Proper(Controls("f_ent" & I))
  Next I
End Sub

A+

Maurice

Bonjour chindou,

désolé, pour les majuscules, j'ai fait une erreur ! car UCase$(.Value) met toute la donnée en majuscules !

pour que ce soit seulement la 1ère lettre (et pas non plus celle de chaque mot) :

Private Sub TB_Change()
Dim TB As textbox
  Dim i As Byte
  For i = 1 To 8
    With Controls("f_ent" & i)
      If .Value <> "" Then .Value = UCase$(Left$(.Value, 1)) & Right$(.Value, Len(.Value) - 1)
    End With
  Next i
End Sub

@archer

tu a écrit :

au plus simple

* ton code est le même que celui de mon post d'hier à 19:38, sauf que mon code était plus simple vu que j'ai utilisé :

With Controls("f_ent" & i) .. End With

https://forum.excel-pratique.com/viewtopic.php?p=713280#p713280

* tu devrais relire la conversation : le .Proper() ne convient pas !

https://forum.excel-pratique.com/viewtopic.php?p=713297#p713297

en fait, chindou voulait dire :

car mon code qu'il a recopié en dessous est avec .Proper()

dhany

Bonsoir à tous,

@dhany: salut dhany, j'ai testé ton code, mais celui-ci ne me donne pas le résultat attendu....ai-je loupé quelque chose ?

Ci-joint un exemple, la textbox1 fonctionne correctement, pas les autres,

J'avais essayé d'adapter le code de la textbox1 en incorporant une boucle, mais idem, je n'obtenais pas le résultat voulu.

Où alors n'ai-je pas compris la demande ? on veut bien la première lettre en majuscule à la saisie dans la textbox concernée ?

Merci,

Cordialement,

Bonsoir xorsankukai,

mais si, ça marche très bien ! y'avait juste un p'tit travail d'adaptation à faire (car le demandeur avait pas fourni de fichier) :

tu peux même faire Ctrl e pour ouvrir le formulaire ! c'est cool, non ?

dhany

Re,

@dhany:........merci pour ton retour....

ok en passant par un bouton, mais ce n'est pas possible sans passer le bouton ? A la saisie comme textbox1 ?

Amitiés,

ben en fait, j'avais lu trop vite, et même avec TB_Change(), j'ai zappé qu'c'était au moment d'la saisie !

en plus, j'me suis rendu compte après-coup qu'la variable TB n'est pas utilisée, donc on pouvait supprimer :

Dim TB As textbox

heureusement, pour faire le job lors de la saisie comme pour ton TextBox1, c'que tu as fait est très bien !

même si j'trouve que chindou pourrait s'contenter d'une mise en initiale à la sortie, via TextBox1_Exit()

dhany

Re,

Merci dhany ,

Bonne soirée et à bientôt,

merci bien archer

Bonsoir tous le monde

Désolé, Les codes ci dessus ne donne rien

Et j’ai donné une réponse pas exacte, quand j’ai dit à dhany que ton code me donne toutes les lettres en majuscules en réalité le module ne donne pas le résultat voulu

Car j’avais testé le 1er code du forum sur textbox1 (f_ent1) sans enlever module suivant :

Private Sub f_ent1_Change()   
f_ent1.Value = UCase(f_ent1.Value)
End Sub

Merci pour tous

Bonjour chindou,

dans ton fichier, j'ai placé le code VBA de xorsankukai

dans chaque sub ..._Change() de tes 8 TextBox.

10exemple.xlsm (21.41 Ko)

n'oublie pas de le remercier !

dhany

Je te remercie pour l'aide apporter,

concernat le module pour chaque textbox pour avoir la 1ère lettre en majuscule je sais le faire.

moi je cherche (Si cela est possible) s'il y a une autre methode pour le resultat souhaiter a l'aide d'un seul module pour ces 8 TB

je te souhaite un très bon W-end et encore merci a toi dhany.

Cordialement

Rechercher des sujets similaires à "1ere lettre majuscule txtbox"