Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro pour filtre automatique sur feuille vérrouillée

farel6g8

XLDnaute Nouveau
Bonjour à tous,

Je cherche une macro qui me permettrait d’appliquer un filtre automatique en fonction d’une donnée source sur une feuille verrouillée par un mot de passe. J’ai trouvé des éléments de réponse sur le forum mais impossible de les adapter à mon fichier.
Je joins donc directement le fichier pour simplifier les explications :
  • En rentrant un numéro de chambre en B2 dans l’onglet ‘examens BILAN’ les nom, prénom et date de naissance sont renseignés automatiquement à partir des données administratives
  • Je souhaiterais appliquer un filtre automatique sur les colonnes C-D-E en fonction des données (C2-D2-E2) tout en maintenant le tableau verrouillé tel qu’il l’est au départ (mot de passe : passe)
  • Idem sur la colonne N
  • Enfin je souhaiterais, en cliquant sur « AFFICHER TOUT » supprimer l’ensemble des filtres appliqués

Ce tableau est destiné à des débutants et les données seront très nombreuses, le filtre automatique classique est donc peu adapté.

Merci d’avance pour votre aide.
 

Pièces jointes

  • EXEMPLE FILTRE.xls
    45.5 KB · Affichages: 53
  • EXEMPLE FILTRE.xls
    45.5 KB · Affichages: 54
  • EXEMPLE FILTRE.xls
    45.5 KB · Affichages: 60

Modeste

XLDnaute Barbatruc
Re : Macro pour filtre automatique sur feuille vérrouillée

Bonsoir farel6g8 et bienvenue à toi,

Rien que pour l'Excel 2000, j'ai eu envie de répondre

Dommage que tu n'aies pas laissé le code que tu avais commencé ...
Je viens de tester les deux bouts de code suivants ... qui semblent fonctionner (à voir si des particularités seraient présentes dans ton "vrai fichier") et en fonction de ce que j'ai compris!

Copie les 2 procédures dans le module de la feuille "Examens BILAN". Je te laisse le soin de les associer aux 2 boutons correspondants. Pas compris, par contre le second bouton filtrer? Un filtre supplémentaire, parmi les résultats du premier? Un autre filtre tout à fait indépendant?

VB:
Sub filtrer()
Application.ScreenUpdating = False
With ActiveSheet
    Set plage = .Range("B7:B" & .Range("B" & Rows.Count).End(xlUp).Row)
    .Unprotect "passe"
    For Each c In plage
        If c <> [B2] Then c.EntireRow.Hidden = True
    Next c
    .Protect "passe", DrawingObjects:=True
End With
Application.ScreenUpdating = True
End Sub

Sub affichetout()
    With ActiveSheet
        .Unprotect "passe"
        .[7:65000].EntireRow.Hidden = False
        .Protect "passe", DrawingObjects:=True
    End With
End Sub
 

farel6g8

XLDnaute Nouveau
Re : Macro pour filtre automatique sur feuille vérrouillée

Bonsoir Modeste,

Tout d'abord un grand merci pour ton aide.
Le code fonctionne parfaitement bien pour "filtrer par personne" et "afficher tout". Celui que j'ai testé initialement faisait au minimum le quadruple en longueur...
Le second bouton filtrer a pour but de permettre de filtrer par date en complétant la cellule N2.
Ainsi les utilisateurs auront le choix de filtrer soit par personne soit par date. Il faudrait donc idéalement un troisième code je suppose ??
 

farel6g8

XLDnaute Nouveau
Re : Macro pour filtre automatique sur feuille vérrouillée

Petit bémol...
Je viens de réaliser que le filtre "par personne" se base sur le n° de chambre (colonne B). Or beaucoup de personne passeront par cette chambre...du coup quand je filtre ils apparaissent tous. Est-il possible de filtrer uniquement la personne définie en C2-D2-E2. Ce qui reviendrait, par le biais d'une seule macro, à appliquer 3 filtres successifs sur les colonnes C-D-E.
D'avance merci!
 

Modeste

