Filtrer la colonne "H" sur année

Bonjour à tous,

J’ai trouvé ce code sur le site de Mr Boisgontier Jacques que je souhaite adapter à ma base de données "Parents".

Le formulaire en pièce jointe permet de filtrer sur les colonnes suivantes : "A" - "B" - "C" - "D" - "F" - "G" - "H" et "K".

Je précise que la colonne "H" contient des dates de naissances et on doit prendre en compte que l’année.

Tous les filtres sur les colonnes citées fonctionnent correctement sauf celui de la colonne "H", de plus, je souhaite que ce dernier puisse me permettre de filtrer cette colonne "H" sur l’année toute seule (exemple : 2023), sans s’occuper ni du jour ni du mois.

Je reste à votre disposition pour d’autres informations supplémentaires.

D’avance merci pour vos contributions.

Rebonjour,

J’ai oublié de préciser, que lorsque je clique sur la combobox dont l’entête est : né(e), la combobox ne doit afficher que les années sans doublons bien sur, ainsi, lorsque je choisit une année quelconque, le filtre affichera tous les sujets qui sont né(e) l’année sélectionnée.

Bonjour,

Je vois que votre fichier est avec l'extension "Xls", donc voici avec la même extension:

sinon en "Xlsm":

Cdlt

Bonjour Arturo83,

Merci pour votre réponse.

Toutefois, lorsque je choisis le caractère (*) pour les autres combobox, le résultat (du filtre) du combobox choisit est annulé, ce n’est pas le cas du combobox de la colonne H.

Afin de vous permettre de vous inspirer et trouver une solution qui pourrait résoudre ce problème, je me permets de vous mettre un code de la même de personne (Mr Boisgontier Jacques) qui traite le filtre en année, sans doublons dans le combobox (voir pièce jointe).

Merci àvous et à vous lire.

Cordiale poignée de mains.

Bonsoir,

Ceci va-t-il mieux?

Cdlt

Bonjour Arturo83,

Merci de votre réponse.

Non malheureusement cela ne fonctionne pas comme ça doit fonctionner, à savoir :

Si par exemple je fais un premier filtre avec une autre combobox sur une autre colonne (Par exemple en colonne "B"), le filtre est appliqué et affiche les résultats demandés, on l’appellera alors "filtre B" pour nous repérer plus loin.

Après ça, je demande un second filtre sur notre combobox pour la colonne "H", le filtre est appliqué commen demandé sur la colonne "H" et me donne le résultat correct.

Le problème survient lorsque je veux enlever ce dernier que je viens de faire en sélectionnant le caractère (*), théoriquement, je dois récupérer mon tout premier filtre "filtre B", or, je n’ai plus rien et je perds tous mes précédents filtres.

En résumé, quand tout fonctionne bien, un filtre enlevé, on revient au filtre précèdent.

Avez-vous regardé le petit fichier avec les filtres sur les années ?

A vous lire.

Cordialement.

Avez-vous regardé le petit fichier avec les filtres sur les années ? Non, je ne peux pas regarder tout les codes que vous me proposez sinon je vais y passer la nuit.

Voilà le fichier modifié.

Rebonsoir Arturo83,

Je viens de faire un test mais malheureusement le résultat n’est pas correct, voyer-vous-même.

J’ai ouvert le fichier puis j’ai appliqué un premier filtre sur la 2eme combobox à la 2e ligne (dont le contenu est : Elz27-006/2021 M), le résultat du filtre dans la listbox donne 7 lignes à Résultat correct.

Puis je vais à la combobox réservée pour l’année pour faire mon 2eme filtre.

Avant de faire mon filtre, je remarque que j’ai 3 lignes avec l’année 2002 dans la listbox, si je choisis l’année 2002, théoriquement le résultat affiché sera les 3 lignes avec l’année 2002 mais lorsque je le fais, et bien la listbox n’affiche rien du tout.

Si pas de solutions, je vais pas vous demander la lune, on laissera tomber en vous remerciant beaucoup.

PS : Pour le moment, je ne clôture pas ma demande et je la laisse ouverte, on ne sait jamais.

Salutations.

Bonjour,

