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 :

ListBox : Initialize, Hide, Unload


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 46
    Par défaut ListBox : Initialize, Hide, Unload
    Bonjour tout le monde !

    J'ai un problème avec une userform. La procédure qui suit ne fonctionne pas : elle ne génère pas d'erreur mais pas de résultat non plus... Pour avoir fait différents tests, je sais que "cel.CurrentRegion" fait référence à la bonne plage et "cel.Rows.CurrentRegion.Count - 1" renvoit le bon chiffre. Mais la procédure n'affiche même pas le résultat de la MsgBox. Je crois que le problème vient de l'évènement "Initialize"; peut-être que je l'utilise mal ? Je veux que ces instructions s'effectuent lorsque l'on ouvre la boite de dialogue avec "UserForm3.Show".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Initialize()
        'A l'ouverture de la boite de dialogue on réinitialize la zone de liste
        Dim i As Integer
        Dim cel As Range
        Set cel = ThisWorkbook.Worksheets("Min & Max").Range("B183")
        MsgBox cel.CurrentRegion.Rows.Count - 1
        For i = 0 To cel.Rows.CurrentRegion.Count - 1
        UserForm3.ListBox1.Clear
        UserForm3.ListBox1.AddItem cel.Offset(i, 0).Value
        Next i
    End Sub
    J'ai également une autre petite question à propos de la différence entre Hide et Unload : ces deux évènements ferment tous les deux la boite de dialogue mais Hide garde en mémoire les infos associées comme les valeurs qui remplissaient la listbox et on les retrouvera lors de la prochaine ouverture, contrairement à Unload qui ne garde rien en mémoire ? Est-ce bien cela ? Je voudrais être sur d'avoir bien compris...

  2. #2
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    Bonjour

    Essaye ceci (Activate plutôt qu'Initialize, car tu pourras lancer plusieurs fois la procédure d'initialisation de ta UserForm) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Activate()
        'A l'ouverture de la boite de dialogue on réinitialize la zone de liste
        Dim i As Integer
        Dim cel As Range
        Set cel = ThisWorkbook.Worksheets("Min & Max").Range("B183")
        MsgBox cel.CurrentRegion.Rows.Count - 1
        UserForm3.ListBox1.Clear
        For i = 0 To cel.Rows.CurrentRegion.Count - 1
            UserForm3.ListBox1.AddItem cel.Offset(i, 0).Value
        Next i
    End Sub
    Ton "UserForm3.ListBox1.Clear" était mal placé.

    Pour "Hide et Unload" tu as bien compris

    à plus

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

Discussions similaires

  1. [XL-2007] Unload un UserForm déjà en .hide
    Par YassDumb dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/07/2012, 14h49
  2. Hide ou Unload ?
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/03/2009, 11h20
  3. Me.Hide ou unload me
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/07/2008, 19h29
  4. DrawItem d'un listbox...
    Par scorpiwolf dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/06/2007, 15h50
  5. [Listbox] ScrollBar Horizontal
    Par haleem dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/04/2005, 07h53

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