Autofilter entre 2 dates

Bonjour,

Je reviens vers vous avec mon fichier Test épuré sur lequel j’aimerais si possible une petite modification que je suis bien incapable de réaliser.

Je m’explique avec un exemple :

Lorsque je sélectionne dans la liste déroulante par exemple ‘’ Léon Dit’’ (Tout va bien) mais j’aimerai un second filtre en VBA au niveau des dates. Soit une sélection entre 2 dates. Exemple du 10/03 au 07/09.

J’espère avoir été assez clair dans mon explication, sinon n’hésitez pas à me poser vos questions.

Merci par avance

Bien cordialement

Mon fichier Test : [Test.xlsm]

Bonjour

Ci-joint ma proposition
Le résultat est intégré dans un onglet spécifique créé pour le besoin (« Filtre date ») ainsi de ne pas perturber le filtre actuellement en place
Utiliser le même onglet pour afficher le résultat des 2 filtres risque de perturber leur qualité

Onglet « Saisie1 » cliques sur le bouton « Filtre date »
Aux invites saisies la date de début puis la date de fin
Attention la date de début doit être inférieur ou égale à celle de fin

Consultes le résultat obtenu onglet « Filtre date »

Celui-ci est tributaire du premier filtre
Seules les données non filtrées sont pris en compte et intégrées ou non dans l’onglet de récupération

Testes et dis moi

MJcpY3GKg8v_Test.xlsm (176,4 Ko)

1 « J'aime »

Bonsoir,
Merci d’avoir pris en charge mon dossier.
Effectivement je ne m’attendais pas à ça.
Avant de te faire appel, j’ai fouillé un peu sur le net où j’ai trouvé cette macro :

Private Sub Worksheet_Change(ByVal Target As Range)
'Si D3 ou F3 est modifiée (Dates de début / fin) alors
If Not Intersect(Target, Range(« D3 »)) Is Nothing Or Not Intersect(Target, Range(« F3 »)) Is Nothing Then
'On modifie le filtre entre ces 2 dates
Range(« $B$31:$N$171 »).AutoFilter Field:=1, Criteria1:=« >= » & Format(Range(« D3 »), « 00000 »), Operator:=xlAnd, Criteria2:=« <= » & Format(Range(« F3 »), « 00000 »)
End If
End Sub

Évidemment, j’ai essayé de l’installer à la suite de celle qui est déjà sur la ‘’Feuil1’’. Mais ça perturbe sérieusement et mes connaissances en VBA sont loin d’être à la hauteur.

Je te joins un nouveau fichier ‘’Test’’ ainsi qu’un fichier expliquant ce que j’aimerai obtenir.

Merci de me tenir au courant.

Bonne soirée.

Mes 2 fichiers :

Merci pour ce retour
Je te déconseille d’utiliser le même onglet pour faire fonctionner ces 2 filtres il y aura obligatoirement conflit
Il vaut mieux comme je te l’ai proposer utiliser un autre onglet et ainsi de s’affranchir de l’état du premier que le premier filtre peut avoir modifié
Ce deuxième filtre si le premier est actif ne pourra pas correctement fonctionner
As tu testé ma proposition ?
Juste à saisir les 2 dates et le résultat est obtenu dans l’onglet « Filtre date »
Merci de me dire

je ne vois pas bien les tabs des feuilles, donc ceci est un test, mais je ne sais pas sur quelle feuille de « explications… »

Sub test()
     Set sh = ActiveSheet

     On Error Resume Next
     sh.AutoFilter.Range.AutoFilter          'RAZ ancien autofilter (éventuel)
     On Error GoTo 0

     With sh.Range("A11").CurrentRegion.Resize(, 10)     'filtrer cette plage
          .AutoFilter 8, sh.Range("H6").Value     'filtrer le nom
          .AutoFilter 1, ">=" & sh.Range("I6").Value2, xlAnd, "<=" & sh.Range("j6").Value2     'filtrer les date
     End With
End Sub

Bonjour,
Je ne comprends pas ton dernier message

(Mon fichier ‘’Explications……….’’ n’est qu’une image de ce que j’aimerais.)

Au cas où ta question est de savoir sur quel fichier mettre la macro, il s’agit de celui-là :

Explications et résultat que j’aimerais obtenir (1).xlsm (155,0 Ko)

Edit : je vois que vous avez transmis un nouveau fichier, je l’avais juste fait avec celui de hier. Dans le module de « Saisie1 » la macro de change …

Tu peux oublier mes 2 précédents messages.
Je viens de faire la modif, :+1:. C’est exactement ce que j’attendais.

TOUTEFOIS, si j’ai tout bien, il y a un petit souci lorsque je clique sur le bouton
‘’Validation Début / Fin’’
sans avoir agi préalablement sur la liste déroulante, toutes les lignes disparaissent.
Je te laisse vérifier sur ce fichier joint. Si tu peux supprimer ce bug, ce sera le top.

comme ceci ?
Test (3) (1).xlsm (168,3 Ko)

DÉSOLÉ,

Je n’avais pas vu ton dernier fichier joint.

Je regarde et reviens vers toi

Encore désolé