Pourtant chez moi ça marche bien, la, preuve en vidéo:

harzer

Cdlt

Bonjour Harzer, Arturo83

"Le problème survient lorsque je veux enlever ce dernier que je viens de faire en sélectionnant le caractère (*), théoriquement, je dois récupérer mon tout premier filtre "filtre B", or, je n’ai plus rien et je perds tous mes précédents filtres."

J'ai eu le même problème résolu et j'ai du ajouter un test du type "If Me.ComboBox7 = "*" Then

Sub Affiche()
  Dim tbl(), c, i, N, CB, bTest
  'cbx1 = Me.ComboBox1: cbx2 = Me.ComboBox2:  cbx3 = Me.ComboBox3:  cbx4 = Me.ComboBox4
  'cbx5 = Me.ComboBox5: cbx6 = Me.ComboBox6: cbx7 = Me.ComboBox7: cbx8 = Me.ComboBox8
  N = 0
  CB = Array(1, 1, 1, 1, 1, 1, 1, 1)
    For i = 0 To UBound(ColCombo): CB(i) = ColCombo(i): Next i
    For i = 1 To UBound(TabBD)
        bTest = TabBD(i, CB(0)) Like Me.ComboBox1 And TabBD(i, CB(1)) Like Me.ComboBox2 _
            And TabBD(i, CB(2)) Like Me.ComboBox3 And TabBD(i, CB(3)) Like Me.ComboBox4 And TabBD(i, CB(4)) Like Me.ComboBox5 And _
            TabBD(i, CB(5)) Like Me.ComboBox6 And TabBD(i, CB(7)) Like Me.ComboBox8
        If Special = False Then
          bTest = bTest And TabBD(i, CB(6)) Like Me.ComboBox7
        Else
          If Me.ComboBox7 = "*" Then
          Else
            bTest = bTest And year(TabBD(i, CB(6))) Like year(Me.ComboBox7)
          End If
        End If

        If Special = False Then
            If bTest Then
                N = N + 1: ReDim Preserve tbl(1 To NbCol + 1, 1 To N)
                c = 0
                For c = 1 To NbCol: tbl(c, N) = TabBD(i, c): Next c
                tbl(c, N) = TabBD(i, NbCol + 1)
            End If
        Else
            On Error Resume Next

            If bTest Then
                If err.Number = 0 Then
                    N = N + 1: ReDim Preserve tbl(1 To NbCol + 1, 1 To N)
                    c = 0
                    For c = 1 To NbCol: tbl(c, N) = TabBD(i, c): Next c
                    tbl(c, N) = TabBD(i, NbCol + 1)
                End If
            End If
        End If
        On Error GoTo 0
    Next i
    If N > 0 Then
        Me.ListBox1.column = tbl
    Else
        Me.ListBox1.Clear
    End If
    Special = False
End Sub

Bonjour scraper,

J'ai eu le même problème résolu et j'ai du ajouter un test du type "If Me.ComboBox7 = "*" Then

C'est déjà inclus dans ma dernière proposition!

Cdlt

Bonjour Arturo83,

Merci pour votre retour, j’ai refait mes tests et je peux vous affirmer que c’est correct, à l’exception près que le code tient compte du jour, mois et année, or depuis le début j’avais mentionné de ne tenir compte que de l’année.

Dans l’idéal, il serait même préférable que la combobox dont l’entête est "Né(s)" affiche seulement l’année.

Je profite de cette occasion pour vous féliciter pour le partage de vos connaissances et surtout de votre patience.

Je reste à votre disposition pour d’autre informations supplémentaires.

Cordiale poignée de mains.

Bonjour Scraper,

Je viens de répondre à Arturo83 et je remarque votre proposition, je vous remercie.

Je vais tester et je vous tiens au courant par la suite.

Salutations amicales.

Bonjour,

je peux vous affirmer que c’est correct, à l’exception près que le code tient compte du jour, mois et année, or depuis le début j’avais mentionné de ne tenir compte que de l’année.

En fait c'est dû à une erreur de saisie de ma part (me suis trompé dans la numérotation des combobox), c'est corrigé, Réessayez:

Cdlt

