Alimenter une textbox crée dynamiquement
BobOdeville
-
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Alimenter une textbox crée dynamiquement
- Cree un compte google - Guide
- Cree gmail - Guide
- Créer une adresse hotmail - Guide
- Créer une liste déroulante excel - Guide
- Créer une story facebook - Guide
2 réponses
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.
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.
Il faut supprimer les TextBox avant d'en créer d'autres!
Voilà a adapter
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
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
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.