Microsoft 365 userform et textbox

PHV62

XLDnaute Junior
bonjour je voudrais savoir si il y a une solution pour éviter de remplir 20 fois la même chose alors qu' il n y a que le n° de textbox qui change

Private Sub textbox4_change() '1 lettre majuscule
TextBox4.Text = Application.Proper(TextBox4.Text)
End Sub
la même chose pour la 20 25 30 35 et ainsi de suite
merci de votre aide
 

Dranreb

XLDnaute Barbatruc
Bonsoir. Créez un module de classe nommé SupportTBx contenant ça :
VB:
Option Explicit
Private WithEvents TBx As MSForms.TextBox
Public Sub Init(ByVal TxtBox As MSForms.TextBox)
   Set TBx = TxtBox
   End Sub
Private Sub TBx_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If TBx.SelStart = 0 Then KeyAscii = AscW(UCase$(ChrW$(KeyAscii)))
   End Sub
Dans l'UserForm :
VB:
Option Explicit
Private Cln As New Collection
Private Sub UserForm_Initialize()
   Dim N As Integer
   Ajout TextBox4
   For N = 20 To 35 Step 5: Ajout Me("TextBox" & N): Next N
   End Sub
Private Sub Ajout(ByVal TBx As MSForms.TextBox)
   Dim SBx As SupportTBx
   Set SBx = New SupportTBx
   SBx.Init TBx
   Cln.Add SBx
   End Sub
 

PHV62

XLDnaute Junior
BONJOUR
je m explique un peu mieux dans mon userform j ai 95 textbox je voudrais mettre une majuscule sur certaine textbox pas tous
ensuite dans les 95 textbox je voudrais mettre au format date qu' une parti des textbox
les 2 codes que j ai écrit fonctionnent mais je dois répéter les codes autant de fois que de textbox ou je dois avoir les codes
existe t il un code pour regrouper tous les textbox en 1 seul code pour les majuscules
et séparément un code pour pour regrouper les textbox en 1 seul code pour les dates
merci
Philippe
 

Dranreb

XLDnaute Barbatruc
Oui, à l'aide d'un autre module de classe semblable à ce que je vous ai indiqué au poste précédent.
Ou à la rigueur un seul module de classe mais avec des options pour indiquer ce qu'il doit faire.
Mais on ne peut pas bien traiter les dates comme ça parce qu'il faudrait se servir de l'évènement Exit, qui n'est pas un évènement de la TextBox mais du contrôle. J'ai un UFmCalend qui serait plus judicieux, mais ça ne va pas non plus parce qu'il faut coupler le calendrier à la TextBox lors de l'évènement Enter, or c'est pareil pour celui là. S'il s'agit seulement de récupérer une valeur adaptée à une cellule c'est faisable. Il y a d'ailleurs tout ce qu'il faut pour ça dans mon objet ControlsAssociés.
Pour le coup avec cette fourniture il n'y a plus rien à écrire plusieurs fois, même pas les échanges avec une ligne de la base à mettre à jour. Tout se définit dans la Sub UserForm_Initialize.
 

Pièces jointes

  • MonCalendrier.xlsm
    83.5 KB · Affichages: 10
Dernière édition:

juvaxe

XLDnaute Occasionnel
Bonjour

Il existe également la solution d'avoir une feuille "technique" contenant des paramètres du classeur.

Une macro pourrait explorer la liste des Textbox qui y aurait été mise, avec le type d'action souhaité pour chacune d'entre elles.

Cordialement
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Les objets supports CAsso, que le ControlsAssociés conserve, ont une propriété Mode, non utilisée en interne, vous y mettez ce que vous voulez, permettant aussi d'orienter le traitement dans les procédures Change et KeyPress communes à tous les contrôles associés ajoutés. Il doit être déclaré avec l'attribut WithEvents pour pouvoir les prendre en charge.
 

Discussions similaires

Réponses
2
Affichages
347
Réponses
15
Affichages
956

Statistiques des forums

Discussions
315 093
Messages
2 116 133
Membres
112 667
dernier inscrit
foyoman