Dommage que je n’ai pas vu ta pièce jointe ce matin car je préfère ta version sans le bouton ‘’Validation Début / Fin’’. Tu l’avais fait sur le fichier ‘’Explications et résultat que j’aimerais obtenir’’
Si tu pouvais refaire cela sur ton fichier ‘’Test (3) (1)’’ ce serait nickel.

Maintenant, sur ton fichier ‘’Test (3) (1)’’ il y aurait quelques petits trucs à corriger si tu veux bien.
Notamment :
• Lorsque j’ai fait une sélection avec la liste déroulante, la macro ‘’Haut’’ ne fonctionne plus sur les listes un peu longues. Exemples : ‘’Léon Dit et ‘’ Sarah Pelle’’. Les autres plus courtes fonctionnent bien. En revanche, sur ‘’All’’ qui est longue, ça fonctionne bien. ???

• Lorsque je viens modifier la liste des noms sur l’onglet liste1, ça bug.

• Enfin, après avoir fait une sélection avec la liste déroulante, J’obtiens en dessous de la liste déroulante, le cumul des débits et des crédits. Exemple ‘’Alex Térieur’’ débit = 1100 et crédit = 300. Si je fais une sélection entre 2 dates par exemple du 23/01/23 au 30/06/23, je devrais obtenir en débit 300 et en crédit 100 alors que j’ai toujours 1100 et 300.

Je pense qu’avec toutes ces corrections ce sera génial.

Merci de repartir sur ce fichier afin de bien comprendre mes exemples :

Merci par avance
Il n’y a pas le feu…
Bon courage

Facultatif : serait-il possible, lorsque je clic sur ‘’All’’ de la liste déroulante, que mes 2 dates s’effacent ? Avec malgré tout la possibilité de faire ensuite une sélection entre 2 dates.
Là ce serait le must.

ATTENTION,
Je viens de m’apercevoir que la version sans le bouton Validation Début / Fin pause un souci.
Dès que je saisie quelque chose sur cette page, ça saute

je pense que j’ai fait toutes vos demandes, pour les totaux, on a la fonction "Subtotal(109; …) pour les lignes visibles, mais cela ne donne pas les chiffres que vous avez dit.
Test (3) (1).xlsm (192,8 Ko)

Visiblement c’est SUPER

Je viens juste de rentrer, donc je reviens vers toi demain

Grand merci pour le temps passé

Bonne soirée
A demain

1 « J'aime »

Bonjour,

Ton fichier est vraiment nickel :+1::+1: exactement ce que je souhaitais.

Je suis en train d’essayer de traduire ce que tu as fait sur un autre fichier quasi-similaire.

Afin que j’essaye de comprendre légèrement,

Pourrais-tu m’expliquer à quoi correspond le ‘’Module1’’ ?

Pourrais-tu aussi me dire où se trouve la macro qui permet d’effacer les dates lorsque je clique sur ‘’All’’ ?

Par ailleurs, Si ça ne te dérange pas, je procèderai à la clôture de ce sujet que demain. Pourrais-tu m’expliquer comment procéder pour clôturer ce dossier et mettre un commentaire sur le site ?

Encore un Grand merci et Bravo

« Module 1 », c’est pour la poubelle, j’avais utilisé l’enregistreur des macros et je avais oublié de le supprimer.

Puis dans le module de la feuille « Saisie1 » la macro « worksheet_Change » vous voyez ici en dessous les lignes avec « ** »

Private Sub Worksheet_Change(ByVal Target As Range)
      
      If Intersect(Target, Range("H6:J6")) Is Nothing Then Exit Sub
     On Error GoTo erreur

     **If Target.Address = "$H$6" And Target.Value = "All" Then**
**          Application.EnableEvents = False**
**          Range("I6:J6").ClearContents**
**     End If**
 

Pour la clôture, je ne le sais pas :face_with_open_eyes_and_hand_over_mouth:

Merci pour les infos

Je vais à nouveau avoir besoin de ton aide une dernière fois.
J’ai transcris tes macros dans un autre fichier quasi-similaires mais avec une mise en page définitive. Tout fonctionne parfaitement, sauf que lorsque je clique sur All, les dates ne s’effacent pas. Pourrais-tu me dire d’où ça vient STP.
Dans ce fichier il y a pas mal de macros mais, te concernant, ‘’Saisie1’’ et la ‘’Feuil1’’ sont toujours présente.

A tout hasard, est possible de verrouiller la barre du menu déroulant. (J’ai tendance à écrire dedans) ça ne casse rien mais bon. Au cas où !!!

Merci par avance

Fichier :

c’était une erreur bête, si on ne dit pas « Option compare Text » au début (1ière ligne) du module concerné, « $i$5 » n’est pas égal à « $I$5 » ou alors il faut utiliser
If Strcomp(Target.Address,« $i$5 »,1)=0 … then
donc c’était un problème de majuscules et miniscules.

« verrouiller la barre du menu déroulant », cela veut dire quoi éxactement ?

Effectivement, en mettant tout en majuscule ça fonctionne nickel.

Encore merci pour ton super boulot :+1:

Très bonne fin de journée

Bon courage