XLDnaute Barbatruc
Re : Macro pour filtre automatique sur feuille vérrouillée

Re-bonsoir,

La suite ne sera pas pour ce soir (sauf si quelqu'un veut prendre la relève), mais si les coordonnées en C2, D2 et E2 sont données par une RECHERCHEV, elle-même affichant les données en fonction du contenu de B2, la RECHERCHEV en question ne trouvera jamais que la première occurence du n° de chambre dans la plage DA. Dans ton exemple c'était toujours la même personne. Si ce n'est plus le cas, il me semble qu'il faut d'abord chercher une solution à ce niveau-là ... Les patients n'auraient-ils pas un identifiant? (plus facile pour les recherches que la concaténation des nom, prénom et date de naissance)

Bonne soirée
 

farel6g8

XLDnaute Nouveau
Re : Macro pour filtre automatique sur feuille vérrouillée

Bonsoir,

Je me rends compte qu'il est difficile de traduire par écrit le pourquoi du comment d'une requête, mais je vais tout de même essayer...

La plage DA fait l'état des lieux des patients présents, elle est mise à jour en temps réel en fonction des mouvements.
Admettons que Mme A est présente en ch.10 du 10 au 15 septembre et qu'elle bénéficie de 3 examens durant cette période qui seront enregistrés dans l'onglet bilan.
Le 15 sept Mme A sort de l'hôpital et est remplacée par Mme B dans la même chambre 10.
La plage DA est directement mise à jour.
Mme B bénéficie à son tour de 5 examens qui sont enregistrés dans l'onglet bilan.
Durant l'hospitalisation de Mme B je souhaiterais un moment faire le point sur les examens réalisés chez cette patiente. En filtrant uniquement la chambre 10 les données des 2 patientes apparaîtront. Or je n'ai plus besoin des données de Mme A qui est sortie.
Dans la réalité le tableau bilan comporte déjà plus de 500 lignes et s'enrichit chaque jour.
Voilà pourquoi dans l'idéal le filtre devrait s'appliquer à la personne selon les 3 traits d'identification et non à la chambre.
Concernant l'identifiant, le problème est qu'il change à chaque hospitalisation pour une même personne. Or nous avons des patients chroniques qui reviennent régulièrement et pour lesquels je souhaiterais avoir l'historique complète des examens suivis. En filtrant avec l'identifiant je n'aurais donc pas accès à cette vision globale.

J'y ai bien réfléchi et le cumul des 3 filtres successifs sur les colonnes C-D-E en fonction des données C2-D2-E2 et en une seule macro serait vraiment la solution idéale. Mais je ne sais absolument pas si c'est réalisable...

Merci en tout cas pour le temps déjà consacré à ma requête !
 

Modeste

XLDnaute Barbatruc
Re : Macro pour filtre automatique sur feuille vérrouillée

Bonjour farel6g8,

Un doute m'assaille (comme me le disait récemment un guerrier kenyan) ... je n'ai plus d'Excel 2000 sous la main et j'ai donc ouvert ton fichier avec Excel 2010. Je trouve des couleurs appliquées aux onglets des feuilles (ce qui n'était pas possible sous Excel 2000, si??) Ma question est donc: le préfixe de la discussion [Excel 2000] est-il bien d'application?

Quoi qu'il en soit, je ne peux donc tester la proposition jointe qu'en 2010 et 2003 (jusque là, ça semble fonctionner!). Plutôt que des recherches sur trois champs, il m'a semblé plus simple de travailler avec un filtre élaboré/avancé. Ceci devrait donc fonctionner sous XL2000 aussi.

Pour pouvoir mettre en oeuvre cette technique, j'ai modifié un tout petit peu la structure de ton fichier:
- recopié les titres des champs sur lesquels le filtre doit s'appliquer en B1:E1
- inséré une ligne supplémentaire entre tes titres de la ligne 5 et 6 et déplacé d'une cellule vers le bas le titre "Remarques". De cette manière, la plage à filtrer démarre en B7 et s'étendra jusqu'en Rxx

A la plage ainsi définie, on peut appliquer un filtre (filtrer la liste sur place) avec les critères en B1:E2.

Teste le fichier et dis-nous si ça fonctionne. Si oui, est-ce qu'il répond maintenant à tes attentes. Si oui, vois-tu (en cherchant un peu, tout de même ) comment adapter pour ton second filtre?

... et surtout n'hésite pas si tu as des questions.
 

Pièces jointes

  • EXEMPLE FILTRE (farel6g8).xls
    62.5 KB · Affichages: 39

farel6g8

XLDnaute Nouveau
Re : Macro pour filtre automatique sur feuille vérrouillée

Bonjour Modeste,

Merci infiniment pour ton aide, le fichier fonctionne parfaitement et répond à toutes mes attentes!
J'ai même réussi à adapter tout seul une macro pour le second filtre...(en même temps c'était pas trop compliqué puisque j'ai simplement adapté la première macro que tu avais proposé...
Par contre la macro 'affichetout' ne fonctionne pas pour le filtre par date sur la colonne N.
J'ai donc intégrer une seconde macro 'affichetout_date' affectée sur un bouton spécifique...
ça fait beaucoup de boutons mais ce n'est pas bien grave, l'essentiel étant que cela fonctionne parfaitement!

Code:
Sub filtrerB_date()
Application.ScreenUpdating = False
With ActiveSheet
    Set plage = .Range("N8:N" & .Range("N" & Rows.Count).End(xlUp).Row)
    .Unprotect "pole"
    For Each c In plage
        If c <> [N2] Then c.EntireRow.Hidden = True
    Next c
    .Protect "pole", DrawingObjects:=True
End With
Application.ScreenUpdating = True
End Sub

Sub affichetout_date()
    With ActiveSheet
        .Unprotect "pole"
        .[7:65000].EntireRow.Hidden = False
        .Protect "pole", DrawingObjects:=True
    End With
End Sub

Sub filtrerB_patient()
Application.ScreenUpdating = False
With ActiveSheet
    .Unprotect "pole"
    If .FilterMode = True Then .ShowAllData
    Set plage = .[B7].CurrentRegion
    plage.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=.Range("B1:E2")
    .Protect "pole", DrawingObjects:=True
End With
Application.ScreenUpdating = True
End Sub

Sub affichetout_patient()
    With ActiveSheet
        .Unprotect "pole"
        If .FilterMode = True Then .ShowAllData
        .Protect "pole", DrawingObjects:=True
    End With
End Sub

Pour info et après vérification sur mon poste de travail il s'agit effectivement de Excel 2002 et non 2000...je ne maîtrise pas trop les différences entre ces 2 versions.

Merci encore pour ton aide et bonne soirée à toi!
 

Modeste

XLDnaute Barbatruc
Re : Macro pour filtre automatique sur feuille vérrouillée

Salut farel6g8,

Si tu repasses par ici, une seule procédure afficheTout (sur le modèle utilisé dans affichetout_patient) devrait suffire, à condition que tu utilises le filtre avancé aussi pour filtrer sur les dates. Si c'est l'activation d'un filtre qui masque certaines lignes, ShowAllData fonctionne.

Attention, d'autre part au fait que tu ne t'assures pas que toutes les lignes sont bien visibles avant de lancer ta Sub filtrerB_date(). Si ton tableau est destiné à "des débutants" comme tu le dis, la multiplication des boutons n'est sans doute pas la meilleure idée et si tu n'as pas ajouté l'un ou l'autre contrôle, certains résultats pourraient être tronqués ... mais ... c'est vous qui voyez!
 

farel6g8

XLDnaute Nouveau
Re : Macro pour filtre automatique sur feuille vérrouillée

Bonsoir,

Mission accomplie ! J'ai réussi à supprimer la 2ème macro afficheTout en utilisant un filtre avancé pour filtrer les dates, je progresse...
L'utilisation de l'outil dans sa nouvelle version sera accompagnée d'une formation pour les plus novices ! Et je serai présent pour assurer des contrôles !

Merci encore
A bientôt
 

Discussions similaires

Réponses
69
Affichages
5 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…