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 19/10/2011, 10h08   #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 Trier des lignes d'un tableau à partir d'une sélection listbox

Bonjour je vous expose mon problème. J'ai un tableau avec des valeurs sur lequel je veux appliquer un tri. Par exemple dans la collone B j'ai les les noms des différents continents (europe, asie,..) et je viens récupérer ces noms pour venir remplir ma listbox. Ceci fonctionne. Ce que je veux faire maintenant c'est en fonction de ce que je selectionne dans ma listbox (je peux selectionner plusieurs valeurs) je viens cacher les lignes qui ne posséde pas la valeur selectionné dans la listbox. Savez vous comment faire?

merci
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 10h23   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Fais un filtre automatique (Autofilter). Si tu as besoin de plus d'aide, précise où tu as placé ta listbox (sur une feuille ou sur un userform).
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 10h41   #3
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Bonjour Daniel

Citation:
fonction de ce que je selectionne dans ma listbox (je peux selectionner plusieurs valeurs)
un filtre automatique (sur 2003) ne peut prendre que 2 valeurs dans la personnalisation

Il me semble que ce serait bien d’abord le fichier pour mieux comprendre
Afin de faire quelque chose qui fonctionnerait sur toutes les versions.

Cordialement
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 10h52   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Citation:
un filtre automatique (sur 2003) ne peut prendre que 2 valeurs dans la personnalisation
Avec Excel 2010, tu peux sélectionner autant de valeurs entières que tu le désires, même si le filtre perso façon XL 2003 existe toujours.

Citation:
Afin de faire quelque chose qui fonctionnerait sur toutes les versions.
C'est se priver de toutes les nouvelles fonctionnalités.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 12h44   #5
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
Ce n'est pas vraiment ce a quoi j'avais pensé. en fait au départ j'avais une combobox qui était dans un userform je venais choisir la valeur qui m'interessait et excel affichait toute les lignes ayant la valeur entré dans la combobox du genre
Code :
If combobox.value= cells(a,i)
. Il cachait les autres avec la propriété . La je veux faire la même chose mais avec une listbox c'est a dire que plusieurs valeurs sont sélectionnés et il cache toute les lignes qui n'ont pas cette valeur. est ce que c'est plus clair dans la démarche?

Merci de vos réponse
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 13h31   #6
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Bonjour

Citation:
C'est se priver de toutes les nouvelles fonctionnalités.
Ce n'est pas idiot bien sur, mais je reste convaincu que si on règle ce type de problème par Vba on doit essayer a que ce soit au moins pour 2003 aussi, beaucoup on cette version et vont continuer à l'avoir pendant encore quelque temps.

Si on est dans l’Excel classique (dans la feuille, je veux dire) bien sur qu’il ne faut pas se priver des nouvelles fonctionnalités

Une Piste

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
 
Private Sub commandButton1_Click()
Dim Table() As String
    Dim CompA As Long
    Dim CompB As Byte
    Dim Mouchard As Boolean
 
    Dim Ind As Byte
    For CompA = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(CompA) = True Then
            Ind = Ind + 1
            ReDim Preserve Table(Ind)
            Table(Ind) = ListBox1.List(CompA)
        End If
    Next CompA
 
    For CompA = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
        Mouchard = False
        For CompB = 1 To UBound(Table)
            If Cells(CompA, 1).Value = Table(CompB) Then Mouchard = True
        Next CompB
        If Mouchard = False Then Rows(CompA).Hidden = True
    Next CompA
End sub
Tu dis

Bon courage
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 13h47   #7
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
Merci pour ta réponse mais quand j'essaie çà ne fonctionne pas une erreur m'est renvoyé mais dans tous les cas ce qui ne va pas c'est que je comprend pas la moitié des lignes... Peux tu me mettre quelques commentaires pour savoir comment marche ton code. Que je puisse voir quel problème j'ai.

