Alimenter une textbox crée dynamiquement

Fermé
BobOdeville - 8 août 2021 à 00:31
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 8 août 2021 à 15:02
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
A voir également:

2 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
8 août 2021 à 07:59
0
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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > bobodevil
8 août 2021 à 11:22
quel évènement déclenche la macro de création de textBox dynamique?
0
bobodevil > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
8 août 2021 à 13:22
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
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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
Modifié le 8 août 2021 à 14:03
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
bobodevil > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
Modifié le 8 août 2021 à 14:35
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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > bobodevil
8 août 2021 à 15:02
Cela fonctionne chez moi.

voir cet exemple:

https://www.cjoint.com/c/KHina2sUZ71

@+ Le Pivert
0