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
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
dans ma SubCréationFrame
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
Différentes frames apparaissent bien au fur et à mesure de la sélection de lignes.
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