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 :

filtrer à partir d'une combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut filtrer à partir d'une combobox
    Bonjour à tous,

    Voila, j'aimerai filtrer une feuille excel à partir d'une combobox à chaque fois que ca valeur change (donc quand on utilise la liste déroulante...)

    J'ai commencé à tapoter cela mais ca ne fonctionne pas car il me dis que la "méthode autofilter de la classe range a échoué"...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim a as string
     
    Private Sub ComboBox9_Change()
    'personne en charge
    a = ComboBox9.Value
    Sheets("Fin période").Select
        Feuil4.Cells.Select
        Selection.EntireRow.Hidden = False
        Selection.AutoFilter
        Selection.AutoFilter Field:=12, Criteria1:="a"
        Feuil4.Activate
    End Sub
    J'ai rajouté "Selection.EntireRow.Hidden = False" car il se peut que parfois dans ma feuille j'ai des lignes cachées et donc je veux les réafficher.
    Cependant, second souci, si je met cette ligne, il me met aussi qu'il y a un problème avec le "Hidden"...
    Je ne vois pas où est le souci.

    Merci par avance pour votre aide
    John

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour savoir si un filtre est posé, utilise plutôt FilterMode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Feuil4.FilterMode Then Feuil4.Cells.AutoFilter
    Bonne journée

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut
    Je suis désolé, je suis pas vraiment bon en vba, je n'ai pas compris ta réponse...
    Je dois rajouter ce code au début?
    Mettre un End if?
    ...
    Peux_tu être plus précis please
    Merci tout de même de ton aide

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox9_Change()
    Dim a as string
    a = ComboBox9.Value
    If Sheets("Feuil4").FilterMode Then Sheets("Feuil4").Cells.AutoFilter
    Sheets("Feuil4").Cells.AutoFilter Field:=12, Criteria1:=a 'sans les guillemets, c'est une variable
    Pour comprendre le rôle de FilterMode, fais un tour dans l'aide en ligne sur ce mot
    Ce code remplace le tien. Pas de endif si la commande à exécuter suit le Then (sur la même ligne)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub ComboBox9_Change()
    'personne en charge
    a = ComboBox9.Value
    If Sheets("Fin période").FilterMode Then Sheets("Fin période").Cells.AutoFilter
    Sheets("Fin période").Cells.AutoFilter Field:=12, Criteria1:=a
    End Sub
    Ca ne fonctionne pas... il me dit toujours que la "méthode autofilter de la classe range a échoué"...
    et me souligne "Sheets("Fin période").Cells.AutoFilter"
    J'ai bien tenté de comprendre le fonctionnement d'autofilter qui permet de voir si les filtres sont mis et dans ce cas, il faut les retirer (je crois) d'où peut -etre le fait de mettre un IF, mais avec "=False"...:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Sheets("Fin période").FilterMode=false Then Sheets("Fin période").Cells.AutoFilter


    HELP...
    MODE boulet [ON]

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Comme ça fonctionne chez moi, je n'ai pas grand chose à ajouter... Par contre, je placerais le code dans l'événement click au lieu de Change
    Private Sub ComboBox9_Click()
    Enfin, si ton combo n'a qu'une seule colonne, tu peux mettre a = ComboBox9
    Après ça, je ne vois pas

Discussions similaires

  1. [XL-2003] Affichage d'une feuille à partir d'une combobox
    Par JulienLeno dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/08/2011, 12h30
  2. [XL-2003] Affichage de donnes a partir d'une combobox dans un UserForm
    Par natab dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/07/2011, 14h37
  3. Réponses: 11
    Dernier message: 31/08/2010, 10h49
  4. Réponses: 4
    Dernier message: 02/02/2010, 16h15
  5. [C#] Récupération de données à partir d'une combobox
    Par Choumy dans le forum Windows Forms
    Réponses: 10
    Dernier message: 09/02/2008, 18h51

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