Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

supprimer un type de contrôle dans USF

  • Initiateur de la discussion Initiateur de la discussion daniel
  • 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 !

D

daniel

Guest
Bonjour 🙂

Dans un USF, j'ai plusieurs textbox, créés 'à la volé', grâce au code suivant (merci Michel et Thierry !):

Private Sub CommandButton1_Click()
Dim Tableau() As String
Dim i As Byte, T As Byte, L As Byte
Dim TextBoxing As Variant

Tableau = Split(Range('A1'), ';')
For i = 0 To UBound(Tableau)
Set TextBoxing = Me.Controls.Add('Forms.TextBox.1')
L=10
With TextBoxing
.Left = L: .Top = T: .Width = 45: .Height = 15
.Value = Tableau(i)
End With
T = T + 15
Next i
Set TextBoxing = Nothing
End Sub


Comment, puis je, dans le même USF (sans le décharger) et en cliquant sur un second bouton, 'éliminer' tous ces textbox créés à la volée ? Je suppose qu'il s'agit d'une boucle du style:

For each control (type control) in Me
control.clear
Next control

...mais je n'y suis pas parvenu...

Merci de votre aide

Daniel
 
Bonjour Daniel, le Forum

Rapidos car je suis très à la bourre aujourd'hui... Mais j'ai reconnu 'TextBoxing' 😉

Essaies ceci :

Private Sub CommandButton2_Click()
Dim CTRL As Control
For Each CTRL In Me.Controls
If TypeOf CTRL Is MSForms.TextBox Then
CTRL.Visible = False
End If
Next
End Sub


Ce n'est pas la destruction, mais ce devrait faire l'affaire...

Sinon vu que ces TextBox sont générée en Run Time et ne sont pas préservées... Un 'End' ou un 'Unload' pourrait aussi être une solution...

Bon Aprèm
@+Thierry
 
Hello Thierry !

Merci pour ton aide, encore une fois.... Ca marche, et je ne pense pas avoir besoin de 'détruire' ces textbox, en effet.

You're one of the best...

A +

Daniel
 
Re bonjour Daniel

Merci !

Dans la foulée si jamais tu avais d'autres Texboxs 'Fixes' tu peux aussi utiliser la propriété Tag... Pour différencier ...


Bon Aprèm
@+Thierry
 
Bonjour à tous,

Daniel, si tu as vraiment besoin d'éliminer ces controles, tu peux utiliser la modif du code de Thierry suivante:

Code:
Private Sub CommandButton3_Click()
Dim CTRL As Control
Dim i As Integer
i = 0
For Each CTRL In Me.Controls
    If TypeOf CTRL Is MSForms.TextBox Then
        If CTRL.Tag = 'Toto' Then
            Me.Controls.Remove (i)
        Else
            i = i + 1
        End If
    Else
        i = i + 1
    End If
Next
End Sub

A+

DSA
 
Bonsoir DSA, re Daniel

Tiens, voilà un truc interessant ce 'Remove' !!! Je n'avais pas pensé l'utiliser ainsi avec un Index justaposé dans le If sur le Tag.

NB pour ceux qui prendrait ce Fil au Vol, ce Remove ne peut être applicable que sur des Controls ajoutés en Run Time, par contre en Design Time il résultera une Error.

Merci DSA et bonne Soirée
@+Thierry
 
- 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
5
Affichages
287
  • Question Question
Réponses
7
Affichages
332
Réponses
4
Affichages
211
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…