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:
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:
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
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
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
Sélection dans une ListView
Salut Qwazerty,
C'est bon !
Il est bon de réussir à avancer un peu.
Merci pour ta proposition, elle me convient parfaitement.
Grace à la touche Ctrl, je peux sélectionner ou déselectionner sans problème. Seuls les Items surlignés amènent l'ouverture des fichiers correspondants.
Une petite remarque pour terminer. Si je clique sur plusieurs Items de listes différentes (en gardant enfoncée la touche Ctrl) seuls les Items de la derniere ListView utilisée sont surlignés mais les Items cliqués dans les autres listes provoquent l'ouverture des fichiers correspondants (alors que le fait de changer de ListView, annule visuellement la sélection de la ListView précedente) ...
Je n'ai pas d'explication mais ce n'est pas bien important.
Je considère le problème résolu.
Merci encore.
Danad38