VBA : Gestion d'évènement Userform dynamique

Fermé
canichon - 14 déc. 2007 à 16:39
 Aseghir - 4 sept. 2009 à 21:56
Bonjour à tous,

Voilà mon probleme, j'ai un Userform que je construis dynamiquement suivant le nombre d'items utilisé dans un onglet Excel ( en fait, je cré un formulaire dynamique ).

Dans ce formulaire, suivant certaines cases cochées, je bloque l'acces à certains TextBox à l'ouverture du Userform ( Initialisation ).

Mon probleme est que si je décoche ces cases, rien ne se passe : NORMAL !!

Je sais qu'on peut gérer ça en statique : Private sub TextBox1_Change ()

Mais comment proceder quand les TextBox sont multiples et que je ne connais pas leur nombre ( création en dynamique ) ??

Merci a tous pour votre aide... et bon week-end si je n'ai pas de réponse avant...

9 réponses

Je viens de trouver réponse à ma question.
Pour ceux que ca pourrait intéresser :
https://silkyroad.developpez.com/VBA/VisualBasicEditor/#LV-A
2
Excellent.

Tu a perdu u peu de temps avec ces imbéciles qui te répondent sans savoir de quoi ils parlent; mais la solution que tu as trouvée toi-même est excellente, j'aurais répondu la même chose si j'avais lu à temps.

Il faut en effet "Sub-classer" l'objet créé, dans une classe, déclarer l'évènement, etc. et après ça roule tout seul.

-AS
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > Aseghir
4 sept. 2009 à 17:23
Mais bien sûr ... tu n'as pu eu le temps ... c'est cela ... il faut "Sub_classer" .... mouaarrrffff
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
15 déc. 2007 à 05:29
bonjour,

Pour les créer :

Dim myTextBox As Object
Dim i As Long

With UserForm1
For i = 1 to nbCaseCochee
set myTextBox = .controls.add("Forms.TextBox.1","le nom du TextBox" & i, true)
... < tu mets les propriétés du textbox : myTextBox.Top = ..., la hauteur, largeur etc ...>
Next i
End With

....

pour les lire et mettre les données saisies dans les textboxes dans la colonne A de la première feuille du classeur par exemple:

Dim myTextBox As Object
Dim i As Long

With UserForm1
For i = 1 to nbCaseCochee
set myTextBox = .controls("le nom du TextBox" & i)
worksheets("Feuil1").Range("A" & i).Value = myTextBox
Next i
End With
.....

;o)

Polux
1
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
14 déc. 2007 à 17:17
faut choisir son identifiant intelligement, n'oublies pas que windows aussi arrive à les distinguer
0
Pardon !!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
14 déc. 2007 à 17:29
en vba tu peut écrire des trucs comm

txtTest & i --> p.ex. txtTest1 si i = 1
0
Je veux bien croire que c'est vendredi soir mais où t'as fumé ou c'est moi... JE NE COMPRENDS RIEN A CE QUE TU ME DIS.... Laisse tomber !!!!

Bon week-end
0
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
14 déc. 2007 à 18:00
moi, c'est Super Pollem

et je me demandes si Delphi ne serait pas mieux adapté à tes besoin. là c'est pas un pb d'attacher un event p.ex.
par contre en vba ce n'est pas possible (à ma connaissance)
0
Bonjour,
Je me permets de ressortir ce sujet pour savoir s'il était possible de créer une fonction du type Change() sur un TextBox créé dynamiquemment.
En statique cela donne :
Private sub myTextBox_Change ()
... [mon code]
End Sub

Mais quand est-il du dynamique? Est-ce possible?

Cordialement,
Romain.
0
Bof, Polux31. Ne pas avoir "lu *à* temps" devient dans votre imaginaire, "ne pas avoir eu le temps" ce qui est sémantiquement très différent. Ce qui se lit correctement se conçoit puis s'énonce correctement.
- AS
0