Textbox Dynamique

pasmermayvir

XLDnaute Junior
Bonsoir à Toutes et Tous,

Je cherche depuis un moment la façon d'afficher un nombre de TextBox différent selon un certain nombre d'éléments d'une colonne...
Les valeurs de chaque ligne s'afficheraient dans les textbox.
Par exemple colonne A il y a vingt noms ,comment afficher 20 textbox avec les noms....
Je vous remercie par avance....
 

PMO2

XLDnaute Accro
Re : Textbox Dynamique

Bonjour,

Une piste avec la démarche suivante

1) Dans un nouveau classeur renommez une feuille "BDD" et, dans la plage A1 : A20, inscrivez des noms
2) Créez un UserForm1 et, dans sa fenêtre de code, copiez le code suivant
Code:
Dim ColTextBox As New Collection
'_____________________________
Private Sub UserForm_Activate()
Dim obEvents As clsControlsEvents
Dim TB As MSForms.TextBox
Dim i&
Dim PosTop!
Dim ctl As MSForms.Control
Call GetBDD
PosTop! = 2
For i& = 1 To UBound(TBtexte)
  Set TB = Me.Controls.Add("forms.TextBox.1")
  TB.Value = TBtexte(i&)
  TB.Tag = "A" & i&
  TB.Top = PosTop!
  TB.Left = 10
  TB.BackColor = RGB(15, 200, 75)
  PosTop! = PosTop! + TB.Height + 2
Next i&
For Each ctl In Me.Controls
  If TypeOf ctl Is MSForms.TextBox Then
    Set obEvents = New clsControlsEvents
    Set obEvents.Tbx = ctl
    Set obEvents.Frm = Me
    ColTextBox.Add obEvents
  End If
Next ctl
Me.Height = PosTop! + (UBound(TBtexte) - 2) * 2
End Sub
3) Créez un module de classe et renommez sa propriété (Name) clsControlsEvents puis copiez le code suivant
Code:
Public WithEvents Tbx As MSForms.TextBox
Public Frm As UserForm
'_____________________________
Private Sub Tbx_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Sheets(MA_FEUILLE).Range(Tbx.Tag).Select
End Sub
4) Copiez le code suivant dans un module standard
Code:
'###  Constante à adapter  ###
Public Const MA_FEUILLE As String = "BDD"

Public TBtexte() As String
'_____________________________
Sub GetBDD(Optional dummy As Byte)
Dim var
Dim R As Range
Dim S As Worksheet
Dim i&
Set S = Sheets(MA_FEUILLE)
S.Activate
Set R = S.[a1].CurrentRegion
var = R
ReDim TBtexte(1 To UBound(var, 1))
For i& = 1 To UBound(var, 1)
  TBtexte(i&) = var(i&, 1)
Next i&
End Sub
'_____________________________
Sub Launch()
UserForm1.Show
End Sub

Lancez la macro Launch. Le UserForm apparaîtra avec des TextBox créées dynamiquement. Si vous double-cliquez sur
une TextBox la cellule correspondante sera sélectionnée grâce à l'adresse qui est stockée dans la propriété Tag.

Cordialement.

PMO
Patrick Morange
 

pasmermayvir

XLDnaute Junior
Re : Textbox Dynamique

C'est Chaud .....
J'aimerais en fait arriver avec le code (excellent Patrick) obtenir un résultat similaire à mon fichier joint....
Quand on clique sur un textbox, une deuxième série apparaît..... Il n'y a que les dix premiers pour l'instant qui marchent.
Je joue avec la Propriété Visible mais bon je savais bien qu'on pouvait faire plus simple.....dans l'écriture (et dans la complexité).
 

Pièces jointes

  • EssaiTextBox.zip
    19.9 KB · Affichages: 96

pasmermayvir

XLDnaute Junior
Re : Textbox Dynamique

Patrick ,
Pourrais-tu expliquer un peu ton code avec des commentaires....?
J'aimerais par la suite ajouter une série de textbox pour lire la colonne B de la feuille "Tables" et une autre série pour la colonne C de la feuille "ListeDépenses"....
Je te remercie encore pour ton excellent travail....
Pas
 

Discussions similaires

Réponses
4
Affichages
252

Statistiques des forums

Discussions
312 675
Messages
2 090 796
Membres
104 665
dernier inscrit
ronbt