VBA : Gestion d'évènement Userform dynamique

canichon -  
 Aseghir -
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...
Configuration: Windows XP
Firefox 2.0.0.11

9 réponses

  1. Rom1_35
     
    Je viens de trouver réponse à ma question.
    Pour ceux que ca pourrait intéresser :
    https://silkyroad.developpez.com/VBA/VisualBasicEditor/#LV-A
    2
    1. Aseghir
       
      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
      1. Polux31 Messages postés 7219 Statut Membre 1 204 > Aseghir
         
        Mais bien sûr ... tu n'as pu eu le temps ... c'est cela ... il faut "Sub_classer" .... mouaarrrffff
        0
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
  3. phil232 Messages postés 610 Statut Membre 178
     
    faut choisir son identifiant intelligement, n'oublies pas que windows aussi arrive à les distinguer
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. phil232 Messages postés 610 Statut Membre 178
     
    en vba tu peut écrire des trucs comm

    txtTest & i --> p.ex. txtTest1 si i = 1
    0
  6. canichon
     
    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
  7. phil232 Messages postés 610 Statut Membre 178
     
    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
  8. Rom1_35
     
    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
  9. Aseghir
     
    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