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 :

Tester le résultat du filtrage d'un tableau excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 156
    Par défaut Tester le résultat du filtrage d'un tableau excel
    Bonjour à tous,

    J'ai écrit une code (qui fonctionne je précise !), pour alimenter une ComboBox depuis un tableau filtré. Seul problème, c'est quand, après avoir été filtré, le tableau ne contient plus qu'une seule ligne... En effet, à ce moment, le reçois le message d'erreur suivant:

    " Erreur d'exécution 381 : Impossible de définir la propriété List .Index de table de propriétés non valide."

    Sur un autre post, on m'a suggéré de tester le résultat de filtration... donc de compter le nombre de ligne résultant du filtrage ...

    Malheureusement (il y a toujours un malheureusement), je ne sais pas comment compter le nombre de ligne "visible", résultant d'un tri/filtration

    Voici mon code:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Public Sub AlimenterComboBox() 'Permet d'alimenter une ComboBox sur base des critères de tri envoyés à la fonction.
     
     
        Dim Domaine As String, Niveau As String
     
        Domaine = ComboBoxDomaineDeCompetence.Text 'Définition des critères de tri
        Niveau = ComboBoxNiveau.Text
     
     
        With Sheets("Critères").ListObjects("TableauCriteres")
     
        .Range.AutoFilter Field:=2, Criteria1:=Domaine  'Trie TableauCriteres selon les paramètres envoyés en argument
        .Range.AutoFilter Field:=3, Criteria1:=Niveau
     
    End With
     
    '####### Remplissage ComboBox avec les données triées ####
     
    Me.ComboBoxCriteresAlimentes.List = Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible).Formula
     
     
    Sheets("Critères").ListObjects("TableauCriteres").Range.AutoFilter Field:=2 'Annule le filtrage
    Sheets("Critères").ListObjects("TableauCriteres").Range.AutoFilter Field:=3
     
    End Sub
    Les deux critères de tri sont défini par l'utilisateur via deux autres ComboBox. Le tableau duquel est issu le résultat du tri/filtre est "TableauCriteres" Sur la feuille "Critères".

    Je vous remercie d'avance pour votre aide !

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    voir si ça fonctionne avec des tableaux Excel, et éventuellement adapter le nombre de lignes renvoyés s'il n'y a aucun résultat :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    Public Sub AlimenterComboBox() 'Permet d'alimenter une ComboBox sur base des critères de tri envoyés à la fonction.
     
     
        Dim Domaine As String, Niveau As String
     
        Domaine = ComboBoxDomaineDeCompetence.Text 'Définition des critères de tri
        Niveau = ComboBoxNiveau.Text
     
     
        With Sheets("Critères").ListObjects("TableauCriteres")
     
        .Range.AutoFilter Field:=2, Criteria1:=Domaine  'Trie TableauCriteres selon les paramètres envoyés en argument
        .Range.AutoFilter Field:=3, Criteria1:=Niveau
     
    End With
     
    ' adapter le nombre, faut voir si le(s) titre(s) sont retournés même quand il n'y a aucune ligne de valeur
    If Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible).Rows.Count = 0  Then
        Msgbox("Aucun résultat")
        Exit Sub
    End if
    '####### Remplissage ComboBox avec les données triées ####
     
    Me.ComboBoxCriteresAlimentes.List = Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible).Formula
     
     
    Sheets("Critères").ListObjects("TableauCriteres").Range.AutoFilter Field:=2 'Annule le filtrage
    Sheets("Critères").ListObjects("TableauCriteres").Range.AutoFilter Field:=3
     
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 156
    Par défaut Alimenter une ComboBox avec un tableau filtré
    Re,


    Merci pour ta réponse (encore une fois). Ça a marché tip-top ! Enfin presque, mais ça m'a quand même aidé à solutionner mon problème grâce à ça. Pour si d'autres gens ont le problèmes un jour. Voici le code complet qui fonctionne pour si d'autres gens en ont besoin un jour:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Public Sub AlimenterComboBox() 'Permet d'alimenter une ComboBox sur base des critères de tri envoyés à la fonction.
     
     
        Dim Domaine As String, Niveau As String
     
        Domaine = ComboBoxDomaineDeCompetence.Text 'Définition des critères de tri
        Niveau = ComboBoxNiveau.Text
     
     
        With Sheets("Critères").ListObjects("TableauCriteres")
     
        .Range.AutoFilter Field:=2, Criteria1:=Domaine  'Trie TableauCriteres selon les paramètres envoyés en argument
        .Range.AutoFilter Field:=3, Criteria1:=Niveau
     
    End With
     
    ' adapter le nombre, faut voir si le(s) titre(s) sont retournés même quand il n'y a aucune ligne de valeur
    If Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible).Rows.Count = 0 Then
        MsgBox ("Aucun résultat")
        Exit Sub
    End If
     
    If Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible).Rows.Count = 1 Then
     
    Me.ComboBoxCriteresAlimentes.AddItem Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible).Formula
     
        Exit Sub
    End If
    '####### Remplissage ComboBox avec les données triées ####
     
    Me.ComboBoxCriteresAlimentes.List = Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible).Formula
     
    Sheets("Critères").ListObjects("TableauCriteres").Range.AutoFilter Field:=2 'Annule le filtrage
    Sheets("Critères").ListObjects("TableauCriteres").Range.AutoFilter Field:=3
     
    End Sub
    Bonne journée à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Filtrage sur un tableau EXCEL par macro
    Par cati_78 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/05/2009, 17h25
  2. Tester si une valeur existe dans un tableau EXCEL
    Par Jeanvaljean44 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/01/2008, 12h07
  3. Réponses: 3
    Dernier message: 20/10/2006, 09h36
  4. Filtrage d'un Tableau et Variables
    Par TD_RTM dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 22/08/2006, 13h54
  5. Réponses: 7
    Dernier message: 26/07/2006, 13h28

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