[VB] Récupérer des contenus de TextBox

Julien -  
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je n'arrive pas à récupérer le contenu de TextBox créés dynamiquement. Il faudrait que j'arrive à stocker les valeurs entrées par l'utilisateur dans les différents TextBox dans un tableau. Voici le code que j'utilise pour générer les TextBox:

NbS est le nombre de TextBox souhaitées que l'utilisateur précise dans un précédent formulaire.

For i = 1 To NbS.Text
MonTextBox = New TextBox
MonTextBox.Name = "TextBox" & NumeroTextBox
Form2.Controls.Add(MonTextBox)
MonTextBox.Size = New Size(50, 25)
MonTextBox.Location = New Point(Form2.Width / 2 - 25, 25 * i)
MonTextBox.Visible = True
NumeroTextBox = NumeroTextBox + 1
Next

Je veux ensuite qu'en cliquant sur un bouton, les valeurs entrées soient stockées. J'ai essayé avec le code suivant, mais je ne sais pas trop comment indiquer le nom des TextBox:

Dim i, k As Integer

Dim TableauSommets(Form1.NbS.Text - 1) As String
For k = 0 To TableauSommets.Length - 1
For i = 1 To Form1.NbS.Text
TableauSommets(k) = Form1.Controls("TextBox" & i)
Next
Next

Dans le code, Form1.Controls("TextBox" & i) est souligné et le message d'erreur est "Une valeur de type 'System.Windows.Forms.Control' ne peut pas être convertie en 'String' et je ne sais pas comment faire.

Merci d'avance pour votre aide.

Julien

A voir également:

4 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,

regarde ce lien sur les controles des userform
https://silkyroad.developpez.com/VBA/ControlesUserForm/#LI-B
1
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Re,
NbS.Text me parait bizarre...
voici ce que j(aurais codé

1/en variable globale au dessus des codes de l'userform car je suppose que ce tableau va être utilisé ailleurs; si utilisation dans un module: passe en "Public tableausommets"et en 1° ligne du module avant les macros.
Dim TableauSommets


2/et pour le bouton de commande
Private Sub CommandButton1_Click() 
Dim Ctrl As Control, cptr As Byte 
ReDim TableauSommets(0) As String 

' code d'après SilKyroad/ DVP 
For Each Ctrl In Me.Controls 
    If TypeOf Ctrl Is MSForms.TextBox Then 
        ReDim Preserve TableauSommets(cptr) 
        TableauSommets(cptr) = Ctrl.Object.Value 
        cptr = cptr + 1 
    End If 
Next Ctrl 

End Sub 
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Dans la création de tes TextBox ajouter...
MonTextBox.Tag = NumeroTextBox 


Et en VB.Net Voir ici
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
1
Julien
 
Bonjour,

Ce lien renvoie vers des explications sur du VBA. Or, je programme en VB. J'ai essayé d'adapter à ma situation, mais cela ne fonctionne pas.
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour,

Peut être comme ça, à condition que soit déclarée, en variable globale, MonTextBox As Object.

Dim i, k As Integer
Dim myText As Object
Dim TableauSommets(Form1.NbS.Text - 1) As String

For k = 0 To TableauSommets.Length - 1
   For i = 1 To Form1.NbS.Text 
      Set myText = Form1.Controls("MonTextBox" & i)
      TableauSommets(k) = myText.Text
      Set myText = Nothing
   Next
Next 


;o)
0