Bonjour,
Je suis nouvellement inscrit sur le forum et je vous remercie de m'y accueillir.
Je ne suis pas un grand connaisseur d'Excel, mais, je suis amené à concevoir un outil .
Il s'agit d'un Userform qui vas demander à l'utilisateur un nombre n.
En fonction du nombre, il vas créer automatiquement n TextBox en cliquant sur un Commandbutton.
Le but est donc de récupérer les infomations inscrite dans les différents TextBox.
Pour pouvoir réaliser cette opération voici mon code au Click du commandbutton :
VB:
Private Sub CommandButton3_Click()
Dim nbCMD As Integer, increment As Integer, valTOP As Integer, changeTOP As Integer
nbCMD = nbrCMD.Value
increment = 1
valTOP = 85
changeTOP = 0
While increment <= nbCMD
Dim Obj As Control
Set Obj = Me.Controls.Add("forms.Textbox.1")
With Obj
.Name = "TxtBox" & increment
.Top = valTOP + changeTOP
.Left = 6
.Width = 132
.Height = 18
End With
increment = increment + 1
changeTOP = changeTOP + 18
Wend
End Sub
Donc maintenant le but est de récupérer, également à partir d'un Click d'un CommandButton, les infos des TextBox.
J'ai essayé de m'instruire sur quelques tutos et j'ai sortit ça ( je tiens à préciser que ce n'est pas définitif et il peut être complétement refait si une autre méthode existe ) :
VB:
Private Sub Subbutton_Click()
Dim i As Integer
Dim TxtBox() As Variant
For i = 1 To increment
TxtBox(i) = Me.Controls.Item("TxtBox" & increment)
Next i
MsgBox "Le contenu du textbox est : " &
End Sub
Egalement je ne sais pas afficher les valeurs avec ce type de variable.
Alors voilà vous connaissez mon problème, si vous êtes apte à m'aider, je prends volontier.
Merci pour votre temps
Private Sub Subbutton_Click()
Dim i As Byte
For i = 1 To increment - 1
MsgBox "Le contenu du textbox" & i & " est : " & Me.Controls("TxtBox" & i).Value
Next i
End Sub
increment doit être une variable déclarée en haut de la form pour être reconnue.
Merci pour la rapidité.
Le code fournit marche très bien, le problème est que je n'ai toujours pas affecté le resultat de Me.Controls("TxtBox" & i).Value à une variable.
Exemple, si 4 est le nombre de textbox j'aimerais avoir 4 variable créer.
Ou alors je me trompe et uniquement Me.Controls("TxtBox" & i).Value peut nous servir.
J'ai du mal à comprendre comment tu veux utiliser les données issues de tes textbox, mais évite de créer n variables, et utilise plutôt un tableau (array) à taille variable pour stocker tes valeurs, ça me semble plus adapté !
bonjour
je pige pas le contexte tu donne peu d'indication
mais en occurrence ici c'est une variable tableau qu'il te faut et en global module
j'ai aussi variabiliser l’écartement et le height des textboxs
VB:
Dim nbCMD As Integer, increment As Integer
Dim tabtbx()
Private Sub CommandButton3_Click()
Dim valTOP&, changeTOP&, Htxb&, ecart&
If nbrCMD.Value = "" Then MsgBox "donnez un nombre!!": Exit Sub
nbCMD = nbrCMD.Value
ReDim tabtbx(1 To nbCMD)
increment = 1
valTOP = 85
changeTOP = 0
ecart = 22
Htbx = 18
While increment <= nbCMD
Dim Obj As Control
Set Obj = Me.Controls.Add("forms.Textbox.1", "TxtBox" & increment)
With Obj
tabtbx(increment) = .Name
.Top = valTOP + changeTOP
.Left = 6
.Width = 132
.Height = 18
End With
increment = increment + 1
changeTOP = changeTOP + ecart
Wend
End Sub
Private Sub CommandButton4_Click()
For i = 1 To nbCMD
MsgBox tabtbx(i)
Next
End Sub
Merci pour votre aide.
Cependant, avec votre méthode .Name je ne retourne que : "TxtBox1", "TxtBox2", etc...
Je ne retourne pas les valeurs contenu dans les textbox.
Le but est de récupérer ces valeurs pour faire une recherche dans un tableau.
Le problème, c'est que tu affiches un tableau dont les valeurs n'ont pas été remplies : je m'explique.
Quand tu appuies sur ton CmdButton3, tu crées un certain nombre de textbox. Ensuite, tu remplis les textbox. Puis, pour les afficher, tu appuies sur le CmdButton4.
Sauf que tu as remplis tes Txtbox APRES les avoir créées, càd APRES l'exécution de ta macro de création de Textbox, qui te sert aussi de macro de remplissage de ton tableau suivant tes valeurs. Ainsi, vu comment tu as rangé tes bouts de code, pour enregistrer les valeurs de tes textbox dans ton tableau, il faudrait recliquer sur le CmdButton3. Sauf que tu vides tes Textbox quand tu exécutes cette macro.
Du coup ton tableau reste toujours vide, forcément
Super j'ai testé tout ça et j'ai compris la mécanique.
Cependant, j'ai une question qui sort un peu du sujet mais comment puis-je récupérer cette information sous forme de variable ?
Je m'explique :
Le but de mon projet est de récupérer l'information inscrite dans les txtbox pour aller chercher une ligne dans un autre fichier excel.
La ligne ciblé est la ligne comportant le numéro inscrit dans les txtbox ( les infos récupérer sont uniquement des integer )
Bien sûr que c'est possible, mais les lignes dans tes textbox s'en sont plusieurs ou tu entres un caractère par textbox et tu concatènes tout ou tu sommes toutes les valeurs des textbox ?
Donne moi plus d'indications, mais quoi qu'il en soit c'est bien entendu faisable de récupérer la valeur dans une variable.