[Calc] Actualiser les feuilles autofiltrées

Bonjour,

J'ai une table de données dans une feuille, et des copies (= en formule matricielle) vers plusieurs feuilles du même classeur pour préparer des impressions.
Ces feuilles cibles sont en mode autofiltre.

Y a-t-il un moyen pour que, lorsque je modifie une donnée dans la feuille source, les vues des feuilles cibles autofiltrées soient mises à jour en une seule manipulation ?

Merci

Bonjour Stéphane

Il faut utiliser un filtre spécial et définir les zones a mettre a jour comme plages de données.
La plage de données peut-être reliée au filtre spécial.

Ensuite sélectionner la plage (curseur placé dans la zone a sélectionner)
Puis actualiser la plage
Si tu ajoutes ces deux commandes a ton menu contextuel c'est radical
La première fois assez bluffant !
:wink:

⁣Claire​

Et accessoirement, un filtre standard avec "conserver le lien" (paramètres du filtre) portrait te convenir. Mais ça modifiera potentiellement tous tes onglets.
Le filtre spécial te permet de gérer séparément chaque onglet. Le tout est de bien définir les critères

⁣Claire​

Bonjour,

La solution a l'air très séduisante, mais 'arrive pâs...

Bonjour,

La solution a l'air très séduisante, mais 'arrive pâs...

'ha mârche umm peuh...

-Positionné sur ma table source, j'ai créé un filtre standard.
Je n'ai pas trouvé "N'est pas vide", dommage.

En fait il faut sélectionner l'opérateur '=' et dans le champ de paramètre on prend "non vide".

- Je coche "Copier le résultat vers...3 et désigne une autre feuille en A1
Je récupère bien les entêtes de ma table, mais liste vide

Je récupère bien ma liste filtrée dans la feuille cible.

MAIS telle que je vois la boite de dialogue, cette fonctionnalité ne me permettra de ne créer qu'un seul filtre sur cible depuis ma source, non ?

Ci-joint mon fichier.
https://www.cjoint.com/c/KLgvSvxPzjT

Ma source est la feuille "U61 Conception, étude détaillée du projet"

J'ai extrait par le filtre standard les lignes dont le champ "A" (colonne D) est non vide, cible dans la feuille "Vue U61 Contrat A"

Mais je souhaite /en même temps/ filtrer les lignes dont le champ "B" (colonne E) est non vide, cible dans la feuille "Vue U61 Contrat B".

Pas possible avec cette méthode ??

Merci

Salut Stéphane

Bien sûr tu peux faire un filtreavec condition multiples !! Il fallait le fichier pour voir.
Je regardes d'ici ce soir sauf si quelqu'un d'autre (ou toi) trouve la solution d'ici là

⁣Claire​

