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

Julien -  
lermite222 Messages postés 9042 Statut Contributeur -
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

4 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    regarde ce lien sur les controles des userform
    https://silkyroad.developpez.com/VBA/ControlesUserForm/#LI-B
    1
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  3. 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
  4. Polux31 Messages postés 7219 Statut Membre 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