• Initiateur de la discussion Initiateur de la discussion pasmermayvir
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

pasmermayvir

Guest
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....
 
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
 
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

Re : Textbox Dynamique

Merci Klin89,
J'ai regardé le post mais j'aimerai bien conservé mes textbox pour avoir ce rendu....
Mais le code est très intéressant et je te remercie encore...
Pasmermayvir
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
18
Affichages
597
Retour