Filtre appliqués à la sélection d'une liste déroulante

Bonjour !

J'ai un projet qui consiste à montrer les prescriptions à respecter pour une chaufferie en fonction de la puissance. Là je vous montre le cas d'une chaufferie bois.

Par exemple, l'exploitant a une installation bois d'une puissance de 3 MW. Il veut savoir ce qu'il doit respecter. Il y a des prescriptions pour différentes plages de puissance ( 1<P<20, P<4, ...) dans le tableau "application au bois". Dans l'onglet sélection, j'ai répertorié les plages de puissance concernées par chaque puissance allant de 1 à 20 MW. Mon but c'est que l'exploitant, avec son installation de 3 MW, obtienne un tableau comme celui de l'onglet application au bois mais avec seulement les critères concernés par sa puissance. Par exemple, tout ce qui est P < 2 MW, que ça disparaisse.

Dans la feuille "application au bois existant", j'ai créé un menu déroulant avec les puissances, donc j'aimerai qu'en selectionnant 3 MW, le filtre s'applique. Je ne vois vraiment pas comment créer ça... Si vous pouvez m'éclairer ! Merci !

17bois-existant.xlsx (187.26 Ko)

Bonjour,

à tester,

copier le code suivant sur la page code de l'onglet "Application au bois existant"

Private Sub Worksheet_Change(ByVal Target As Range)
If taget.Address = "$B$6" Then Call Filtre(Target.Value)
End Sub

Sub Filtre(cellule As String)
Set crit = CreateObject("Scripting.dictionary")
colP = Application.Match(cellule, [Puissance], 0) + 1
LastRw = Sheets("Séléction").Cells(Rows.Count, colP).End(xlUp).Row

With Sheets("Séléction")
  For t = 2 To LastRw
   crit(CStr(.Cells(t, colP).Value)) = ""
  Next t
End With

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:=crit.keys, Operator:=xlFilterValues
End Sub

Merci beaucoup !

J'ai rentré le code et essayé, mais ça m'affiche une erreur ici : "Set crit = CreateObject("Scripting.dictionary")" et je ne vois pas d'où elle provient...

re,

vérifie si Microsoft Scripting Runtime est coché dans Outils/Référence

Je n'ai pas Microsoft Scripting Runtime dans mes références... je suis sur Mac

capture d ecran 2019 11 07 a 20 59 26

Je n'ai pas ça sur le Mac, j'ai essayé d'activer Scripting Runtime sur un PC et ça me met toujours un message d'erreur pour cette ligne...

re,

il y a "System.Collections.ArrayList" qui fonctionne sur mac à partir de la version 2011

quel version de mac as-tu?

J'ai la version 2016. Il faut que je remplace Scripting.dictionary par System.Collections.ArrayList ?

re,

sur pc je n'arrive pas à lire le caractère

fait le test suivant pour vérifier si la variable t est correct

Sub TestArray()
Dim t As String
Set cellule = Range("B6")
colP = Application.Match(cellule, [Puissance], 0) + 1
LastRw = Sheets("Séléction").Cells(Rows.Count, colP).End(xlUp).Row

With Sheets("Séléction")
  For i = 2 To LastRw
    m = """" & .Cells(i, colP).Value & """"
    t = t & m & ", "
  Next i
End With
t = Left(t, Len(t) - 2)
Debug.Print t
End Sub

sur pc: le résultat de t = "1 = P = 20 MW", "2 < P < 4 MW", "P > 2 MW"

Rechercher des sujets similaires à "filtre appliques selection liste deroulante"