Merci
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 14h08   #8
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
J'ai testé ça fonctionne chez moi

Code avec explication

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
Option Explicit
Option Base 1
Private Sub UserForm_Initialize()
    ListBox1.MultiSelect = fmMultiSelectMulti ' on affecte la multi selection a ListBox
    ListBox1.List() = Range("A1:A10").Value ' On alimente une ListBox
End Sub
Private Sub commandButton1_Click()
    Dim Table() As String
    Dim CompA As Long
    Dim CompB As Byte
    Dim Mouchard As Boolean
 
    Dim Ind As Byte
 
    For CompA = 0 To ListBox1.ListCount - 1 ' on boucle sur données de la ListBox
        If ListBox1.Selected(CompA) = True Then ' si la donnée est selectionnée
            Ind = Ind + 1 ' on incrémente Ind
            ReDim Preserve Table(Ind) ' on Redimensionne Table
            Table(Ind) = ListBox1.List(CompA) ' on Affecte a Table la valeur du listbox selectionnée
        End If
    Next CompA
 
    For CompA = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1 ' on demarre à la dernière ligne
        Mouchard = False ' on affecte à Mouchard False
        For CompB = 1 To UBound(Table) ' On boucle sur les valeurs de Table
            If Cells(CompA, 1).Value = Table(CompB) Then Mouchard = True ' si la cellule en colonne A = la valeur testée on attribue True à mouchard
        Next CompB
        If Mouchard = False Then Rows(CompA).Hidden = True 'Si mouchard est resté a false (pas de valeurs testées trouvées, on cache la ligne)
    Next CompA
End Sub
Tu dis

Bon courage
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/10/2011, 14h10   #9
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
@ Jean-Pierre49
J'ai repris une partie de ton code, et pour éviter une boucle, je me suis servi d'un filtre avancé (ou élaboré) :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub CommandButton1_Click()
    Dim CompA As Long, Ind As Byte
    With Sheets("Feuil2")
        .[I1] = .[A1]
        .[I2:I6].ClearContents
        For CompA = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(CompA) = True Then
                Ind = Ind + 1
                .[I1].Offset(Ind) = ListBox1.List(CompA)
            End If
        Next CompA
        .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp)).AdvancedFilter _
            Action:=xlFilterInPlace, CriteriaRange:=.Range(.[I1], _
            .Cells(.Rows.Count, 9).End(xlUp)), Unique:=False
    End With
End Sub
Note les données sont en colonne A sur Feuil2 et je me sers des 6 premières cellules de la colonne I.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 14h14   #10
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Daniel

C'est vrai que le filtre élaboré est une solution, mais on ne reste pas dans le tableau d'origine
Tout dépend de l'objectif final
Mais tu as raison c'est une solution


Cordialement
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 14h22   #11
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Citation:
C'est vrai que le filtre élaboré est une solution, mais on ne reste pas dans le tableau d'origine
Si, bien sûr, à moins que tu choisisses de copier le résultat ailleurs.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 14h25   #12
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
On ne ce comprend pas

Citation:
Note les données sont en colonne A sur Feuil2 et je me sers des 6 premières cellules de la colonne I.
Quand je parle du tableau je pensais là ou sont les valeurs d'origine

Cordialement
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 15h09   #13
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Pour mes tests, le tableau est composé d'une seule colonne (A) avec un entête en A1. A l'utilisateur de modifier selon l'agencement de ses données. Tu as compris autrement ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 15h20   #14
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Oui
Mais, tu dis
Citation:
je me sers des 6 premières cellules de la colonne I
Cordialement
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 16h00   #15
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Désolé d'écrire à la va-vite. La zone I1:I6 est la zone de critères du filtre et comme il n'y a que 5 continents...
Dans un autre contexte, il suffirait d'effacer la totalité de la colonne I pour avoir plus de critères.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C 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 15h59.


 
 
 
 
Partenaires

Hébergement Web