VBA : Gestion d'évènement Userform dynamique

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. 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. 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
    2. @AseghirMais bien sûr ... tu n'as pu eu le temps ... c'est cela ... il faut "Sub_classer" .... mouaarrrffff
      0
  2. 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
    1. 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
      1. 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
        1. 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
          1. 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
            1. en vba tu peut écrire des trucs comm

              txtTest & i --> p.ex. txtTest1 si i = 1
              0
              1. faut choisir son identifiant intelligement, n'oublies pas que windows aussi arrive à les distinguer
                0