Alimenter une textbox crée dynamiquement

BobOdeville -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,

J'ai créer ( c'est un grand mot) une macro qui permet d'ajouter dynamiquement des textbox dans une multipage selon une variable.
Dont voici le code de programmation :

Dim collect As Collection
Dim Obj1 As Object
Dim NbArticle As Integer
Dim i As Integer

Sheets("PARAMETRE").Range("B32").Value = ComboBox59.Value
NbArticle = Sheets("PARAMETRE").Range("B33").Value

Set collect = New Collection

For i = 1 To NbArticle

Set Obj1 = Me.MultiPage1.Pages(1).Controls.Add("forms.textbox.1")
With Obj1
.Name = "Désignation" & i 'nom de ta textbox (toto1, toto2, toto3, ...)
.Left = 15 'position par rapport au rebord gauche de l'UserForm
.Top = 20 * i + 65 'position par rapport au haut de l'UserForm
.Width = 160 'largeur de la zone d'écriture
.Height = 15 'hauteur de la zone d'écriture

End With

End sub

Ca marche très bien. Ainsi lorsque je sélectionne la variable ( Nom d'un fournisseur) dans la Combobox59, il apparait le nombre de textbox relative au x nombre d'articles référencés pour ce fournisseur.

Là ou je sèche c'est comment attribuer une valeur dans chaque textbox automatiquement.
Ainsi le fournisseur "Bob" propose des tomate, des courgettes, des poires et des pommes, et bien je souhaite que dans la textbox1 apparaisse : "Tomate", dans la textebox2 : "Courgettes" etc

Merci par avance pour vos éclairages

2 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    0
    1. bobodevil
       
      Bonjour Le Pivert.

      Merci pour votre réponse.
      Alors j'ai fais ceci à la suite de la macro précédente :
      _____________________________________________________________
      Sheets("MERCURIALE").Activate

      For j = 1 To Range("B" & Rows.Count).End(xlUp).Row

      If Cells(j, 2) = ComboBox59.Value Then
      Me.Controls("Désignation" & i) = Cells(j, 3)
      End If
      Next j
      _______________________________________________________________
      Les textbox apparaissent mais elle sont alimentées avec la même et dernière référence de ma plage de données

      Seriez-vous me dire ce qui cloche?
      Bien à vous
      0
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > bobodevil
         
        quel évènement déclenche la macro de création de textBox dynamique?
        0
      2. bobodevil > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Le changement de la valeur de la combobox59

        Private Sub ComboBox59_Change()

        Cette sub là fonctionne bien mes textbox apparaissent selon le nombre d'article référence dans ma plage de données.

        Ce qui ne fonctionne pas est que j'ai le même article qui apparait dans toutes les textbox alors qu'il devrait être différent.
        0
  2. bobodevil
     
    Le changement de la valeur de la combobox59

    Private Sub ComboBox59_Change()

    Cette sub là fonctionne bien mes textbox apparaissent selon le nombre d'article référence dans ma plage de données.

    Ce qui ne fonctionne pas est que j'ai le même article qui apparait dans toutes les textbox alors qu'il devrait être différent.
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Il faut supprimer les TextBox avant d'en créer d'autres!


      Private Sub ComboBox59_Change()
      Dim collect As Collection
      Dim Obj1 As Object
      Dim NbArticle As Integer
      Dim i As Integer
      
      Sheets("PARAMETRE").Range("B32").Value = ComboBox59.Value
      NbArticle = Sheets("PARAMETRE").Range("B33").Value
      
      Set collect = New Collection
      
      supprimer
      
      For i = 1 To NbArticle
      
      Set Obj1 = Me.MultiPage1.Pages(1).Controls.Add("forms.textbox.1")
      With Obj1
      .Name = "Désignation" & i 'nom de ta textbox (toto1, toto2, toto3, ...)
      .Left = 15 'position par rapport au rebord gauche de l'UserForm
      .Top = 20 * i + 65 'position par rapport au haut de l'UserForm
      .Width = 160 'largeur de la zone d'écriture
      .Height = 15 'hauteur de la zone d'écriture
      End With
       Me.Controls("Désignation" & i) = Cells(i, 1) 'adapter code
        Next
      End sub
      
      Sub supprimer()
      Dim Ctrl As Control
      
      For Each Ctrl In Me.Controls
          If TypeOf Ctrl Is MSForms.TextBox Then
      UserForm1.MultiPage1.Pages(1).Controls.Remove Ctrl.Name 'adapter nom userform
      End If
      Next Ctrl
      End Sub


      Voilà a adapter
      0
      1. bobodevil > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Merci le Pivert. pour votre réponse.
        Juste que ça bug sur supprimer
        UserForm2.MultiPage1.Pages(1).Controls.Remove Ctrl.Name 'adapter nom userform

        C'est bien le bon UserForm, la bonne MultiPage et la bonne Pages
        0