Microsoft 365 Format grand Nombre de Textbox

eric72

XLDnaute Accro
Bonjour à tous,

J'ai un Userform avec beaucoup de Textbox, j'aimerais qu'à la saisie et au chargement il y ait un séparateur de milliers, il y a bien la méthode :
VB:
Private Sub TextBox156_AfterUpdate()
TextBox156.Text = Format(TextBox156.Text, "#,##0")
End Sub

Mais vu le nombre de textbox, il y a peut-être mieux à faire!!!
Merci beaucoup pour votre aide...
Eric
 

Pièces jointes

  • testEDL2.xlsm
    31.2 KB · Affichages: 7
Solution
Ok, essaie d'utiliser ce code que je préfère d'ailleurs, car la Classe des TextBox y est bien séparée et pas confondue avec le UserForm et où je ne sais pas vraiment ce que VBA instancie.
Avec une classe séparée et identifiée, c'est plus clair et plus compréhensible.

eric72

XLDnaute Accro
Bonjour Dudu2,

Merci beaucoup pour cette solution, par contre dans mon fichier d'origine j'ai déjà un module de classe et quand j'ajoute ce code il me met "espace pile insuffisant", je vais essayer de joindre le fichier d'origine en l'allégeant au maximum!!!
 

Dudu2

XLDnaute Barbatruc
Ok, essaie d'utiliser ce code que je préfère d'ailleurs, car la Classe des TextBox y est bien séparée et pas confondue avec le UserForm et où je ne sais pas vraiment ce que VBA instancie.
Avec une classe séparée et identifiée, c'est plus clair et plus compréhensible.
 

Pièces jointes

  • testEDL2 - Classe TextBox séparée.xlsm
    33.7 KB · Affichages: 5

ChTi160

XLDnaute Barbatruc
Bonjour Eric72
Bonjour le Fil
As tu essaié de simplifier ainsi ?
VB:
Private Sub UserForm_Initialize()
Dim I As Long
 For indx = 156 To 275
        I = I + 1

 Set TTB(I).TB = Me.Controls("TextBox" & indx)
 
 Next indx
'RemplitLesListes
BtAjoutObjectif.Visible = False: BtModif.Visible = False
End Sub
Edit : je n'avais pas regarde le Fichier de Dudu2
Bonne fin de Journée
Jean marie
 

eric72

XLDnaute Accro
Bonjour Eric72
Bonjour le Fil
As tu essaié de simplifier ainsi ?
VB:
Private Sub UserForm_Initialize()
Dim I As Long
 For indx = 156 To 275
        I = I + 1

 Set TTB(I).TB = Me.Controls("TextBox" & indx)
 
 Next indx
'RemplitLesListes
BtAjoutObjectif.Visible = False: BtModif.Visible = False
End Sub
Edit : je n'avais pas regarde le Fichier de Dudu2
Bonne fin de Journée
Jean marie
Bonjour Jean-Marie,
Merci quand même d'être passé voir pour m'aider ;)
Bonne soirée et à très bientôt...
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
@eric, juste une idée en passant.
Lorsqu'un USF contient énormément de textbox , il peut être intéressant de le basculer sur une feuille.
C'est ensuite beaucoup plus simple de gérer les données, de modifier les formats, d'y mettre des listes déroulantes ou encore de le faire évoluer si plus de commerciaux.
Un simple essai en PJ, la feuille est appelée avec :
Code:
Sub Ouvrir_Objectifs()
    Sheets("Objectifs").Visible = True
    Sheets("Objectifs").Select
End Sub
et refermée avec :
VB:
Sub Fermer_Objectifs()
    Sheets("Objectifs").Visible = xlSheetVeryHidden
    Sheets("Feuil1").Select
End Sub
 

Pièces jointes

  • testEDL2 (V2).xlsm
    34.1 KB · Affichages: 5

eric72

XLDnaute Accro
Bonjour tout le monde,
@eric, juste une idée en passant.
Lorsqu'un USF contient énormément de textbox , il peut être intéressant de le basculer sur une feuille.
C'est ensuite beaucoup plus simple de gérer les données, de modifier les formats, d'y mettre des listes déroulantes ou encore de le faire évoluer si plus de commerciaux.
Un simple essai en PJ, la feuille est appelée avec :
Code:
Sub Ouvrir_Objectifs()
    Sheets("Objectifs").Visible = True
    Sheets("Objectifs").Select
End Sub
et refermée avec :
VB:
Sub Fermer_Objectifs()
    Sheets("Objectifs").Visible = xlSheetVeryHidden
    Sheets("Feuil1").Select
End Sub
Bonjour Sylvanu,
Je note l'idée mais si je privilégie le userform c'est pour bien maitriser les éventuelles boulettes des utilisateurs, j'ai l'impression de mieux pouvoir contrôler les erreurs, mais j'ai surement tort.
Merci beaucoup pour cette remarque judicieuse.
Bonne soirée.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je pense qu'il a tout simplement colorer les cellules!!!
Exact. Seulement couleurs et bordures grises et blanches. 30s pour la feuille.
Après tout dépend de la consommation des infos, mais difficile de faire la corrélation entre Dupond, Mai et Textbox 192. :)
Après il faudrait ajouter un peu de code pour les Focus sur les cellules.
Avec des Worksheet_Change on peut simplement gérer la feuille en temps réel. Il est facile de déterminer que telle cellule c'est Untel et tel mois.
J'ai fait cet aparté, hors contexte je le concède, car j'ai déjà traité un ex de ce genre, et on a été amené à des gymnastiques incroyables ensuite pour traiter les données. Par ex simplement faire le total de Dupond sur l'année demande une sacré macro. Sauf si chaque textbox a été nommée intelligemment au départ, mais alors c'est beaucoup d'huile de coude.
Mais dans le contexte, votre macro est impeccable. ;)
 

Discussions similaires

Réponses
13
Affichages
376

Statistiques des forums

Discussions
313 320
Messages
2 097 135
Membres
106 848
dernier inscrit
toufk