IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

MaCollection.Count reste à 1 malgré l'ajout par MaCollection.Add de différents objets


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    retraitée
    Inscrit en
    Février 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Février 2018
    Messages : 18
    Par défaut MaCollection.Count reste à 1 malgré l'ajout par MaCollection.Add de différents objets
    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

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    il faut couper le cordon ombilicale entre ta collection et ton objet!
    'Set MaCollectionFrame = New Collection réinitialise ta collection Count = toujours 1
    Code cordon ombilicale : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MaCollectionFrame.add NouveauFrame, NouveauFrame.TAg
    set NouveauFrame=nothing
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim MaCollectionFrame as New Collection
    Private MaListe_Change
    If MaListe.Selected(MaListe.ListIndex) = true then
    Call CréationFrame
    else Call EffaceFrame endif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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
    set NouveauFrame=nothing
    Code Simplification : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim MaCollectionFrame As New Collection
    Private Sub UserForm_Click()
     MaCollectionFrame.Add Me.Controls.Add("Forms.Frame.1"), MaListe.List(MaListe.ListIndex, 0)
     With MaCollectionFrame( MaListe.List(MaListe.ListIndex, 0))
    '- top
    '- height.....
    .Tag = MaListe.List(MaListe.ListIndex, 0)
    End With
    End Sub
    Dernière modification par Invité ; 22/02/2018 à 11h51.

  3. #3
    Membre averti
    Femme Profil pro
    retraitée
    Inscrit en
    Février 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Février 2018
    Messages : 18
    Par défaut
    Super merci pour cette réponse rapide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ajout par bouton
    Par shinrei dans le forum ASP
    Réponses: 7
    Dernier message: 02/06/2006, 12h25
  2. Liste sélectioner la dernière valeur ajoutée par un popup.
    Par guano dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/03/2006, 17h03
  3. [VB.NET]evenement sur un controle ajouté par code
    Par Golzinne dans le forum Windows Forms
    Réponses: 14
    Dernier message: 01/03/2006, 22h37
  4. Réponses: 6
    Dernier message: 26/09/2005, 18h35
  5. Réponses: 4
    Dernier message: 02/06/2004, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo