Bonsoir,
Pour ma part, j'ai cherché la macro de filtrage, je ne l'ai pas trouvé , j'ai trouvé par contre un système un peu trop contourné à mon goût, et pas mal de ménage à faire...
Comme la macro filtrage manquait, j'en ai écrit une :
Sub Filtrer()
Worksheets("Feuil1").ListObjects(1).Range.AdvancedFilter xlFilterCopy, [Crit], [TblF]
End Sub
Elle est assortie de quelques modifications !
- la zone de critères est placée en D5:E6, là où sont les listes déroulantes, et est nommée : Crit ; et les autres zones qui baladaient plus loin sur la feuille disparaissent, une zone suffit bien !
- la cible du filtrage (A9:E9) est également nommée : TblF, et tu peux voir ces noms apparaître dans la macro,
- et le filtrage est commandé par un bouton que j'ai ajouté...
Ces premières modifications m'ont conduit aux listes alimentant les listes déroulantes. Là la procédure de mise à jour m'a un peu fait mal aux yeux ! Autant de Select en si peu de lignes... Il m'a semblé plus judicieux de revenir à la méthode classique de constituer ces listes par filtrage, j'ai donc transformé les tableaux Excel en plages normales et réécrit la procédure :
Sub MAJliste()
Dim c1 As Range, c2 As Range
With Worksheets("liste")
Set c1 = .Range("A1")
Set c2 = .Range("C1")
End With
With Worksheets("Feuil1").ListObjects(1).Range
.Offset(, 1).Resize(, 1).AdvancedFilter xlFilterCopy, , c1, True
.Offset(, 3).Resize(, 1).AdvancedFilter xlFilterCopy, , c2, True
End With
[Pays].Sort key1:=c1, order1:=xlAscending, Header:=xlGuess
[Annees].Sort key1:=c2, order1:=xlDescending, Header:=xlGuess
End Sub
C'est un peu plus compact, on ne se perd pas dans d'inutiles sélections sans fin, et comme tu peux le voir on trie ces listes à la fin. Il sera plus commode d'avoir les pays en ordre alpha et les années en ordre décroissant (ceci étant tu peux modifier si tu préfères un autre ordre).
Les noms de plages correspondants sont dynamiques. Je n'ai pas compensé l'en-tête dans la définition de la plage, ce qui introduit une valeur vide dans les listes : ce qui te laisse le choix lors de la définition des critères de filtrage au moyen des listes de choisir le vide dans la liste ou effacer avec la touche d'effacement pour un critère que tu n'utilises pas.
Dans la foulée j'ai nettoyé le Gestionnaire de noms. Et j'ai aussi rassemblé les macros dans un seul module (tu me remercieras quand tu auras compris à l'usage que l'on n'a strictement aucun intérêt à multiplier les modules Standard... )
Sur ce, j'avais tout de même assez travaillé et je n'ai pas regardé le reste (ni vérifié que toutes tes macros correspondaient à quelque chose).
Cordialement.
ton fichier est trop gros pour passer ! Je regarde pourquoi et je reviens avec...