Bonjour,
VBA pour EXcel : dans une Userform j'ai une liste multi sélection. A chaque fois que je sélectionne un élément je crée dynamiquement une frame et quand je le désélectionne, je voudrais que la frame correspondante soit détruite.
dans les codes donnés, j'ai été à l'essentiel avec des noms que j'espère explicites
dans ma Userform
dans ma SubCréationFrame
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 dim MaCollectionFrame as Collection Private MaListe_Change If MaListe.Selected(MaListe.ListIndex) = true then Call CréationFrame else Call EffaceFrame end if
Différentes frames apparaissent bien au fur et à mesure de la sélection de lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 dim NouveauFrame as Controle Set MaCollectionFrame = New Collection set NouveauFrame = Me.Controles.Add("Forms.Frame.1") With NouveauFrame - top - height..... . tag = MaListe.List(MaListe.LIstIndex, 0) end with MaCollectionFrame.add NouveauFrame, NouveauFrame.TAg
sauf que MaCollectionFrame ne contient que le dernier. MaCollectionFrame.Count reste à 1
Ce qui fait que quand on veut un supprimer un, en fait on ne peut que supprimer le dernier sinon on obtient un "tourne en rond"....
Il doit y avoir une marche que j'ai manquée
Question subsidiaire : dans ma frame, sont contenus 60 controles Label, une combobox, des textbox etc. Certains contrôles sont des objets de collection car je veux pourvoir leur donner un comportement particulier. Quand j'arriverais à supprimer ma frame avec le code Me.Controls.Remove(CTL), faudra-t-il que je précise set objetDansMaFrame = Nothing ou pas
Merci pour votre aide
Boisselière
Partager