Bonjour Arturo83, Scraper et le forum,

Merci pour vos propositions respectives.

Je m’adresse pour commencer à Arturo83. Le dernier code proposé fonctionne parfaitement bien et me donne le résultat souhaité, juste un tout (Vraiment un tout petit) petit bémol : dommage que la combobox n’affiche pas que les années ! ça réduirait le nombre de choix dans la listbox, ici, c'est mon côté perfectionniste qui parle, dommage que je n'ai pas votre niveau de connaissances pour le mettre en application.

Si jamais ça vous tente, je suis prenant.

Maintenant je m’adresse à Scraper :

J’ai travaillé avec mon fichier que j’ai mis la toute première fois en ligne avec ma demande, j’ai récupéré votre code "Affiche" que j’ai mis en lieu et place du code existant.

Pour mes tests, j’ai commencé par filtrer directement sur la combobox de l’année "Né(s)" en choisissant une date quelconque et là malheureusement rien ne s’affiche.

Si ce n’est pas le cas chez vous, veuillez S.V.P me mettre en ligne votre fichier sur lequel vous avez fait les modifications directement.

A vous lire tous le deux.

Salutations.

Re, j'ai oublié de poser une question à Arturo83 qui n’a rien avoir avec vba et Excel, avec quel logiciel vous avez fait la capture d’écran (ou la vidéo) pour m’afficher que le code fonctionnait bien chez vous?

Pour la vidéo, utilisez LICEcap(gratuit)

J'ai essayé de modifier le fichier pour que cela réponde à vos attentes, mais c'est extrêmement compliqué de mettre le nez dans un programme conçu par quelqu'un d'autre, surtout qu'il est bien fourni, il faut analyser le code et le décortiquer pour pouvoir l'adapter. Je suis arrivé à obtenir l'année seule de la date de naissance, jusque là, ça marche bien, mais cela empêche de pouvoir faire d'autres filtres sur les autres listes alors que l'inverse fonctionne bien.

Le problème qui vient se greffer après cette modification, c'est que les filtres des autres listes tiennent compte de la date de naissance dans son entièreté et non uniquement sur l'année, cela signifie qu'il faut tout reprendre pour l'adapter pour que les recherches fassent abstraction de l'année seule et retrouve les dates en entier.

Je vous envoie le fichier pour que vous fassiez des tests, de mon côté, je vais essayer de l'améliorer mais sans garantie du résultat.

Cdlt

Bonjour Arturo83,

Merci pour le retour et aussi pour le nom du logiciel pour la captur d'écran.

D’après vos explications, je comprends bien la nature du problème. Ça ne sert à rien de vouloir mettre en place quelques choses qui pourrait nuire à ce qui existe déjà et qui fonctionne.

Je dois vous avouer que j’ai essayé de modifier cette partie de code pour n’afficher que les années, sans résultat probant, d’où ma demande, en plus, j’avais des erreurs dans le code qui existe déjà. vous, vous avez comme même trouvé une solution.

Je vous envoie le fichier pour que vous fassiez des tests, de mon côté, je vais essayer de l'améliorer mais sans garantie du résultat.

Pas de problème, je veux bien faire les tests (Il faut bien que je fais quelques choses), je vous informe que j’utilise ma base de données réelle (assez conséquente) que je connais bien et je sais plus au moins la nature des résultats que je dois avoir, si pas d’améliorations en vue ni de résultat d'amélioration possible, je suis déjà content du travail que vous avez fourni et je peux me contenter du résultat actuel.

A vous lire.

Bonjour Arturo83,

Voilà, j’ai pris le temps de faire mes tests avec ma base de données en faisant presque tous les filtres possibles, je peux vous annoncer que les résultats sont corrects et me donnent totale satisfaction, j'espère qu'il n'y aura pas de problème dans le futur.

Je suis content que ça marche et je vous remercie de votre disponibilité.

J’attends votre retour et vous dit que j’ai encore une demande (que je n’ai pas encore préparée) avec le même projet et même feuille que je vais poster bientôt, si le cœur vous dit !

Cordiale poignée de mains

Rechercher des sujets similaires à "filtrer colonne annee"