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 :

désélectionner un item dans un listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut désélectionner un item dans un listbox
    Bonjour à tous,

    A force de chercher une solution à mon problème, je suis arrivé ici :
    http://www.developpez.net/forums/d14...x/#post7872439

    . Voilà, j'ai fais un petit code pour désélectionner in item dans un listbox (nommé LstMenu).

    Il ne me désélectionne rien dans ma feuille active, et pourtant, mon LstMenu.ListCount me répond "7"

    Voici mon code qui est inopérant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub LstMenu_LostFocus()
      Debug.Print ActiveSheet.LstMenu.ListCount
      For a = 0 To ActiveSheet.LstMenu.ListCount
        ActiveSheet.LstMenu.Selected(a) = False
      Next
    End Sub
    Remarquez, je peut toujours vider la liste et la remplir au moment du LostFocus... Mais je ne trouve pas ça très "joli"...

    Merci pour vos éventuelles réponses... et bon week-end...

    Denis

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 179
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je suppose que tu parles bien d'un contrôle ActiveX ListBox.
    Si c'est le cas, je n'ai aucun problème avec le code que tu affiches. Après avoir sélectionné plusieurs éléments de la liste, ceux-ci sont désélectionnés dès la perte de focus (clic sur une cellule de la feuille)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut
    Tu m'as fais douter, du coup, j'ai supprimé l'ancien et inséré une nouvelle ListBox ActivX...

    Même problème, je joint mon fichier... Au cas ou j'aurai oublié un truc...

    Merci pour l'aide...

    Denis...

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 179
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La valeur de la propriété MultiSelect de ton contrôle lstMenu est égal à 0 (constante fmMultiSelectSingle). Le code présent dans la procédure événementielle LstMenu_LostFocus n'a donc aucun effet.
    La valeur doit être égal à 1 (constante fmMultiSelectMulti)
    La question initiale de cette discussion évoquait la multi-sélection d'un ListBox.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut
    Bonjour,

    Je supposais que même en fmMultiSelectSingle on pouvait utiliser le même code pour désélectionner l'unique item sélectionné...

    Car sinon, je ne vois pas comment faire autrement qu'avec ce code.

    Denis...

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 179
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je supposais que même en fmMultiSelectSingle on pouvait utiliser le même code pour désélectionner l'unique item sélectionné...
    Dans ce cas là, j'utilise la propriété ListIndex avec comme valeur -1, cependant il semble qu'avec l'ActiveX de ta feuille on ne visualise pas la dé-sélection.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub lstMenu_LostFocus()
     Me.lstMenu.ListIndex = -1
    End Sub
    Extrait de l'aide en ligne de la propriété Selected
    Remarques
    La propriété Selected est utile lorsque les utilisateurs peuvent effectuer plusieurs sélections. Vous pouvez utiliser cette propriété pour déterminer les lignes sélectionnées dans une zone de liste à plusieurs sélections. Vous pouvez également utiliser cette propriété pour sélectionner ou libérer des lignes d'une liste à partir de code.
    La valeur par défaut de cette propriété se base sur l'état de sélection actuel du contrôle ListBox.
    Pour des zones de liste à sélection unique, les propriétés Value ou ListIndex sont recommandées pour obtenir et définir la sélection. Dans ce cas, la propriété ListIndex renvoie l'index de l'élément sélectionné. Cependant, dans le cas de plusieurs sélections, la propriété ListIndex renvoie l'index de la ligne contenu dans le rectangle du focus, que la ligne soit réellement sélectionnée ou pas.
    Lorsque la propriété MultiSelect d'une zone de liste définie sur None, la valeur de la propriété Selected est True pour une seule ligne.
    La saisie d'une valeur hors plage pour l'index ne génère pas de message d'erreur, mais ne modifie pas les éléments de la propriété.


    [EDIT]
    J'ai voulu comprendre lla raison pour laquelle, ton contrôle ActiveX refusait la dé-sélection après avoir mis la valeur de ListIndex à -1.
    En fait dans la procédure événementielle LstMenu_Click(), tu recharges des données et en fin de cette procédure, pour je ne sais qu'elle raison, tu invoques la procédure événementielle (Worksheet_Activate) où tu recharges lstMenu ce qui coupe l'effet de dé-sélection
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Deplacer des items dans un listbox
    Par chourmo dans le forum Delphi
    Réponses: 2
    Dernier message: 25/07/2006, 13h53
  2. Réponses: 3
    Dernier message: 05/07/2006, 17h29
  3. comment valider/devalider un item dans une listBox?
    Par Mickey.jet dans le forum Delphi
    Réponses: 2
    Dernier message: 30/05/2006, 07h25
  4. descendre un items dans un listbox ...
    Par netah25 dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/02/2006, 16h09
  5. [Question] Ajouter un item dans une ListBox
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 29/12/2005, 19h38

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