Créer "x" textbox dans un userform [Résolu]

Signaler
Messages postés
4
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
24 octobre 2008
-
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
-
Bonjour,

Alors je vous explique mon problème: Je souhaiterais créer "x" textbox dans un userform. "x" serait determiner grace à la soustraction d'une valeur correspond à ma ligne de fin et a une autre à ma ligne de début. pour chaque ligne je dois faire apparaître 3 textbox (NOM/PRENOM, FONCTION, OBSERVATION) et copier les valeur des lignes dans les text box correspondant.

En gros lorsque je selectionne une valeur dans le userform. Le programe va chercher la ligne de début et de fin correspondant à cette valeur soustrer les valeur trouver poru determiner le nombre de ligne à avoir puis afficher 3 textbox par ligne. Et pour finir copie les valeurs des ligne dans les text box. Je vous joint mon code, je n'arrive pas à faire apparaitre des textbox en faite.

Private Sub ComboBox1_Change()
    
    'recherche point de départ point d'arriver
  
    Feuil1.Activate
    i = 19
    While Range("E" &amp; i).Value <> UserForm4.ComboBox1.Value
        i = i + 1
    Wend
    pass = Range("B" &amp; i).Value
    If pass = "" Then
        Unload UserForm4
        Call UserForm4.initia
        UserForm4.Show
    Else
        Sheets(pass).Activate
    End If
        
    i = 6
    j = 6
    While Range("A" &amp; i).Value <> UserForm4.ComboBox1.Value
        i = i + 1
        j = j + 1
    Wend
    Do While Range("B" &amp; i + 1).Value = ""
        If Range("C" &amp; i).Value = "" Then
            Exit Do
        End If
    i = i + 1
    Loop
    
    'création de textbox
    
    Dim dist
    dist = 150
    
    For compt = 0 To i - j
        UserForm4.Controls.Add "vb.textbox", "Newbox", UserForm4
        With UserForm4!Newbox
            .Visible = True
            .Top = dist
            .Left = 150
            .Width = 2000
            .Height = 275
        End With
dist=
    Next compt
      
    
End Sub


merci d'avance

8 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
Salut,
Regarde si cela peu t'aider

Dim Compt As Integer

   For Compt = 0 To 5
       With UserForm1.Controls.Add("Forms.textbox.1", "Textbox" & Compt, True)
           .Top = Compt * 50
           .Left = 150
           .Width = 200
           .Height = 50
       End With
   Next , ----
[../code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
Re,
Essaie peu être

'création de textbox
   taille = i - j
   dist = 50
 
   Dim Compt As Integer

   For Compt = 0 To taille
       With UserForm4.Controls.Add("Forms.textbox.1", "Textbox" & Compt, True)
           .Top = dist
           .Left = 5
           .Width = 110
           .Height = 15
       End With
       dist = dist + 15
       UserForm4.Controls("TextBox" & Compt).Value = Cells(j + Compt, "C")
  Next , ----
[../code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
3
Bonjour,

Me.Width = 450
Me.Height = 440
a+
Messages postés
4
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
24 octobre 2008

Oui sa marche super les textbox apparaisse :)

Voila mon code

'création de textbox
    taille = i - j
    dist = 50
   
    Dim Compt As Integer


    For Compt = 0 To taille
        With UserForm4.Controls.Add("Forms.textbox.1", "Textbox" & Compt, True)
            .Top = dist
            .Left = 5
            .Width = 110
            .Height = 15
        End With
        dist = dist + 15
        UserForm4.TextBox(Compt).Value = Cells(j + Compt, "C")
   Next

En insérant la ligne en rouge je pensais qu'il me copierais dans la textbox la valeur de ma cellule a chaque fois qu'il créerais une textbox mais il me fait un erreur je pense que c'est du au (compt).

et j'ai une petite question aussi comment faire pour effacer les textbox? pour que quand je change de valeur dans mon combobox le nombre de textbox soit remi a jour

merci beaucoup
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
3
Bonjour,

pourquoi ne pas utiliser une msflexgrid ???

a+
Messages postés
4
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
24 octobre 2008

Merci, Jrivet sa marche parfaitement. J'ai mis 3 compteurs au total pour afficher mes 3 textbox par ligne. Mon soucis suivant est quand je change de valeur dans la combobox les textbox ne s'actualise pas. Par exemple si j'ai 6 ligne la première fois et que j'en est 3 la deuxieme. Les 6 ligne de textbox reste afficher et en plus de cela les données ne se copie pas. Si tu as des pistes pour moi je veux bien. Sinon un grand merci et une bonne continuation.

Si tu pouvais m'expliquer la différence gillard avec msflexgrid? c'est une commande que je ne connais pas
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
3
Bonjour,

click droit sur la boite à outils => contrôles suplémentaires 
cela te donnera une liste des contrôles  utilisables
choisis Microsoft MsFlexGrid

a+
Messages postés
4
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
24 octobre 2008

Est-il possible de modifier la taille d'un userform avec du code? par exemple je voudrais que mon userform fasse la taille du nombre de ligne de textbox que j'insère c'est réalisable ou la taille est non modifiable a partir d'un code?