Poser votre question
0

équivalence de la fonction =filtre d'Excel sur open office calc [fermée]

posée 2020-10-12 15:52:02 +0100

Image Gravatar de Victor62

updated 2020-10-16 10:56:12 +0100

Bonjour,

Je cherche une formule qui me permettrait d'afficher tout les résultat correspondant à ma recherche. Par exemple si j'ai un fichier avec dans la colonne A des prénoms et dans la colonne B des dates de naissances, je voudrais en tapant dans la cellule C1 "01/1990" que dans la colonne C s'affiche tout les prénoms dont la date de naissance correspond à "01/1990"

Dans Excel, cette fonction se nomme FILTRE (info trouvé sur: https://www.excel-exercice.com/commen... Mais je ne trouve pas d'équivalent dans libreoffice calc...

Quelqu'un aurait une idée?

Merci d'avance! C:\fakepath\16025863355988706(1).ods

éditer requalifier signaler réouvrir fusionner supprimer

Fermé pour la raison suivante la question est résolue, une bonne réponse a été acceptée par Victor62
date de clôture 2020-10-19 08:16:39.264909

1Réponse

0

répondue 2020-10-12 18:29:08 +0100

Image Gravatar de mgl

updated 2020-10-13 12:52:24 +0100

Bonjour @Victor62

La fonction équivalente est D4=JOINDRE.TEXTE(", ";VRAI();SI(B$4:B$18 = C4;A$4:A$18;"")), pour un tableau de données en A4:B18 et la date de naissance cible en C4

Voir le fichier joint.

Ajout suite à nouvelle demande, corrigée

Voici la formule "magique" : =SIERREUR(DROITE(REGEX($D$4;",[:space:]?+[^,]";;LIGNE(K4)-3);NBCAR(REGEX($D$4;",[:space:]?+[^,]";;LIGNE(K4)-3))-2);"")

Pour cela, j'ai ajouté un ", " au début de la chaîne récupérée par la formule matricielle en D4 et une "," à la fin.

Cela me permet de rechercher toutes les séries de n'importe quel caractère [^,] qui ne soit pas une virgule, après la marque de séparation entre les prénoms qui est pour tous ", "

Ensuite, je supprime les 2 caractères initiaux ", " qui polluent la valeur.

C:\fakepath\Equivalent FILTRE V3.ods

A+ Michel


Pour montrer à la communauté que la question a trouvé sa réponse, cliquez sur ✓ à côté de la "bonne" réponse, et "votez" en cliquant sur la flèche ^ de toute réponse utile. Ce sont les mécanismes utilisés pour communiquer la qualité des questions et réponses sur ce site. Merci!

Pour tout complément d'information, utilisez les boutons situés en dessous de votre question et éditez votre question ou simplement ajouter un commentaire. SVP ! Ne répondez pas à votre propre question à moins d'y apporter une réelle réponse.

Cordialement, Michel

éditer signaler supprimer permalien plus

Commentaires

Waouh!! Merci mille fois Michel!

Je m'arrache les cheveux depuis plusieurs semaine!!! Je dois encore ajouter quelques critères de recherche, mais je devrais m'en sortir!

Une dernière question peut-être: Est il possible de faire apparaitre chaque résultat dans une cellule qui lui est propre? Pour reprendre le tableur que vous m'avez partagé, pour la date du 04/08/12 demandée en C5, Claude apparaitrait en D5, Aurélie en D6 et Gwenaëlle en D7. Peut-on remplacé la virgule "," {=JOINDRE.TEXTE(", ";VRAI();SI(B$4:B$18 = C4;A$4:A$18;""))}`qui sépare chaque prénom par un"code" qui enverrai le prochain nom dans la cellule suivante?

Merci encore pour votre partage, Cordialement, Victor

Image Gravatar de Victor62Victor62 ( 2020-10-13 10:09:21 +0100 )éditer

Bonjour @Victor62

Etendez la formule à la plage D4:Dn qui recouvrent toutes les occurrences de dates de naissance simultanées et vous pouvez utiliser la formule =SIERREUR(REGEX(SUPPRESPACE($D$4);"\b[:alpha:]+\b";;LIGNE(H4)-3);"") pour décomposer le précédent résultat, en autant de termes. Attention, cette recherche de mots entiers ne fonctionne que si les prénoms composés ne comportent pas d'espace : écrire Jean-Paul, plutôt que Jean Paul. Je bute sur la détection des prénoms composés.

Belle journée, Michel

Image Gravatar de mglmgl ( 2020-10-13 11:26:13 +0100 )éditer

Je ne suis pas sûr de bien comprendre votre réponse, je ne saisis pas où je dois rentrer cette formule... Désolé je débute, pouvez vous l'incruster dans l'exemple que vous m'aviez envoyé?

Image Gravatar de Victor62Victor62 ( 2020-10-13 11:40:46 +0100 )éditer

Pardon @michel, je ne m'étais pas aperçu que le second commentaire n'était pas de vous! @mgl , dans l'exemple donné par @michel, où placez vous votre formule?

Image Gravatar de Victor62Victor62 ( 2020-10-13 12:40:43 +0100 )éditer

@Victor62

Pour communiquer avec un membre du forum, utilisez l'arobase immédiatement suivi de son identifiant tel qu'il apparaît soit dans la vignette en haut à droite de la réponse ou au début de sa signature automatique. Quel j'annonce mon prénom,Michel, dans ma signature manuelle ne change rien, pour vous adresser à moi, utilisez mon pseudo mgl. Il y a bien un michel inscrit sur ce forum. Il a peut-être été étonné de recevoir un message de votre part. Mais c'est sans conséquence ! Juste pour info !

A+ Michel

Image Gravatar de mglmgl ( 2020-10-13 13:29:19 +0100 )éditer

Ah mince!!! Je suis vraiment débutant ++ !! J'essaye tout de suite cette formule magique! Je reviens vers vous pour vous communiquer le résultat! Merci encore !

Image Gravatar de Victor62Victor62 ( 2020-10-13 13:37:23 +0100 )éditer

Bonjour @mgl! Je reviens vers toi pour faire le point! ;) J'ai mis un peu de temps pour adapter la formule, que je n'arrivais pas à faire fonctionner au bureau. La formule fonctionnait très bien dans le document Equivalent filtre V3 mais ne fonctionnait plus qd j'essayais de la mettre en place sur mon tableau. Je me suis donc envoyé le fichier par mail pour pouvoir travailler chez moi. Et là miracle tout fonctionne ! Serait ce un problème de version, car aujourd'hui la seconde partie de la formule (celle qui permet de fractionner le 1er résultat) ne donne rien, et une partie de la formule apparait en minuscule quoi que je fasse et celà sur mon doc comme sur le document "equivalent filtre V3" ! voilà ce qui apparait en K4: =SIERREUR(DROITE(org.libreoffice.regex($D$4;",[:space:]?+[^,]";;LIGNE(K4)-3);NBCAR(org.libreoffice.regex($D$4;",[:space:]?+[^,]";;LIGNE(K4)-3))-2);"")

