[Résolu] Trouver toutes les occurences dans une liste?

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Bouzi
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 10 juil. 2009 04:10

[Résolu] Trouver toutes les occurences dans une liste?

Message par Bouzi »

Bonjour/Bonsoir,

Je me suis crée un carnet de notes avec Calc. Une des fonctions primordiale de cette feuille est de trouver toutes les occurrences dans une liste (pas forcément triée). En particulier rechercher tous les élèves d'une classe donnée. De plus n'y connaissant rien aux macros je ne pouvais en créer une.

Pour ce faire j'ai commencé par utiliser un filtre. Cette solution ne fonctionne pas dynamiquement. Si ma liste change (ajout ou suppression ou modification d'un élève) le résultat du filtre ne change pas. Si je change la classe sélectionnée, il faut que recommence mon filtre. J'ai donc rapidement abandonné cette solution.

Puis j'ai découvert le fonction EQUIV qui permet de trouver uniquement la première occurrence. Donc comment trouver la seconde? la troisième? ...

J'ai trouvé la solution suivante.
- à la ligne précédente j'ai le numéro de la ligne de l'occurrence précédente
- je relance une recherche mais a partir d'une sous liste qui commence juste après le dernier élément trouvé grâce à la fonction DECALER.

Cette solution fonctionne.
Avantage : toute modification ou suppression est immédiatement répercutée dans le résultat. L'ajout d'un élément est possible mais pose un petit problème que je sais résoudre.
Inconvénient: la mise au point de la recherche de la 2e occurrence et des suivantes est compliquée et m'a fait passer quelques nuits blanches.:fou:

Pour ceux qui veulent tester voici le fichier
recherche toutes occurence.ods
Je tiens à préciser qu'à l'époque j'utilisais OOo 1.1.4 donc le module OOo base n'existait pas. Et qu'en fait je faisais un genre de requête "à la main".

Ma question est (vous l'aurez compris): comment trouver simplement toutes les occurrences dans une liste? J'aurais, par exemple, bien aimé
un paramètre N° d'occurrence dans le fonction EQUIV.

Toute suggestion est la bienvenue.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Oukcha le 27 juil. 2009 06:00, modifié 2 fois.
Raison : Ajout balise (coche présente)
___________________________________________________________________________
La connaissance est comme l'heure même si on la donne on l'a toujours avec soi.
LibO 1:6.1.5~3+deb10u7 sur Debian 10
LibO 7.6.1.2 sur windows 10
Soizic
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 10 juin 2009 13:48

Re: Comment trouver toutes les occurences dans une liste?

Message par Soizic »

J'ai une solution, un peu lourde avec une plage de données et une zone de critère et la fonction BDNB qui compte les occurrences satisfaisant le critère. Il y a un exemple intéressant pour cette fonction dans l'aide de Calc.
Le résultat se met bien à jour, l'inconvénient est que tu dois avoir autant de zone de critères que de critères.

J'avais eu ce problème sous excel et je 'avais trouvé que cette solution.
Je mets un extrait de ton fichier avec la solution. La plage de données se définit dans le menu "données"; pour le critère il faut respecter les noms des champs. (rien à voir avec les vraies bases de données)
Cordialement.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 3.1.1 Imac intel, leopard 10.6
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: Comment trouver toutes les occurences dans une liste?

Message par Pierre-Yves Samyn »

Bonjour
Bouzi a écrit :Ma question est (vous l'aurez compris): comment trouver simplement toutes les occurrences dans une liste?
Comme ceci :
Capture-1.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
jjk
HédOOniste
HédOOniste
Messages : 1696
Inscription : 27 oct. 2008 14:30

Re: Comment trouver toutes les occurences dans une liste?

Message par jjk »

Bonjour

La solution de Pierre-Yves est effectivement très simple.
Pour afficher la liste sans doublons des classes, tu sélectionnes la plage B1:B120.
Menu Données > Pilote de données > Sélection active
Tu obtiens la fenêtre "Pilote de données" dans laquelle tu fais glisser le bouton "Classe" sur "Ligne Champs"
Tu cliques sur le 2ème bouton "Options" (sans les ...) et par le champ "Résultat à" tu choisis la cellule cible, par exemple $Feuille1.$J$1, tu décoches les cases "Total des lignes/colonnes", enfin tu cliques sur OK.

Ceci t'affiche la liste voulue, avec un bouton "Filtre" au dessus.
Lorsque tu modifies la liste source, il suffit de faire un clic droit sur le bouton "Filtre" et de choisir "Actualiser" pour mettre la liste à jour.
OpenOffice 3.1.1 sous XP-SP2 et LibreOffice 3.5.0 sous Win 7
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: Comment trouver toutes les occurences dans une liste?

Message par Pierre-Yves Samyn »

jjk a écrit :Pour afficher la liste sans doublons des classes, tu etc.
euh... oui, cela va mieux en le disant :oops:

merci jjk :lol:
Bouzi
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 10 juil. 2009 04:10

Re: Comment trouver toutes les occurences dans une liste?

Message par Bouzi »

Merci a vous.

Le plus étonnant c'est que j'utilise un pilote de données pour sélectionner la classe pour laquelle doit être calculer les moyennes coefficientées et que je n'ai penser à réutiliser cette idée.

Cette solution est très élégante mais le pilote de données ne se met pas a jour automatiquement en cas de modification/suppression. La plupart du temps ce n'est pas gênant. Je garde donc cette solution sous le coude.

Encore merci pour la célérité de la réponse.
___________________________________________________________________________
La connaissance est comme l'heure même si on la donne on l'a toujours avec soi.
LibO 1:6.1.5~3+deb10u7 sur Debian 10
LibO 7.6.1.2 sur windows 10
Jeff
GourOOu
GourOOu
Messages : 9975
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: Comment trouver toutes les occurences dans une liste?

Message par Jeff »

Bonjour,
Bouzi a écrit :mais le pilote de données ne se met pas a jour automatiquement en cas de modification/suppression.
Il faut le lui demander :

- menu Données > Pilote de données > Actualiser

A + :wink:
À lire avant tout !

Pour télécharger Apache OpenOffice

AOO 4.1.15 / Debian 12.10 "bookworm" / Xfce