64 textbox avec 3 Sub chacune...

  • Initiateur de la discussion Arsène_Lupin
  • Date de début
A

Arsène_Lupin

Guest
Bonjour le forum,

G créé un userform avec entre 1 et 64 textbox à saisir par l'utilisateur.

Pour gérer le bon affichage et le contrôle du contenu des textbox, j'ai 3 Sub par textbox, une TextBox_Enter, une TextBox_Change et une TextBox_Exit.

Pour ne pas avoir à faire un copier-coller-adapter 64 fois, je voudrais savoir comment créer seulement 3 Sub, qui s'appliqueraient à n'importe quelle textbox, par le biais d'un paramètre (n° de la TextBox).

Ci-joint le fichier avec l'USF et les Sub "exemple"pour le textbox1.


Merci


Arsène
 

Pièces jointes

  • USF_MultiTextBox.zip
    39.3 KB · Affichages: 13
N

Nono123

Guest
Bonsoir le Forum,

je crois qu'il n'y à pas mieux pour planter notre Excel

à moins qu'une âme charitable ne te trouve la syntaxe idéale

le pb c'est qu'il nous ecrit la sub mais le code ne s'execute pas
(ben oui la form est déjà chargée en mémoire), il faut fermer Excel +Fin de tâche et réouvrir, et là ça passe, et en plus il faut faire attention a ne pas réécrire une sub existante..........

j'ai tester ceci:

Dim X As Integer
Dim i as Integer

For i = 1 To 10
ActiveWorkbook.VBProject.VBComponents(5).Name = "UserForm1"
With ActiveWorkbook.VBProject.VBComponents("UserForm1").CodeModule
X = .CountOfLines
.InsertLines X + 1, "End sub"
.InsertLines X + 1, "Call TextBox_Change"
.InsertLines X + 1, "Private Sub TextBox" & i & "_Change()"
Next

...perso je crois que le but n'est pas de ne pas faire de copier/coller , mais bien de se simplifier le travail, alors est-ce vraiment nécéssaire

Bonne soirée
 
M

Michel_M

Guest
Bonjour Arsène, nono et le forum,

Ci joint piste pour ne pas écrire 64 fois les mêmes macros en utilisant les modules de classe

Soyez indulgent c'est la 1° fois que j'arrive à comprendre et à faire un module de classe à cette occasion (je cherchais un thème !)

Ce travail doit beaucoup à la demo de Denis M. sur excelabo
www.excelabo.net

A+
Michel
 

Pièces jointes

  • aspro_classes.zip
    12.3 KB · Affichages: 21
M

myDearFriend

Guest
Bonsoir tout le monde,


Le module de classe semble effectivement une solution à travailler mais, sauf erreur de ma part, le problème c'est que les évènements Exit et Enter ne sont pas gérés par cette solution...


Cordialement,
Didier_mDF

myDearFriend-3.gif
 
M

Michel_M

Guest
Bonjour Didier, Nono, Arsène,

Effectivement, j'avais essayé sans succès; débutant dans ces modules de classes, je m'étais dit qu'il y avait un truc que je n'avais compris (il y en aura d'autres !).

Pourrais tu me dire pourquoi ces 2 événements sont refusés et n'apparaissent pas dans la liste déroulante de la fen^tre droite ?

Ce n'est pas urgent.

D'avance merci

Michel
 
M

myDearFriend

Guest
Salut Michel_M,


Ben là ça va être rapide.... navré, mais j'en sais rien LOL !

Je pratique un peu seulement les modules de classe, mais je n'ai jamais trouvé l'astuce pour contourner ce problème... (Maître Ti, si tu passes dans le coin...)


Cela dit la solution lourde pour notre "Gentleman Cambrioleur" serait de procéder selon un truc du genre :

Private Sub TextBox1_Enter()
Call GroupTextBox(TextBox1)
End Sub
'---------------------------------
Private Sub TextBox2_Enter()
Call GroupTextBox(TextBox2)
End Sub
'---------------------------------
Etc....


et de faire :

Private Sub GroupTextBox (T as Control)
With T
.Text = "Joueur " & Right(T.Name,1)
.SelStart = 0
.SelLength = Len(T)
End With
End Sub


Puis, la même chose pour les évènements Change et Exit des TextBox...


Cordialement,
Didier_mDF

myDearFriend-3.gif
 
A

Arsène_Lupin

Guest
Merci à tous pour votre aide Nono, MyDearFriend, Michel.

J'ai développé la dernière solution en faisant des fonctions avec paramètres.

G maintenant un autre problème (décidément...)

Quand l'utilisateur saisie le textbox 16 (le dernier de la 1ère page du multipage), je voudrais continuer et passer automatiquement au textbox 17 (le 1er de la page suivante) avec son texte par défaut sélectionner.

Mais ça ne marche pas, car g l'impression que la macro TextBox17_Enter déclenche pour je ne sais quelle raison la macro TextBox16_Enter!!! Et comme la 1ère page n'est plus active le focus ne peut être mis sur textbox16...

Je ne peux pas joindre le fichier car impossible de le réduire à moins de 50 ko en zippé... sniff

Merci encore le forum
 
T

Ti

Guest
De toute façon, à mon avis ta façon de procéder n'est pas viable. Comment feras-tu si tu te retrouves avec un championnat avec 200 joueurs. Tu ne pourras pas créer 200 textbox.

Voici une façon de faire qui me semble plus simple. Tu n'as pas besoin des événements Enter et Exit et de tout un tas de contrôles.

Evidemment dans cette démo je ne fais rien de la liste des joueurs, mais il serait très simple de la copier quelque part dans une feuille à la sortie du userform (au clic sur le bouton Valider).
Attention, comme j'ai fait ça vite fait, il peut rester quelques petits bugs, mais rien de bien difficile à réparer.

Deux conseils :

- TOUJOURS travailler "Option Explicit"
- pense à donner des noms expressifs à tes contrôles, parce qu'on s'y perd dans ces OptionButton1, OptionButton2 etc.
 

Pièces jointes

  • USF_MultiTi.zip
    17.5 KB · Affichages: 29
A

Arsène_Lupin

Guest
Merci Ti,

Comme quoi avec Excel il faut parfois savoir privilégier la simplicité à l'esthétisme: lol

Mon générateur de tournoi fonctionne à partir du userform, donc c génial!

Je tiens juste à dire que quoi qu'il arrive, le nombre de joueurs pour mes tournois ne dépassera jamais les 64 (8 groupes de 8 joueurs maximum)...

A++ le forum
 

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 875
Membres
103 980
dernier inscrit
grandmasterflash38