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 :

Annuler sélection listBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut Annuler sélection listBox
    Bonsoir,
    Je voudrais annuler la sélection d'un item d'une listbox dans l'évènement Change.

    Lorsque l'utilisateur change de valeur, il y a un filtre qui est effectué, et si l'item n'est pas sélectionnable, un message apparait et c'est à se moment là que je veux remettre à 0 la sélection, sauf que ça ne fonctionne pas.

    Voici un exemple tout bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ListBox1_Change()
    If ListBox1.ListIndex = 1 Then
        'ListBox1.Enabled = False 'en commentaire car ça change rien
        MsgBox "Coucou la liste = 1"
        ListBox1.ListIndex = -1
        'ListBox1.Enabled = True
    End If
    End Sub
    La macro passe même deux fois sur l'évènement...
    Avez vous une idée?

    Merci beaucoup de votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    Solution de contournement trouvée.
    Je déclare une variable boolean dans mon module, si la condition de selection n'est pas autorisée, je gère le truc dans l'evenement MouseUp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Public annulation As Boolean
     
    Private Sub ListBox1_Change()
    If ListBox1.ListIndex = 1 Then
        annulation = True
    End If
    End Sub
     
    Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If annulation Then
        ListBox1.ListIndex = -1
        annulation = False
        MsgBox "Coucou, il est interdit de faire ce choix !!!"
    End If
    End Sub
    J'ai trouvé que ça en attendant.
    Cordialement,

  3. #3
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    Bonsoir, je suis de nouveau bloqué.
    La methode que je livre ci-dessus fonctionne si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.ListIndex = -1
    Mais si je veux repositionner la sélection sur une autre ligne, le code est inopérant. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.ListIndex = 0 'cette ligne la n'est pas selectionnée...
    Je suis dans l'impasse. Si vous avez quelque chose, merci a vous!

    Bonne nuit! :-)

  4. #4
    Membre très actif Avatar de Gorzyne
    Profil pro
    Collégien
    Inscrit en
    Janvier 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2008
    Messages : 337
    Par défaut
    Salut Jojo triste que personne ait répondu à ton message à l'époque

    j'ai le même problème j'ai essayé de m'en sortir avec enableevents = False mais il execute quand même la macro évenementielle malgré le enableevents = False

  5. #5
    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 171
    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 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    L'instruction Application.EnableEvents n'a pas d'effet sur les contrôles du UserForm
    Pour éviter de passer par des instructions présentes dans un Event, il faut utiliser une variable booléenne
    Lorsque l'on modifie la propriété ListIndex du contrôle ListBox on déclenche inévitablement un événement de changement (Change)
    J'utilise l'événement Click pour gérer la sélection d'un ou plusieurs éléments de la liste.
    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

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Coucou
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    .....
    J'utilise l'événement Click pour gérer la sélection d'un ou plusieurs éléments de la liste.

    Et c'est le seul évènement à considérer lorsque l'on veut déterminer de manière orthodoxe la sélection faite. L'évènement Change n'étant, quant à lui, que la conséquence et non la cause.

    Ce distinguo est d'autant plus important à faire, que la "conséquence" (le Change) peut avoir une toute autre cause que celle d'une sélection (le clic).

Discussions similaires

  1. [AC-2007] Récupération Sélection ListBox dans Requête
    Par JDev_ dans le forum VBA Access
    Réponses: 5
    Dernier message: 08/06/2012, 15h49
  2. [XL-2010] Trier des lignes d'un tableau à partir d'une sélection listbox
    Par JulienLeno dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 19/10/2011, 16h00
  3. [ListBox] Annuler la sélection
    Par h0pelessS dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 06/07/2009, 09h39
  4. Sélection listbox, évênement sur simple clic
    Par DrizztDo dans le forum IHM
    Réponses: 5
    Dernier message: 26/01/2009, 19h37
  5. Sélection dans une ListBox
    Par LoicH dans le forum C++Builder
    Réponses: 2
    Dernier message: 16/04/2005, 22h13

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