Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

filtrer un tableau par le biais d'une liste box VBA

fmaurice54

XLDnaute Nouveau
Bonjour,

Je souhaite pouvoir filtrer un tableau (qui en réalité est une table liée depuis ACCESS), via une ou plusieurs liste box.

Voici ce que j'ai essayé mais ca ne marche pas :

Sub filtrer()

Dim Critere_1 As String
Critere_1 = Sheets("synthèse").Range("W2").Value
ActiveSheet.ListObjects("Tableau_vulnérabilités.accdb").Range.AutoFilter Field _
:=1, Criteria1:=Critere_1

End Sub
 

Pièces jointes

  • filtrer vba.xlsm
    1.3 MB · Affichages: 78

fmaurice54

XLDnaute Nouveau
Bon ca y est, j'ai progressé, j'ai trouvé l'erreur, ca marche mieux comme cela

Sub filtrer()

Dim Critere_1 As String

Critere_1 = Sheets("synthèse").Range("W2").Value
Sheets("communes").ListObjects("Tableau_vulnérabilités.accdb").Range.AutoFilter Field:=1, Criteria1:=Critere_1

End Sub

Il me reste à associer cette macro à la modification de la liste box.
 

fmaurice54

XLDnaute Nouveau
J'ai testé avec ca :

Private Sub Worksheet_selectionChange(ByVal Target As Range)

If Target.Address = Range("W2") Then
Call filtrer
End If
End Sub

Mais sans succès.
(désolé, je ne sais pas mettre la balises de code. Je ne les trouvent pas)

Francois
 

cathodique

XLDnaute Barbatruc
Salut, pas compris ta démarche. Tu as un tableau plein de lignes vides ensuite tu crées 3 colonnes pour faire tes listes de validation.
Avec des colonnes vides et de lignes vides ce n'est plus vraiment une table.
Supprimes toutes les lignes vides de ton tableau (feuille communes) et les colonnes à droites de ce tableau.
Quelqu'un pourrait te trouver une solution.
 

fmaurice54

XLDnaute Nouveau
Bonjour Cath,
La table dans commune est tronquée. C'est normal je ne peux pas partager ces infos sur le net.

Mettons que je souhaite simplement filtrer cette table en fonction du filtre dans la liste en synthèse.W2

La première macro permet de filtrer (ok ca marche)
Mais ca ne marche pas automatiquement lorsque je change la valeur en W2. C'est qu'est l'os.

Merci

Francois
 

cathodique

XLDnaute Barbatruc
Re,
La table dans commune est tronquée. C'est normal je ne peux pas partager ces infos sur le net.
Aucun souci, tu aurais dû mettre des données bidons. Parce que dans une table (c'est une bd), la première et la première colonne doivent être non vide.
La première macro permet de filtrer (ok ca marche)
Mais ca ne marche pas automatiquement lorsque je change la valeur en W2. C'est qu'est l'os.
On ne peut deviner "c'est quoi l'os sans le fichier sur lequel tu as fait tes tests.

Normalement, le code est dans ce module "Private Sub Worksheet_Change(ByVal Target As Range)", quand il y a un changement sur la feuille la procédure se déclenche.

Si tu as mis le code dans un module standard et que tu lances toi-même la procédure, normal qu'en changeant de valeur la procédure ne lance pas, elle n'est pas au bon endroit.

Mets-nous ton fichier test.
 

cathodique

XLDnaute Barbatruc
Bonjour,
Avec du retard mais je te réponds. En fait, je cherche à solutionner ton problème.
J'ai trouvé ICI sur le site de Boisgontier un exemple qui illustre ton cas (avec 2 critères).
Je suis parvenu à modifier son code pour avoir 3 listes de validation (3 critères).
Mais sur ton fichier, je n'ai pas encore réussi à adapter.
Sur le fichier exemple, Boisgontier utilise les filtres élaborés et des plages nommées, j'avoue que c'est la première fois que je me frotte aux filtres élaborés.

Tu peux télécharger le fichier de Boisgontier et comparer avec le fichier joint.
Je ne jette pas l'éponge, mais si quelqu'un peu aider, ça serait sympa car j'ai laissé des discussions en suspend.
 

Pièces jointes

  • JB_FiltreElabore.xls
    54.5 KB · Affichages: 69

fmaurice54

XLDnaute Nouveau
Cath,

Ca marche !
J'ai retenu la solution filtrer tableau(vba) 1

En revanche, je n'ai pas retenue la SUB suivante ! : Private Sub Worksheet_SelectionChange(ByVal R As Range). Je n'ai pas très bien compris son fonctionnement.

J'ai rajouter quelques instructions pour permettre de copier / coller la liste obtenue (par les filtres réalisés) dans un onglet qui me sert de référence avec ma BDD ACCESS.
Je joint le résultat en PJ.

Ce n'est certainement pas très propre mais ça marche.

François
 

Pièces jointes

  • Bilan Commune xld.xlsm
    1.6 MB · Affichages: 92

Si...

XLDnaute Barbatruc
Bonjour,

Pour te remercier à mon tour : la macro qui te pose problème permet de se retrouver avec une liste (de validation*) sans vide ni doublon, ce que tu as avec ta troisième colonne (C comme dans ta première demande).

* ce serait pareil avec uncontrôle ListBox qui est un autre type de liste

Au revoir
 

Discussions similaires

Réponses
2
Affichages
348
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…