Image Gravatar de Victor62Victor62 ( 2020-10-15 09:43:12 +0100 )éditer

Bonjour @Victor62

Allez dans Ouils>Options>LibreOffice Calc... et cochez Autoriser les expressions régulières (Je cite de mémoire) et dites-nous.

Belle journée, Michel

Image Gravatar de mglmgl ( 2020-10-15 10:21:58 +0100 )éditer

J'ai suivis les instructions mais aucun changement. "REGEX" reste en minuscule quoi que je fasse, et aucun résultat n'apparait dans la cellule. Merci beaucoup @mgl de prendre sur votre temps!

Image Gravatar de Victor62Victor62 ( 2020-10-15 10:37:46 +0100 )éditer

Par ailleur un * est venu se glisser dans la formule: =SIERREUR(DROITE(regex(B$9;",[:space:]?+[^,]";;LIGNE(AH9)-3);NBCAR(regex(B$9;",[:space:]?+[^,]";;LIGNE(AH9)-3))-2);"")

il se glisse juste après[:space:]?+[^,]

je ne le vois pas dans la formule que vous avez indiqué dans votre réponse (Voici la formule "magique" : =SIERREUR(DROITE(REGEX($D$4;",[:space:]?+[^,]";;LIGNE(K4)-3);NBCAR(REGEX($D$4;",[:space:]?+[^,]";;LIGNE(K4)-3))-2);"") )

Image Gravatar de Victor62Victor62 ( 2020-10-15 11:07:30 +0100 )éditer

Outils de question

1 suiveurs

Stats

Posée: 2020-10-12 15:52:02 +0100

Consultée: 35 fois

Mise à jour: Oct 16