Module de class et userform

Bonjour, ne maîtrisant pas bien les modules de class j'aimerais avoir de l'aide pour solutionner un problème qui, me semble-t'il, ne peut se régler que par ce moyen:

J'ai créer un userform de saisie qui comporte plus de 100 textbox (BoxSaisie0 à 100 par exemple).

On peut saisir n'importe laquelle de ses box en cliquant dessus par la souris et en entrant du texte.

Je voudrais pouvoir savoir quelle box est en saisie, par une routine unique, car mon objectif est de pouvoir contrôler les caractères entrés un à un, un peu de la même façon qu'un combobox mais sans avoir à le faire pour mes 100 box ce qui serait un travail de Titan.

Si quelqu'un a la solution.

Merci

Michel

Salut le Forum

Pour débuter : Fichier ClassTextBoxKeyUp

Mytå

Merci pour cette aide.

Je vais essayer d'intégrer cela dans mon projet et reviendrai vers vous pour le résultat.

Michel

Je reviens vers vous car je tourne en rond. Je pense avoir un gros problème de compréhension !

Je n'arrive pas à faire des choses simples comme entrer des valeurs dans une des textbox et sur CR (keycode 13) faire afficher le contenu de la textbox saisie:

J'ai créé un module de Class ainsi:

Public WithEvents BoxGroup As MSForms.TextBox

Private Sub BoxGroup_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If KeyCode = 13 Then

MsgBox BoxGroup.Value

End If

End Sub

Puis dans un module:

Public Test As New ClassSaisie

Sub tester()

Test.BoxGroup

End Sub

Pouvez-vous me dire pourquoi rien ne se passe?

Merci

Michel

Re le Forum

Il aurait fallu joindre ton fichier avec le code.

Voila un autre exemple avec UserForm et TextBox comme tu voulais.

293classe-tbxusf.zip (15.02 Ko)

Mytå

Merci beaucoup pour votre aide, je commence à comprendre et j'ai réussi à faire fonctionner la Class dans mon projet.

Mais forcément, en avançant, je me découvre de nouvelles lacunes:

Comment fait-on pour appeler un userform nommé "SaisieMenu" par exemple dans une boucle For Each Obj in ????????? avec Obj défini précédemment comme MSForms.TextBox

Ceci doit se faire avant que SaisieBox ne soit afficher.

Salutations

Michel

Après de multiple essais j'ai enfin trouvé la syntaxe:

Dim Zone() As ClassSaisie '****définition d'un tableau, instance de ClassSaisie

Dim NZone As Integer '****nombre de textbox sur le SaisieMenu

Dim Obj As MSForms.Control

NZone = 0

For Each Obj In SaisieMenu.Controls

If TypeName(Obj) = "Textbox" Then

NZone = NZone + 1

ReDim Preserve Zone(1 To NZone)

Set Zone(NZone) = New ClassSaisie

Set Zone(NZone).TxtBox = SaisieMenu.Controls("Lun" & NZone)

End If

Next Obj

SaisieMenu.Show

Mon problème maintenant est qu'il ne reconnait pas If TypeName(Obj) = "Textbox" Then

Quelle est la meilleure façon pour reconnaître que c'est bien à un TextBox qu'on a à faire?

Désolé pour mon ignorance et merci encore

Michel

Rechercher des sujets similaires à "module class userform"