Microsoft 365 filtrages que je ne parviens pas à coder

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir à toutes et à tous,

J'ai des filtrages à mettre en place et voilà une semaine que je tourne en rond sans parvenir à réussir les codes.
J'ai tenté en boucle mais je n'y arrive pas :mad:

Dans le fichier joint, j'ai créé les onglets pour montrer mes besoins selon les conditions :
1 - TOUTES LES LIGNES à filtrer selon les critères dans les onglets qui suivent,
Résultats attendus
2 - J=date - K = vide (si la col J contient des dates et la col K est vide),
3 - J=vide - K = vide (si les col J et K sont vides),
4 - J=date - K = date (si les col J et K contiennent des dates),
5 - J K L= vide (si les col J K L sont vides),
6 - si la col J contient "NPR",
7 - si la col J contient "RdV Fait",
8 - si la col J contient "RdV Fait Facturé",

J'ai les neurones en forme de chou fleur lol,
Pourriez-vous m'aider ?
Fichier test joint,

Je vous remercie par avance.
Je continue mes tests,
Amicalement,
lionel,
 

Pièces jointes

  • Test_For.xlsm
    139.7 KB · Affichages: 8
Dernière édition:
Solution
Re

Lionel

J'ai fait les 2 premiers

1646335398955.png


A toi de faire les autres ;)

Si tu n'y arrives pas je ferais les autres


@Phil69970

Staple1600

XLDnaute Barbatruc
Re

Sinon, je vous laisse cette piste évoquée plus bas
1) On applique manuellement les filtres un à un
2) On enregistre chaque filtrage en tant qu'affichage personnalisé
3) Ensuite selon le besoin, on affiche l'affichage désiré
Si besoin, on peut le faire par macro
ActiveWorkbook.CustomViews("Rappels").Show
 

Staple1600

XLDnaute Barbatruc
Re

Si cela inspire quelqu'un, voila ce que cela pourrait donner
(ce n'est qu'une ébauche)
VB:
Sub testA()
Filtrage ComboBox1.ListIndex
End Sub
Private Sub Filtrage(Choix)
Dim Filtres
Filtres = Array("Tout", "Rappels", "Répondeurs", "Rdv annulés", "Non traités", "NPR", "Rdv facturés", "N/C")
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilterMode = False
End If
ActiveWorkbook.CustomViews(CStr(Filtres(Choix))).Show
End Sub
NB: je parle de la piste qui passe par les affichages personnalisés.
 

Staple1600

XLDnaute Barbatruc
Re

Donc en remplaçant le contrôle Formulaire par un ComboBox
Dans le code de la feuille
VB:
Private Sub ComboBox1_Change()
Filtrage ComboBox1.ListIndex
End Sub
Private Sub Worksheet_Activate()
ComboBox1.List = Array("Tout", "Rappels", "Répondeurs", "Rdv annulés", "Non traités", "NPR", "Rdv facturés", "N/C")
End Sub
Dans un module
VB:
Sub Filtrage(Choix)
Dim Filtres
Filtres = Array("Tout", "Rappels", "Répondeurs", "Rdv annulés", "Non traités", "NPR", "Rdv facturés", "N/C")
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilterMode = False
End If
ActiveWorkbook.CustomViews(CStr(Filtres(Choix))).Show
End Sub
Pré-requis: avoir fait manuellement chaque filtre qu'on aura enregistré en tant qu'affichages personnalisés (en veillant à respecter l'orthographe pour cela coïncide avec le contenu des Arrays)
 

TooFatBoy

XLDnaute Barbatruc
Bon, tel un Castor Junior, j'ai tout de même repris le jeu de pistes...

NB: On aura pris soin au préalable d'avoir fait ce que Marcel a fait en K5 ;)
Euh... j'ai fait quoi en K5 moi ???
Normalement, tu as fait ce que tu dis en message#79 ;)
UnMerge MyCells comme disait Joe Cocker ;)

En #79 je n'ai pas dit que j'avais fait quoi que ce soit sur K5 :
Marcel32 à dit:
Je viens de regarder, et ça semble fonctionner maintenant.
J'ai bien sûr changé le M en Z et le 13 en 26.

Ceci dit, pour moi les cellules fusionnées K, L et M posent problème...
La fusion c'est mal ! 👿

En revanche, en #87 j'ai expliqué chacune des étapes que j'ai effectuées :
Je viens de retélécharger le fichier de #65.

- J'ouvre le fichier.
- J'enlève le filtrage (menu Données \ Filtrer).
- Je change M en Z.
- Je change 13 en 26.
- Je sélectionne le dernier filtre de la liste déroulante : ça marche.

Tout ça pour dire que je n'ai pas touché à K5... ;)
 

Staple1600

XLDnaute Barbatruc
Bonsoir Marcel32

Merci de ses précisions
De toute façon, mon petit doigt m'a dit que Lionel avait testé mon code avec Filtre avancé sans prendre en compte mes explications.
Et mon autre petit doigt m'a dit qu'il n'avait pas testé le code qui utilise les affichages personnalisés.
;)

D'ailleurs puisque j'en parle, que penses-tu de cette piste ?
 

Staple1600

XLDnaute Barbatruc
Re

J'aurais plus confiance en moi ou plutôt en mon code si un tiers de confiance testait le dit code.
;)

Je te ne te connais même pas au trois-quart, Mais je te fais confiance. 👍

Tu peux donc tester mon code quand ton agenda te le permettra. ;)
 

Staple1600

XLDnaute Barbatruc
Mais si tu sais, cela se fait avec ta souris.

1) Tu filtres
2) Sur le ruban dans Affichage, clique sur Personnalisé
Ensuite laisse toi guider par Excel, en toute confiance

Répètes 1 et 2 autant de fois qu'il y a de critères à filtrer.

Quand ce pré-requis est terminé en ayant respecté le nommage des vue pour qu'elles correspondent aux noms présents dans mes Arrays, le code VBA devrait fonctionner.
 

Discussions similaires