Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/10/2011, 10h17   #1
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
Par défaut multisélection list box

Bonjour a vous, j'ai dans un userform une listbox que je veux renseigner afin de pouvoir faire de la multisélection. Le but étant de venir cacher toutes les lignes d'un tableau qui ne possède pas la valeur que je choisis dans la listbox. J'ai donc le code suivant mais hélas il ne fonctionne pas et je ne parviens pas a voir l'erreur. Auriez vous une idée?

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
42
43
44
45
46
47
48
49
50
51
Dim i As Long
Dim lItem As Long
With Sheet5
 
Columns("B:I").Hidden = Not CheckBox1.Value
Columns("L:O").Hidden = Not CheckBox2.Value
Columns("J:K").Hidden = Not CheckBox3.Value
Columns("P").Hidden = Not CheckBox3.Value
Columns("S").Hidden = Not CheckBox3.Value
Columns("Q:R").Hidden = Not CheckBox5.Value
Columns("Z:AA").Hidden = Not CheckBox4.Value
Columns("T:U").Hidden = Not CheckBox4.Value
Columns("V:Y").Hidden = Not CheckBox6.Value
 
 
For i = 2 To 500
 
    For lItem = 0 To UserForm2.LB_market.ListCount - 1
 
        If UserForm2.LB_market.Selected(lItem) = True And .Range("B" & i).Value <> UserForm2.LB_market.List(lItem) Then
            Rows(i).Hidden = True
 
            UserForm2.LB_market.Selected(lItem) = False
 
        End If
 
    Next
 
    If (Sheet5.Cells(i, "v") <> ComboBox2.Value And ComboBox2.Value <> "") Or (Sheet5.Cells(i, "n") <> ComboBox3.Value And ComboBox3.Value <> "") Or (Sheet5.Cells(i, "l") <> ComboBox4.Value And ComboBox4.Value <> "") Then
    Sheet5.Rows(i).Hidden = True
 
    End If
 
Next
 
'CheckBox1 = Unchecked
'CheckBox2 = Unchecked
'CheckBox3 = Unchecked
'CheckBox4 = Unchecked
'CheckBox5 = Unchecked
'CheckBox5 = Unchecked
'CheckBox6 = Unchecked
 
 
'ComboBox2.Value = Empty
'ComboBox3.Value = Empty
'ComboBox4.Value = Empty
 
UserForm2.Hide
 
End With

Le problème se situe à cette endroit là
Code :
1
2
3
4
5
6
7
8
9
10
11
12
For i = 2 To 500
 
    For lItem = 0 To UserForm2.LB_market.ListCount - 1
 
        If UserForm2.LB_market.Selected(lItem) = True And .Range("B" & i).Value <> UserForm2.LB_market.List(lItem) Then
            Rows(i).Hidden = True
 
            UserForm2.LB_market.Selected(lItem) = False
 
        End If
 
    Next
je précise qu'actuellement Excel ne me renvoie pas d'erreur mais il ne cache pour autant pas les lignes que je souhaite.

merci de votre aide
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 11h19   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Bonjour,


Code :
If UserForm2.LB_market.Selected(lItem) = True And .Range("B" & i).Value <> UserForm2.LB_market.List(lItem) Then
Quand je regarde cette ligne je comprend qu'il faut masquer les lignes qui ont la valeur de B différente de la valeur de la liste.
Cela ne me semble pas cohérent.

Essais comme cela
Code :
If UserForm2.LB_market.Selected(lItem) = True And .Range("B" & i).Value = UserForm2.LB_market.List(lItem) Then
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 12h50   #3
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
Oui et c'est normal car si la valeur est différente de ce qu'on a choisis dans la lisbox on cache la ligne car elle ne possède pas cette valeur. Mais le problème ne vient pas de là. Je pense que c'est vraiment un soucis d'écriture car quand je sélectionne uniquement une valeur dans ma listbox çà fonctionne mais quand j'en selectionne plusieurs çà ne marche plus. J'ai sélectionner la propriété multi selected extended pour ma combobox.
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 14h20   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Ok, au niveau de la méthode je partirais sur le masquage de toutes les lignes et faire apparaitre uniquement celles ou B correspond aux selections de la listbox.
un peu comme sur ce post
http://www.developpez.net/forums/d11...numeros-ligne/
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h05.


 
 
 
 
Partenaires

Hébergement Web