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 :

Trie selon valeur de listBox


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
    Mai 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Par défaut Trie selon valeur de listBox
    Bonsoir à tous,
    J'aimerais trier selon des valeurs selectionnées dans un Listbox multiselect,
    le code n'affiche pas d'erreur mais ne réagit pas non plus.
    help?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Len(Me.ListBox2) > 0 Then
        With Sheets("Table").Columns("B:B")
        .AutoFilter
        .AutoFilter field:=1, Criteria1:="=" & CDbl(Me.ListBox2.List)
        End With
    d'ailleurs je me demande si ce n'est pas mieux une fois d'effacer dans la feuille ce qui est différent de ce qui est selectionnés mais je ne connais pas la synthaxe.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une proposition, en boucle sur les items sélectionnés, on filtre et on ajoute un F dans le dernière colonne qu'on prendra pour filtrer
    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
    Dim i As Long, LastLig As Long
     
    Application.ScreenUpdating = False
    With Sheets("Table")
       LastLig = .Cells(Rows.Count, "B").End(xlUp).Row
       .Columns(Columns.Count).Delete
       For i = 0 To ListBox2.ListCount - 1
          If ListBox2.Selected(i) Then
             .Range("B1:B" & LastLig).AutoFilter field:=1, Criteria1:="=" & CDbl(Me.ListBox2.List(i))
             .Range(.Cells(2, Columns.Count), .Cells(LastLig, Columns.Count)).SpecialCells(xlCellTypeVisible).Value = "F"
          End If
       Next i
       .Range("B1").AutoFilter
       .Range(.Cells(1, Columns.Count), .Cells(LastLig, Columns.Count)).AutoFilter field:=1, Criteria1:="F"
    End With

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Par défaut
    Il me met L'autofilter dans la classe range a échoué dans la dernière ligne ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     .Range(.Cells(1, Columns.Count), .Cells(LastLig, Columns.Count)).AutoFilter field:=1, Criteria1:="F"
    End With
    mais je n'ai pas bien compris le F?

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    le code fait une boucle sur les item sélectionnés
    à chaque application du filtre, il inscrit la lettre F dans la dernière colonne d'excel dans les ligne visibles. (tu peux faire n'importe quoi à la place du F)
    à la fin, il filtre sur la lettre F, la dernière colonne

    l'erreur chez toi n'apparait pas chez moi
    encore une fois, j'ai testé avant de répondre
    sinon on peut modifier la dernière ligne
    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
    Dim i As Long, LastLig As Long
     
    Application.ScreenUpdating = False
    With Sheets("Table")
       LastLig = .Cells(Rows.Count, "B").End(xlUp).Row
       .Columns(Columns.Count).Delete
       For i = 0 To ListBox1.ListCount - 1
          If ListBox1.Selected(i) Then
             .Range("B1:B" & LastLig).AutoFilter field:=1, Criteria1:="=" & CDbl(Me.ListBox1.List(i))
             .Range(.Cells(2, Columns.Count), .Cells(LastLig, Columns.Count)).SpecialCells(xlCellTypeVisible).Value = "F"
          End If
       Next i
       .Range("B1").AutoFilter
       .Columns(Columns.Count).AutoFilter field:=1, Criteria1:="F"
    End With

  5. #5
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Par défaut
    Je me demande vraiment s'il y a un probléme entre les versions d'Excel car je suis au travail et tout ce qui marchait à la maison hier ne fonctionne pas au bureau. La seule différence, c'est que je suis sur Mac , mais j'ai installé windows XP pour pouvoir travailler avec Office 2007.
    Quand il n'affiche pas d'erreur chez toi, j'ai l'air d'un plouc?!
    j'AI changé la dernière ligne comme tu l'as proposé, et ici au bureau, il me met l'erreur: La commande n'a pas pu être exécuter avec la plage spécifiée, selectionnez une seule cellule et réessayez., et il met toujours en surbrillance la dernière ligne de code. J'ai ajouté ici le classeur si jamais....Le UserForm qui contient le code est "EMPLOYE", un userForm qui contient un combo1 dans lequel je choisi l'usine, dans la ListBox1 affiche les noms avec Checkbox, dans la listBox2 affiche les noms cochés auparavant, Le commandButton1 valide les choix et c'est le CommandButton2 qui contient le code avec ERREUR. il doit me trier le classeur avec les noms que j'ai choisi auparavant.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2007] Tri listBox selon valeur combobox
    Par sdispro dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/07/2014, 22h07
  2. [XL-2003] listbox: Plage de donnee SOURCE variable selon valeur contenue dans cellule
    Par jeo13 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/09/2010, 22h26
  3. [struts-layout] couleur selon valeur ds collectionItem
    Par anassinou dans le forum Struts 1
    Réponses: 3
    Dernier message: 07/07/2006, 09h10
  4. Ajout n lignes selon valeur...
    Par nicburger dans le forum Access
    Réponses: 1
    Dernier message: 26/10/2005, 19h49
  5. affichage selon valeur entiere ou decimale
    Par Ankya dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 04/05/2005, 10h36

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