Supprimer des contrôles dynamiquement

Supprimer des contrôles dynamiquement - VB/VBA/VBS - Programmation

Marsh Posté le 19-10-2008 à 13:28:57    

Bonjour à tous,
 
 
Je m'adresse à nouveau à vous pour une autre question.
Je souhaite avoir dynamiquement une zone de texte par cellule de la plage "Departments".
La partie ajout de contrôles marche très bien, mais par contre, quand je rouvre le formulaire après avoir rajouté des text_box automatiquement, elles restent sur le formulaire.
Je voudrais donc commencer par supprimer toutes les textbox de mon formulaire.
 
Voici le code que j'ai pour l'instant. Ca bloque sur "add_department.Controls.Remove (ctl)"
 

Code :
  1. Private Sub UserForm_Activate()
  2. Dim Top, Left, Width, Height, i As Integer
  3. Dim NumeroTextBox As Integer
  4. Dim TextBoxName As String
  5. For i = 1 To 3
  6.     For Each ctl In add_department.Controls
  7.         If ctl.Name = "Txt" & i Then
  8.             add_department.Controls.Remove (ctl)
  9.             'Set ctl = Nothing
  10.         End If
  11.     Next ctl
  12. Next i
  13. Application.Goto Reference:="departments"
  14. n = Selection.Rows.Count
  15. nb_lines.Caption = n
  16. Top = 10
  17. Left = 10
  18. Width = 100
  19. Height = 20
  20. NumeroTextBox = 1
  21. For i = 1 To n
  22. Set TextBox = Controls.Add("Forms.Textbox.1" )
  23. With TextBox
  24. .Name = "Txt" & i
  25. .Text = Selection.Cells(i, 1)
  26. .Visible = True
  27. .Top = Top 'Definit la distance entre le bord de la fenetre et le bord du conteneur
  28. .Left = Left 'Definit la distance entre le bord gauche de la fenetre et le bord du conteneur
  29. .Width = Width 'Definit la largeur de l'objet
  30. .Height = Height 'Definit la hauteur de l'objet
  31. .Font.Size = 10
  32. End With
  33. Top = Top + 25
  34. Next
  35. Add_line.Top = Top - 25
  36. Cancel.Top = Top
  37. validate.Top = Top
  38. Top = Top + 25
  39. add_department.Height = Top + 25
  40. End Sub


 
Avez-vous une idée ?
 
Merci

Reply

Marsh Posté le 19-10-2008 à 13:28:57   

Reply

Marsh Posté le 19-10-2008 à 16:12:06    

Remove ne fonctionne pour les contrôles ajoutés dynamiquement, et fonctionne avec un Identifiant qui peut être soit la position soit un nom
 
Donc c'est

Code :
  1. add_department.Controls.Remove (ctl.Name)


 
Mais je le répète ça ne marchera que si ils ont été créés dynamiquement


Message édité par dreameddeath le 19-10-2008 à 16:12:28
Reply

Marsh Posté le 20-10-2008 à 12:26:22    

Merci pour ta réponse.
 
Est-ce que ça ne devrait pas fonctionner pour enlever les contrôles créés par la ligne 29 (set Textbox = control.add...) ?
 
Le problème est que quand je ferme le formulaire et que je le rouvre, les contrôles créés la fois d'avant sont toujours là.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed