Manipuler les objets dans USF VBA Excel 2003
Nospam54
Messages postés
159
Statut
Membre
-
Nospam54 Messages postés 159 Statut Membre -
Nospam54 Messages postés 159 Statut Membre -
Bonjour,
Dans mon appli en cours de réalisation je crée dynamiquement des TextBox dans un Userform.
Voici le code :
Par défaut la largeur est définie à 50. Cependant j'ai besoin de pouvoir "manipuler" ces TextBox pour leur assigner une largeur spécifique, donc un positionnement horizontal sur l'USF également spécifique...
Je ne parviens pas à faire cela en utilisant le nom de ces nouveaux TextBox créés...
Quelqu'un peut-il me venir en aide ?
Merci par avance...
Dans mon appli en cours de réalisation je crée dynamiquement des TextBox dans un Userform.
Voici le code :
Private Sub CommandButton1_Click()
Dim Obj As Control
Dim Cl As Classe1
Dim i As Byte
Set Collect = New Collection
'
For i = 1 To 7 'Boucle pour la création des 7 TextBox
Set Obj = Me.Controls.Add("forms.Textbox.1")
With Obj
.Name = "TextBox" & i
.Object.Text = .Name 'Pour contrôler le nom des TextBox créés
.Left = 70 * i + 10
.Top = 30
.Width = 50
.Height = 15
.BackColor = &HC0FFFF
.BorderStyle = 1
.FontName = "arial"
.FontBold = True
.FontSize = 9
.Enabled = False
End With
'
'Ajout de l'objet dans la classe
Set Cl = New Classe1
Set Cl.textbox = Obj
Collect.Add Cl
Next i
'
End Sub
Par défaut la largeur est définie à 50. Cependant j'ai besoin de pouvoir "manipuler" ces TextBox pour leur assigner une largeur spécifique, donc un positionnement horizontal sur l'USF également spécifique...
Je ne parviens pas à faire cela en utilisant le nom de ces nouveaux TextBox créés...
Quelqu'un peut-il me venir en aide ?
Merci par avance...
A voir également:
- Manipuler les objets dans USF VBA Excel 2003
- Site pour vendre des objets d'occasion - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
2 réponses
Salut,
Je vais peut-être répondre indirectement, mais personnellement au lieu de m'embêter avec des créations d'objets dans un userform, je préfère les rendre visibles ou invisibles en fonctions des actions de l'utilisateur.
Plus de travail en amont mais gestion facilitée par la suite.
Bon courage,
A+
Je vais peut-être répondre indirectement, mais personnellement au lieu de m'embêter avec des créations d'objets dans un userform, je préfère les rendre visibles ou invisibles en fonctions des actions de l'utilisateur.
Plus de travail en amont mais gestion facilitée par la suite.
Bon courage,
A+
En fait les TextBox se remplissent automatiquement à partir de données présentent sur une feuille Excel.
J'ai pas mal avancé et parviens maintenant à créer dynamiquement dans mon USF des lignes contenant des TextBox.
Cependant ça marche même trop bien puisque la macro en créé bizarrement plus qu'il ne faut...
J'ignore si tu es en capacité de m'aider là-dessus...
Ci-dessous mon fichier test contenant la macro
https://www.cjoint.com/?BEsnJuBEPB5
J'ai pas mal avancé et parviens maintenant à créer dynamiquement dans mon USF des lignes contenant des TextBox.
Cependant ça marche même trop bien puisque la macro en créé bizarrement plus qu'il ne faut...
J'ignore si tu es en capacité de m'aider là-dessus...
Ci-dessous mon fichier test contenant la macro
https://www.cjoint.com/?BEsnJuBEPB5
J'ai aussi pensé à cette solution (que je n'exclue d'ailleurs pas), mais d'une part le nombre de "lignes" contenant ces TextBox dynamiques est aléatoire et, d'autre part... je dois l'avouer, je suis novice en VBA et je souhaite explorer le maximum de possibilités dans la programmation.
En attendant j'ai trouvé le code à utiliser pour manipuler mes objets créés, à savoir (si cela t'intéresse) :
... Me.Controls("TextBox1").Left = 66 Me.Controls("TextBox1").Width = 138 Me.Controls("TextBox2").Left = 210 Me.Controls("TextBox2").Width = 108 Me.Controls("TextBox3").Left = 324.05 Me.Controls("TextBox3").Width = 150 Me.Controls("TextBox4").Left = 480 Me.Controls("TextBox5").Left = 540.05 Me.Controls("TextBox6").Left = 600.05 Me.Controls("TextBox7").Left = 660 Me.Controls("TextBox7").Width = 60 ...Ensuite il suffit de boucler pour remplir les TextBox des infos à y lire...
Par contre je ne vois pas comment tu peux faire pour dynamiser tes textbox en fonction de ce que l'utilisateur inscrit dedans ?
A moins de compter les caractères et d'adapter tes TB en fonction...