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 :

Sélection dans une ListView [XL-2007]


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
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut Sélection dans une ListView
    Bonjour à tous,

    Une nouvelle fois je fais appel à vous car j'ai une difficulté que je ne parviens pas à comprendre.

    Je travaille avec Excel 2007 sous Windows 7.

    J'ai crée un UserForm dans lequel j'ai placé (entre autre) 3 ListView qui sont alimentées par des données placées sur 3 feuilles de mon classeur.
    Je remplis mes ListView sans problème.
    Le but est de cliquer sur un CommandButton et qu'à ce moment, un fichier Excel s'ouvre. Le nom de ce fichier étant donné par l'Item sélectionné dans l'une des ListView.
    Tout cela fonctionne correctement. J'ai même placé la Multiselection à "True" pour sélectionner plusieurs fichiers en même temps.

    MAIS, voici mon problème.
    Si je sélectionne un Item "Fichier1" sur la ListView1, puis, changeant d'avis, je sélectionne un Item "Fichier24" sur la ListView2, le clic sur le commandButton m'ouvre le fichier "Fichier24" (c'est ce que je demande) mais il m'ouvre aussi le fichier "Fichier1" de la ListView1 alors que celui-ci n'est plus sélectionné !

    Ou est mon erreur ? Pouvez-vous m'aider ?

    Voici le code pour l'initialisation de mon UserForm

    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
    Private Sub UserForm_Initialize()
     
    ListView1.Gridlines = True
    Me.ListView1.CheckBoxes = True
    ListView1.MultiSelect = True
     
        With ListView1
             With .ColumnHeaders
                 .Clear          
                .Add , , "Nom Facture", 130
                .Add , , "Montant", 40, lvwColumnCenter
                .Add , , "Relance Mail", 60, lvwColumnCenter
                .Add , , "Relance Courrier", 70, lvwColumnCenter
            End With
     
            Sheets("Items ListView1").Select
     
           '.................. Remplissage de la ListView1------------------
           '--------------Même démarche pour remplir les 2 autres ListView ------
    Voici maintenant le code lié à mon CommanButton

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Private Sub CommandButton1_Click()
     
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim Fichier_à_ouvrir As String
    Dim Chemin As String
     
    For i = 1 To ListView1.ListItems.Count
     
        If ListView1.ListItems(i).Selected = True Then
     
        Fichier_à_ouvrir = ListView1.ListItems(i).Text
        Chemin = "D:\Dir1\Dir2\Dir3\Dir4\Dir5\" & Fichier_à_ouvrir & ".xls"
        Workbooks.Open Filename:=Chemin
     
        End If
    Next
     
    For j = 1 To ListView2.ListItems.Count
     
        If ListView2.ListItems(j).Selected = True Then
     
        Fichier_à_ouvrir = ListView2.ListItems(j).Text
        Chemin = "E:\Dir1\Dir2\Dir3\Dir4\Dir5\" & Fichier_à_ouvrir & ".xls"
        Workbooks.Open Filename:=Chemin
     
        End If
    Next
     
    For k = 1 To ListView3.ListItems.Count
     
        If ListView3.ListItems(k).Selected = True Then
        Fichier_à_ouvrir = ListView3.ListItems(k).Text
        Chemin = "E:\Dir1\Dir2\Dir3\Dir4\Dir5\" & Fichier_à_ouvrir & ".xls"
        Workbooks.Open Filename:=Chemin
     
        End If
    Next
     
    End Sub
    Une dernière question. Je m'étais dit qu'il serait interessant de placer des CheckBoxes devant les Items et ainsi de les cocher pour sélectionner les Items ... Je ne parviens pas à trouver les "bonnes" lignes de code (C'est un peu pour cela que je me suis rabattu sur la séléction multiple).
    Si vous avez des pistes à me proposer, je suis preneur.

    Bonne soirée et bon weekend.

    danad38

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonsoir,
    Ce n'est pas dans l'initialisation que se trouve l'erreur mais dans le code de sélection des items.

  3. #3
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut
    Il faudrait effectivement voir le reste du code, mais je ne trouve pas ça choquant. Tu as deux listes qui sont indépendantes, donc le fait de sélectionner un item sur l'une ne supprime pas la sélection sur l'autre, c'est juste qu'étant donné que ton 1er liste perd le focus, tu ne vois plus l'item qui est sélectionné, mais il y en a bien un.
    Que veux tu faire exactement? si tu sélectionnes une entrée sur la Liste2 il faut annuler les sélections faites sur la Liste1?
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  4. #4
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut Sélection dans une ListView
    Bonjour Qwazerty,

    En effet tu poses la bonne question, je n'ai pas été assez précis.

    Lorsque je me trouve devant mon formulaire et ces 3 ListView, il peut arriver que je sélectionne un Item dans une ListView, mais que je constate que j'ai fait une erreur (avant d'exécuter le CommandButton). Je sélectionne alors un (ou plusieurs) autres Items dans une autre liste. Je souhaite donc annuler ma précedente sélection.
    Je précise par ailleurs que dans "presque" tous les cas, il ne peut pas y avoir des sélections dans plusieurs ListView en même temps (même si ce principe pourrait, quequefois, être interessant.

    Merci.

    Danad38

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Dans ce cas, ajoute un bouton "Reset" et dans le code du bouton tu reproduis ce code pour chacune des listbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ListBox1.MultiSelect = False
    ListBox1.MultiSelect = True
    Ça aura pour effet de supprimer les items sélectionnes
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut Sélection dans une ListView
    Bonsoir Qwazerty,

    Excuse moi pour ce retard.
    Merci pour ta proposition même si elle ne me satisfait pas vraiment sur le principe de son fonctionnement. En effet, si je dois sélectionner 5 ou 6 Items dans une ListView, la moindre erreur de "clic" m'amène à faire un Reset sur tous les Items déjà sélectionnés. Est-ce plus pratique en fin de compte que d'ouvrir un fichier supplémentaire (Les Items sont des noms de fichiers qui doivent s'ouvrir) ...
    Dans tous les cas, merci pour t'être penché sur mon problème.

    Si tu en as le temps, je précisais dans mon premier message que j'avais placé des CheckBoxes sur mes Items. Il me semblait plus simple, au départ, de cocher les Items plutôt que de faire une multisélection, je ne suis pas parvenu à écrire un "bout de code" efficace ... As-tu une idée ?

    Merci et bonne soirée.

    Danad38

  7. #7
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    SAlut
    Il faudrait effectivement voir le reste du code, mais je ne trouve pas ça choquant. Tu as deux listes qui sont indépendantes, donc le fait de sélectionner un item sur l'une ne supprime pas la sélection sur l'autre, c'est juste qu'étant donné que ton 1er liste perd le focus, tu ne vois plus l'item qui est sélectionné, mais il y en a bien un.
    Salut
    C'est ce que je t'expliquais ici, lorsqu'une liste à le focus,c'est a dire que c'est elle qui reçois les frappes clavier par exemple (elle est active en somme), elle colore ses item qui ont la propriété selected à true. Ma uniquement quand elle a le focus, si elle perd le focus (lorsque tu cliques ailleurs, sur un autre élément) elle ne les colore plus, mais il ne perdent pas pour autant leur statut Selected.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. [XL-2010] Ouvrir après sélection dans une listview
    Par grisan29 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/09/2013, 13h18
  2. Problème de sélection dans une ListView
    Par Sake_reflex dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 29/10/2012, 13h44
  3. Sélection / désélection d'un objet complexe dans une listview
    Par x031183 dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 13/04/2012, 16h17
  4. Sélection multiple dans une listView
    Par Stefounette dans le forum JavaFX
    Réponses: 10
    Dernier message: 03/06/2010, 21h53
  5. Comment récuperer un élément dans une listview lors d'une sélection
    Par hellspawn_ludo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/04/2007, 02h37

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