https://drop.devloprog.org/r/xZHjHhZg6h#y4Pdr88WRLMARRytJ4kIOJhuznDtA2S5uroGzzOHBMQ=
voici une proposition, et ci-dessous la méthode employée.
pour chaque feuille (filtrée) : vue à créer :
copier la feuille source unique avec liaison vers chacune des feuilles cibles
tu copie plusieurs fois, mais c'est avec liaison, toute modification de la feuille d'origine est reportée sur les autres.
=> ça peut suffire pour résoudre ton problème, mais pas en te contentant de l'autofiltre. car seules les valeurs de chaque cellules seront actualisées, pas le filtre.
=> tu peux essayer de voir ce que ça donne pour le filtre standard (=> pourras tu actualise rles données comme je le propose ci-dessous), et sinon il reste donc la solution via les filtres spéciaux
l'aide sur les filtres spéciaux https://help.libreoffice.org/7.2/fr/text/scalc/guide/specialfilter.html
je pense depuis longtemps qu'ils sont sous utilisés. Pourtant ils permettent aussi de bien mieux documenter les filtres appliqués (puisqu'il faut spécifier dans le classeur les critères de filtres, qui restent donc toujours accessibles... et modifiables. sans ouvrir une nouvelle fenêtre.
Il faut donc d'abord trouver un endroit ou spécifier tes critères pour chaque feuille. La méthode que j'utilise, est l'utilisation d'une feuille spécifique (qui peut aussi héberger la définition des données) pour regrouper tous les critères. Je nomme chacune des plages concernées (ce n'est pas obligatoire, mais je peux directement la définir comme "filtre" cf options de création de la plage de données)
Ensuite tu définis chacune des zones à filtrer comme des plages de base de données (je finis par me demander si c'est indispensable, mais il me semble qu'à une époque c'était nécessaire...)
Ensuite, tu sélectionne la plage de données à filtrer, puis données / filtre spécial (et dans la zone à filter, il ne te reste plus qu'à sélectionner la plage de critère, nomme et définie comme filtre. La référence de la plage est automatiquement appliquée.
Voilà, tu dois reproduire cette manip pour chacune des vues dont tu as besoin.
Au jour le jour, Données / sélectionner la plage puis Données / actualiser les données, te suffit à obtenir uen vue à jour => tu places ces 2 commandes dans le menu contextuel et tout est ok.
Quelques subtilités :
il faut retenir que dans la zone de critère
- les lignes sont regroupées par un "ou"
- les colonnes sont regroupées par un "et"
tu dois avoir toutes les colonnes de ton tableau qui sont reprises. Il est donc préférable de copier la ligne d'en tête. Pour ta colonne C, il faut que ta formule reste intacte (donc petite modification pour bien faire référence à la bonne zone).
je ne sais plus comment on indique le critère "non vide" du coup
pour tes colonnes D et E, tu n'as qu'un x quand ce n'est pas vide, j'ai donc changé ton critère.
Je me doutes bien que la réalité peut être plus complexe, je t'ai donc fait aussi un exemple sur la base de la colonne N où tu as 2 valeurs possibles.
En espérant que cela t'aide, il est possible que tu n'aies pas besoin d'aller si loin...
Claire
Ocleyr2lalune wrote:
Re
je viens de voir ton fichier
tu dois paramétrer un filtre standard par feuille cible. Ta source étant la même, effectivement ça coince. Donc je reviens à ma toute première proposition de ce week end :
définir des plages de données, et les associer à un filtre spécial (un par feuille)
je te fais une proposition en ce sens dans la soirée :wink:
Claire
Stéphane Santon wrote:
Bonjour,

Bonjour Claire,

Merci pour l'aide.

voici une proposition, et ci-dessous la méthode employée.

Voici mes essais...

pour chaque feuille (filtrée) : vue à créer :
copier la feuille source unique avec liaison vers chacune des feuilles cibles
tu copie plusieurs fois, mais c'est avec liaison, toute modification de la feuille d'origine est reportée sur les autres.

OK, c'était la situation de ma question de départ, une copie multiple (mais avec formule matricielle).

=> ça peut suffire pour résoudre ton problème, mais pas en te contentant de l'autofiltre. car seules les valeurs de chaque cellules seront actualisées, pas le filtre.

Effectivement.

Ensuite tu définis chacune des zones à filtrer comme des plages de base de données Ensuite, données / filtre spécial [...]

Au jour le jour, Données / sélectionner la plage puis Données / actualiser les données, te suffit à obtenir uen vue à jour => tu places ces 2 commandes dans le menu contextuel et tout est ok.

Donc j'ai ouvert ton fichier, j'ai coché (placé x) dans la cellule D6 de zone source, donc colonne "A".

Je vais dans la feuille "Vue U61A Contrat A via Filtre spécial"
Puis Données | Sélectionner la plage... | Plage_U61_ContratA
Enfin Données | Actualiser la plage

Mais la ligne 6 n'est pas affichée dans la plage... !-/

Je continue voir si j'ai loupé qqchose...

En espérant que cela t'aide, il est possible que tu n'aies pas besoin d'aller si loin...

Oui au moins je découvre des fonctions avancées intéressantes.

Merci

Version: 7.1.7.2 (x64) / LibreOffice Community
Build ID: c6a4e3954236145e2acb0b65f68614365aeee33f
CPU threads: 8; OS: Windows 6.1 Service Pack 1 Build 7601; UI render: Skia/Raster; VCL: win
Locale: fr-FR (fr_FR); UI: fr-FR
Calc: threaded

Ah si, ça y est j'ai réussi...

J'ai redéfini ma plage dans une nouvelle feuille, appliqué l filtre spécial, et ça met bien à jour les lignes sur "Actualiser"...

J'avance... MERCI ! :slight_smile:

Pfiouuuu...
Il y a bien des comportements surprenant quand on fait le tour...

Ensuite tu définis chacune des zones à filtrer comme des plages de base de données (je finis par me demander si c'est indispensable, mais il me semble qu'à une époque c'était nécessaire...)

Oui, ça semble l'élément clé du filtrage.
En fait si la plage de données est définie, on peut même appliquer l'autofiltre !
Si l'on est alors dans la plage, le menu "Actualiser la plage" est disponible et fonctionnel d'après les données modifiées dans le source.

Au jour le jour, Données / sélectionner la plage puis Données / actualiser les données, te suffit à obtenir uen vue à jour => tu places ces 2 commandes dans le menu contextuel et tout est ok.

Si le clic-droit est dans la plage, le seul "Actualiser les données" suffit dans le menu contextuel pour mettre à jour.

Ce sera feuille par feuille.
Maintenant une petite macro qui enchaine la mise à jour sur plusieurs feuilles (voire l'export PDF dans la foulée), ça peut être sympa... et non bloquant si macro non dispo.

Et bien on a bien avancé ce soir !! :-))

MERCI Claire !

a+

Impec !!

⁣Claire​

Bonsoir,

J'essaie de refaire le point sur mes essais de début de semaine...

pour chaque feuille (filtrée) : vue à créer :
copier la feuille source unique avec liaison vers chacune des feuilles cibles
tu copie plusieurs fois, mais c'est avec liaison, toute modification de la feuille d'origine est reportée sur les autres.

Je faisais la copie avec formule matricielle.

Mais là j'essaie de coller avec liaison comme tu dis.
Donc Copier, puis Collage spécial... Options | Lier

Je vois bien toutes les copies de cellules avec contenu qui reçoivent une formule avec lien absolu :
=$'U61 Source'.$A$1 =$'U61 Source'.$B$1
=$'U61 Source'.$A$2 =$'U61 Source'.$B$2
=$'U61 Source'.$A$3 =$'U61 Source'.$B$3

MAIS les cellules vides de la source n'ont pas de formules de copie dans la cible !
Donc si je rajoute une croix dans la source, elle n'apparaît pas dans la copie qui sera filtrée... :-/

Bonsoir,

Donc pour demander d'ajouter à LibreOffice Calc un menu "Actualiser toutes les plages de données", est-ce sur Bugzilla https://bugs.documentfoundation.org/
ou ailleurs ??

Merci

Oui c'est bien là je pense.
Ça fait partie des améliorations (enhancement)

Tu nous donnera le lien du bug créé qu'on puisse appuyer ta demande :wink:

⁣Claire​