Mon filtre avancé ne fontionne pas avec les chiffres

Bonjour

Je suis débutant .

Voilà mon problème je veux faire dans la feullle tableau de bord un filtre avancé sur deux critères pour le critère pays aucun problème

par contre il refuse le critère nombre qui est année.

Les deux conditions sont identiques

exemple pour la première qui est le pays je mets

a1="";"*";a1 OK pour pays il m'affiche tout

par contre pour l' année

a2="";"*";a2 cela ne fonctionne pas

j ai essayé en manuel

je vous joints le fichier sur le lien suivant

Bonsoir,

je ne vois pas de tableau avec des filtres, je ne vois pas plus d'une donnée sur le tableau... Je ne vois pas de solution dans ces conditions.

vbMBHB

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...

Bon ben je n'ai plus qu'à prendre rendez vous chez un ophtalmologiste... Là où je ne vois rien un "fanatique d'Excel" voit tout et en plus corrige, modifie, ajoute, crée, nettoie et ça marche ! Enfin attendons le fichier pour voir ça...

vbMBHB

Tout le poids provient de ton image de pièce !

J'ai opéré une réduction de ce poids, si tu flanques des images de plus d'1,2 Mo dans ton fichier, ça va vite s'alourdir...

Salut vbMBHP !

Tu as dû avoir un incident de téléchargement... J'ai failli en avoir un : pendant un temps, je ne voyais qu'une feuille, puis ça a eu l'air de se débloquer et l'ensemble du fichier est apparu.

Moi, je n'ai pas été surpris car on en débit à accordéon depuis le 5 au soir (le câble qui nous relie à la métropole a une coupure qui est en cours de réparation) et fréquemment depuis je suis obligé d'annuler une opération qui n'arrive pas à terme et la recommencer, et les micro coupure réseau sont plus nombreuses que d'habitude, je copie systématiquement les messages avant envoi...

Cordialement.

Fanatique disais-je ? C'est plus fort que ça ! Je ne comprend pas comment une ligne de la procédure Filtrer fait une recopie d'un filtre fait sur une plage de donnée en feuille 1... Une explication MFerrand ?

vbMBHB

C'est la fonctionnalité Filtre avancé d'Excel, avec copie du résultat du filtrage sur un autre emplacement.

J'esplique toujours que c'est l'une des rares commandes d'Excel plus rapide à mettre en oeuvre en VBA que manuellement dans Excel : les préparatifs faits (les mêmes dans les deux cas), écrire la ligne de code est plus rapide que remplir les rubriques de l'assistant !

PlageàFiltrer.AdvancedFilter xlFilterCopy, ZoneCritères, ZoneCible

Et son utilisation est très utile aussi pour établir et mettre à jour des listes à partir d'une colonne de base de données. Dans ce cas on n'a pas besoin de zone de critères mais il convient de définir le 4e argument de la méthode sur True pour obtenir des éléments unique.

ColonneSource.AdvancedFilter xlFilterCopy, , CelluleCible, True

Cordialement.

Si je comprend bien, c'est plus rapide et plus simple que la mise en place d'un filtre sur un tableau, copie des lignes "visibles" et collage sur une autre feuille afin de gérer le résultat d'un filtre... En plus si je comprend bien le résultat est dans un tableau VBA, donc sans faire le collage on peut travailler en VBA sur les résultats du filtre ?

vbMBHB

Tout à fait pour la première partie... Pour la seconde, Excel procède par collage avec cette méthode, on ne l'évite donc pas, mais il est facile de récupérer le résultat dans un tableau, comme pour n'importe quelle plage.

Cordialement.

Ceci va peut-être pouvoir m'aider dans mes futurs développement d'applications...

vbMBHB

Au fait orguyrine,

vbMBHB

Rechercher des sujets similaires à "mon filtre avance fontionne pas chiffres"