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 les éléments sélectionnés dans une ListBox à sélection multiple [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    775
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 775
    Points : 177
    Points
    177
    Par défaut Désélectionner les éléments sélectionnés dans une ListBox à sélection multiple
    Bonjour

    Après de multiples recherches, je ne trouve pas la solution, voilà le problème.

    Dans un formulaire qui contient 2 Listbox, si c'est des Listbox à sélection simple (donc, sans sélection multiple) un simple MaListe=Null suffit pour désélectionner l'élément sélectionné dans la Listbox précédemment utilisée.

    Par contre si les 2 Listbox sont à sélection multiple, lorsque je passe d'une Listbox à l'autre, l'élément ou les éléments sélectionnés dans la Listbox précédemment utilisée restent sélectionnés en surbrillance dans la liste.

    Comment désélectionner l'élément ou les éléments sélectionnés ou supprimer la surbrillance dans la Listbox précédemment utilisée lorsque j'en sélectionne un ou plusieurs dans l'autre Listbox .

    Merci d'avance pour aide

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    dans le cadre d'un listbox à multiselection, il faut parcourir la collection des éléments et les déselectionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
        With Me.ListBox1
            For i = 1 To .ListCount
               .Selected(i - 1) = False
            Next i
        End With
    End Sub

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    salut joe
    il y a beaucoup plus simple
    réinitialiser la listbox par la listbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
    ListBox1.List = ListBox1.List
    End Sub
    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Yes tu as raison

    En fait, à mes torts exclusifs, je pensais deviner un non-dit potentiel dans son explication : une possibilité d'ajouter par la suite un "transfert" d'une liste à l'autre, qui nécessite là d'identifier les éléments sélectionnés.

    d'où la présentation de Selected(x)

    mais à froid, en relisant, je crois que j'ai vu trop loin pour rien

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    c'est pas un tord il a une vision globale des possibilités maintenant


    1. aperçu de méthode (transfert)
    2. désélection de tous
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    775
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 775
    Points : 177
    Points
    177
    Par défaut
    Bonjour et merci à vous.

    Ça fonctionne avec les 2 solutions, celle de Patrick est plus simple et comporte qu'une ligne de code.

    Bravo pour votre réactivité

    Ma réponse s'est entre croisée, je prends note de la réponse de joe si besoin de transfert.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    775
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 775
    Points : 177
    Points
    177
    Par défaut
    Bonsoir.

    Je n'ai pas résolu mon problème, en effet avec un CommandButton1_Click pas de soucis.

    Par contre ça ne fonctionne pas dans un ListBox1_Click en multi sélection ?

    Ce que je veux faire :
    - Désélectionner l'élément ou les éléments sélectionnés dans la ListBox1 (MultiSelect = fmMultiSelectMulti) lorsque je clicque dans la ListBox2 (MultiSelect = fmMultiSelectMulti) pour sélectionner un plusieurs ou plusieurs éléments.

    Existe-t-il une solution ?

  8. #8
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    tu peux nous montrer toutes ces procédures ?

    je devine peut-être le problème, mais en VBA on ne devine pas, on analyse et on démontre

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    je crois qu'on l'a perdu Joe entre 2 item
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    775
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 775
    Points : 177
    Points
    177
    Par défaut
    Bonjour à vous.

    Je reviens à la surface après 2 jours d'immersion suite à une contrainte perso .

    Voici le fichier que j'ai modifié pour mieux expliquer le problème.
    Fichiers attachés Fichiers attachés

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    ca ressemble beaucoup au code que j'avais donné dans ton userform y compris le tri alpha
    mais je crois qu'avec les fonctions native comme (name as,dir ,etc...) et tout plein d'autre chose on pourrais largement simplifier Scripting est lourdo quand même !!!!
    en tout cas chez moi ca fonction le transfert (dans liste et dossier)
    je n'ai pas tout regardé mais les fichier doivent il être supprimer de la source après copie ????

    quoi que normalement déplace alors !!!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #12
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    J'ai toute confiance en Patrick (qui a osé rigoler ? )

    De mon côté, je ne suis pas en mesure de continuer sans l'élément demandé

    Citation Envoyé par joe.levrai Voir le message
    tu peux nous montrer toutes ces procédures ?
    la question est de vider une sélection dans un ListBox, via l'évènement d'un autre contrôle (lui-même un ListBox)
    du coup, la question étant assez ciblée et généraliste, le fichier ne sert à rien, les procédures contenues dans ton Userform vont suffire amplement à voir où est ton problème (mauvais évènement, mauvaise méthode, mauvais contrôle sur lequel on utilise l'évènement etc...), il suffit de les copier dans un message

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    775
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 775
    Points : 177
    Points
    177
    Par défaut
    J'ai modifié et adapter un classeur que j'avais trouvé sur un autre forum qui pouvait convenir que à ce que je souhaitai faire. En effet il faudrait en simplifier les procédures.

    Remarque : si un ou plusieurs éléments sont sélectionnés dans la ListBox1, après déplacement dans la ListBox2 le premier élément est sélectionné dans celle-ci et forcément plus aucuns éléments est sélectionnés dans la ListBox1.

    La question est comment : si un ou plusieurs éléments sont sélectionnés dans la ListBox1, lorsqu'on fait un clic dans la ListBox2 comment désélectionner le ou les éléments sélectionnés dans la ListBox1 ?

    Voici le code qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ListBox1_Click()
    Dim i
        With Me.ListBox2
            For i = 1 To .ListCount
               .Selected(i - 1) = False
            Next i
        End With
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ListBox2_Click()
    Dim i
        With Me.ListBox1
            For i = 1 To .ListCount
               .Selected(i - 1) = False
            Next i
        End With
    End Sub

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    @Modus
    tout d'abords je tiens a m'excuser d'avance pour ta douleur que tu va ressentir quand tes yeux vont s'exorbiter

    j'ai pris ton fichier et vider tout codes
    et j'ai repris ta démarche sans Scripting et autre lourderie bien pourries

    je pars du principe que :

    tu a a chaque fois 2 controls interdépendants donc dans ma vision une fonction peut servir au deux (c'est ce que j'ai fait )


    prépare ton sérum phy pour les yeux hahahaha

    choisi un dossier pour la L1 un dossier pour la L2 et sélectionne en L1 ou L2 et selon la liste box dont tu a sélectionné X item clique sur un des bouton transfert correspondant

    voila attention ca déplace même les sous dossiers c'é bo la vie non??
    Fichiers attachés Fichiers attachés
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    775
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 775
    Points : 177
    Points
    177
    Par défaut
    Bonsoir Patrick.

    Je suis ébloui par ton code réduit de 310 à 93 lignes et personnellement cela me parait difficile de faire mieux.

    N'étant pas un expert confirmé comme toi, néanmoins lorsque le fichier existe dans la source et dans la destination ça bug. Comment anticiper ce cas ?

    D'autre part la question concernant la désélection d'un ou plusieurs éléments sélectionnés dans la ListBox1 lorsqu'on fait un clic dans la ListBox2 (avant transfert) ou inversement n'est pas résolue.

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    j'ai ajouter la function presence
    change ca
    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
    16
    17
    18
    19
    Function transfert(x, y)
    'cette fonction sert aussi pour les deux listbox transfert les listbox et reellement les fichiers
        If Me.Controls("TextBox" & y) <> "" Then
            With Me.Controls("ListBox" & x)
                For i = 0 To .ListCount - 1
                    If .Selected(i) = True Then
                        If presence(.List(i), y) = False Then
                            Me.Controls("ListBox" & y).AddItem .List(i)
                            'deplacement réel du fichier
                            Name Me.Controls("TextBox" & x) & "\" & .List(i) As Me.Controls("TextBox" & y) & "\" & .List(i)
                        End If
                    End If
                Next i
            End With
        Else
            MsgBox "le dossier de destination n'est pas precisé"
        End If
        list_fich
    End Function
    '**************************************************************************************
    et ajoute la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Function presence(it, y) As Boolean
        presence = False
        With Me.Controls("ListBox" & y)
            For i = 0 To .ListCount - 1
                If .List(i) = it Then presence True
            Next
        End With
    End Function
    pour ton erreur du click elle est très simple

    quand je boucle sur le listcount des listbox regarde ce que j'ajoute après listcount et demande toi pourquoi?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    775
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 775
    Points : 177
    Points
    177
    Par défaut
    Re bonsoir Patrick et merci pour la correction.

    J'ai bien remplacé la fonction Transfert et intégrer la fonction Présence.

    Et je rencontre un petit souci avec :
    Nom : 2016-10-25_215833.jpg
Affichages : 2449
Taille : 26,5 Ko

    Mon manque de compétence ne permet pas de corriger ce problème, je suis sûr que vous avez la solution.

  18. #18
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    autant pour moi
    "=true"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    775
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 775
    Points : 177
    Points
    177
    Par défaut
    Autant pour moi aussi je n'ai pas percuter.

    Excusez-moi d'insister mais le problème de la désélection que j'ai plusieurs fois invoquer dans mes précédents et dernier post n'est pas résolu.

    Et comment sélectionné le ou les fichiers transférés dans la ListBox de destination ?

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    cadeau

    a partir du moment ou du appuie sur le bouton de la souris dans une listebox si dans l'autre il y a sélection elle est annulée
    je vois ce que tu veux de plus
    Fichiers attachés Fichiers attachés
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Retrouver les items sélectionnés dans une listbox
    Par Shennong dans le forum VB.NET
    Réponses: 3
    Dernier message: 16/05/2014, 16h02
  2. Réponses: 2
    Dernier message: 19/04/2013, 11h03
  3. Réponses: 13
    Dernier message: 21/05/2012, 15h46
  4. Réponses: 1
    Dernier message: 29/07/2010, 16h10
  5. Réponses: 5
    Dernier message: 05/10/2006, 10h18

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