Fonction pour lister les éléments d'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.
hector
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 25 nov. 2005 11:23

Fonction pour lister les éléments d'une liste

Message par hector »

Bonsoir,
Mon titre n'est pas très clair :oops: alors je donne un exemple:
je cherche une fonction (matricielle) qui, à une liste (plus généralement ensemble de cellules):

Code : Tout sélectionner

Henri
Matthieu
Jean
Henri
Jean
Martin
donnerait:

Code : Tout sélectionner

Henri
Matthieu
Jean
Martin
c'est-à dire tous les items présents dans la liste, mais en un seul exemplaire.
Existe t'elle? ou quelque chose d'approchant?
Merci beaucoup.
Dernière modification par hector le 06 avr. 2007 07:29, modifié 3 fois.
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 409
Inscription : 12 févr. 2007 14:33
Localisation : Bruxelles

Message par Vandeput »

Bonsoir,

Sélectionner la plage
Menu Données / Filtre / Filtre standard
Nom du champ : aucun
Options
Décocher : La plage contient des étiquettes de colonnes
Cocher : Sans doublons
Cocher : Copier le résultat vers
Dans la fenêtre droite du dessous : taper la référence de la première cellule où la liste doit être copiée.
OK

Bonne soirée.
andré
2.2 sous Windows XP
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Message par Pierre-Yves Samyn »

Bonjour

Sinon, si le but est de te servir de la liste en saisie, il suffit de faire Ctrl+D (ou clic droit et Liste de sélection) pour obtenir cela en liste déroulante
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Message par jeanmimi »

Bonjour,

Voici quelques exemples de listes possibles dans le Tableur :
http://user.services.openoffice.org/fr/ ... 071356.ods
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
hector
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 25 nov. 2005 11:23

Message par hector »

Merci à vous 3 pour vos réponses:
en fait j'ai une liste de livres (1 ligne=1 livre), toujours la même ...: ***

Une colonne (I, 1ère feuille) correspond au lieu d'édition du livre.
Je souhaite faire un histogramme rendant la fréquence des lieux d'éditions les plus fréquents dans la liste.

J'ai eu l'idée de (dites moi si il y a plus simple):
1/ créer une nouvelle liste sans les doublons. (c'est l'objet de ma question): colonne X, feuille stats
2/ utiliser la fonction nb.si( plage avec doublon;cellule de la plage sans doublon): colonne Y, feuille stats

pour l'étape 1 je pourrais écrire mes lieux manuellement mais ce serait fastidieux (car la liste est grande...).
L'idée de Vandeput me facilite la vie.
Mais sa méthode ne me convient qu'à moitié car toute modification à la liste avec doublon ne sera pas automatiquement répercutée à la liste sans doublon. Je préférerais une fonction matricielle...
En plus une fois ma nouvelle liste obtenue , j'aimerais la trier. Là encore je peux le faire avec le menu tri, mais je préférerais tout automatiser ....

Merci encore
Et bonne soirée
Dernière modification par hector le 04 avr. 2007 15:28, modifié 1 fois.
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Message par Pierre-Yves Samyn »

Bonjour

Je pense que le "pilote de données" répond directement à ton besoin : liste à occurrence unique, fréquence d'apparition, actualisation et tri
Dernière modification par Pierre-Yves Samyn le 04 avr. 2007 15:42, modifié 1 fois.
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 409
Inscription : 12 févr. 2007 14:33
Localisation : Bruxelles

Message par Vandeput »

Bonjour,

Le "pilote de données" est une belle solution, mais il faut toujours "actualiser" !

Extraire par formule matricielle une liste sans doublons est faisable, mais la trier en même temps, je ne l'ai jamais vu.
De plus les formules matricielles augmentent considérablement le temps de calcul sur de grandes plages (donc, à consommer avec modération !)

Comme il faut quand même une colonne supplémentaire pour le tri, tant le faire par formule "normale".
En pièce jointe un exemple que j'ai sous la main, à adapter suivant besoins.

Il me semble que pour des villes il ne faut pas tester sur les six premiers caractères (sauf pour Saint Nazaire, Saint Tropez,...) et il faut aussi vérifier s'il n'y a pas de fautes de frappe (noms commençant par une minuscule).
Le cas échéant, c'est facilement adaptable.

Il reste toujours la première méthode, à enregistrer sous une petite macro, avec une icone à placer dans la barre d'outils.

http://user.services.openoffice.org/fr/ ... 112332.ods
andré
2.2 sous Windows XP
hector
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 25 nov. 2005 11:23

Message par hector »

Merci pour vos réponses, j' analyse ça cette semaine et je vous tiens au courant...
hector
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 25 nov. 2005 11:23

Message par hector »

Merci à vous tous: les solutions proposées sont impressionnantes ... et fonctionnent. :D
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 409
Inscription : 12 févr. 2007 14:33
Localisation : Bruxelles

Message par Vandeput »

Bonjour,

J'avais dit que je n'avais vu une formule qui permettait de filtrer et de trier, en même temps, une liste alphabétique.

C'était vrai, car depuis lors j'ai trouvé ceci :
http://www.veriti.net/forum/viewtopic.php?t=1044

C'est bien sous Excel, mais il n'y a, a priori, aucune raison que cela ne fonctionne pas sous Calc.
andré
2.2 sous Windows XP
hector
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 25 nov. 2005 11:23

Message par hector »

Merci beaucoup pour cette feuille. Malheureusement elle ne marche pas tel quel dans oOo.
Notamment il ne comprend pas "<"& dans:

Code : Tout sélectionner

NB.SI($B$5:$B$49;"<"&E27)
(ni moi non plus...)
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 409
Inscription : 12 févr. 2007 14:33
Localisation : Bruxelles

Message par Vandeput »

Bonjour,

Je suis nouveau sur Calc, j'ai donc vérifié ce bout de formule, que j'utilisais couramment sous Xl, et elle fonctionne parfaitement sous Calc.
Elle compte dans une plage (B5:B49) le nombre de valeurs inférieures (<) à la valeur en E27.
Calc, comme Xl, n'accepte pas le signe < comme élement de critère, mais en le mettant entre "" on en fait du texte et en le concaténant (&) avec une valeur numérique on en refait du numérique.

Mets un bout de ton fichier sur Ci-Joint, j'essaierai de trouver ce qui cloche.
andré
2.2 sous Windows XP
hector
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 25 nov. 2005 11:23

Message par hector »

merci pour tes précisions: effectivement calc comprend le & et ">".
Par contre, j'ai l'impression que quand la plage (ici B5:B49) est du texte, il ne fournit pas le même résultat que sous excel.
J'ai l'impression que ">" pour du texte:
avec excel, il regarde l'ordre alphabétique
avec calc, il met 0.


voici le fichier récupéré du lien de vandeput, converti en ods (j'y yai rajouté des petites bidouilles):
http://user.services.openoffice.org/fr/ ... 010151.ods
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 409
Inscription : 12 févr. 2007 14:33
Localisation : Bruxelles

Message par Vandeput »

Re,

Effectivement, sous Excel cela fonctionne, pas sous Calc.
Et je n'en ai pas (encore) trouvé la raison, mais j'ai le weekend pour y refléchir.

En C16 la formule : =NB.SI($B$5:$B$49;">"&D5) fonctionne.
Elle renvoie 25, c'est à dire le nombre de pseudos dont le code ASCII est plus grand que celui de D4.
Remplace dans la liste C@THY par CUTHY et tu obtiendras 26.
Si dans cette formule on remplace D5 par E5 on obtient 22, (3 pseudos avec code ASCII plus grand que D5 et plus petit que E5).

Bonnes fêtes de Pâques.
andré
2.2 sous Windows XP
hector
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 25 nov. 2005 11:23

Message par hector »

Exact!
Merci à toi, j'y réfléchis aussi de mon côté.
Joyeuses Pâques à toi aussi, n'y passe pas trop de temps non plus !! :wink:
hector
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 25 nov. 2005 11:23

Message par hector »

j'ai l'impression -j'espère ne pas m'être fourvoyé cette fois-ci!- que le problème vient de là:
NB.SI($B$5:$B$49;"<"&$B$5:$B$49)
la fonction EQUIV attend une matrice en 2ème argument et la formule ci-dessus ne renvoie qu'une cellule.
Dernière modification par hector le 08 avr. 2007 18:34, modifié 1 fois.
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 409
Inscription : 12 févr. 2007 14:33
Localisation : Bruxelles

Message par Vandeput »

Bonjour,

Je constate que les formules matricielles ne réagissent pas toujours de la même façon sous Calc que sous Excel, et j'en déduis, peut-être abusivement, que c'est probablement la cause du non-fonctionnement de cette formule.

Mais je ne viens pas les mains vides.
En pièce jointe une solution.
Désavantage : il faut une colonne supplémentaire.
Avantage : il peut il y avoir des cellules vides dans la plage.
Autre avantage (non négligable) : la procédure est non matricielle (ce qui raccourcit considérablement le temps de calcul pour de grandes plages).

Petit mot d'explication :
En colonne A :
NB.SI(B$5:$B$33;"<"&B$5:B$33) : renvoie le rang de la chaine de caractères
OU(B5="";NB.SI(B$5:B5;B5)>1) : 2 conditions pour ne rien renvoyer si la cellule testée est vide ou qu'elle est un doublon.
En colonne N :
On récupère la valeur par un INDEX EQUIV (un RECHERCHV fonctionne également) couplé à PETITE.VALEUR (qui fait référence au n° de la ligne) et une condition préalable pour éviter les messages d'erreur.
Pour obtenir la liste en ordre décroissant : remplacer PETITE.VALEUR par GRANDE.VALEUR.

http://user.services.openoffice.org/fr/ ... 023550.ods
andré
2.2 sous Windows XP
hector
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 25 nov. 2005 11:23

Message par hector »

Bonjour,
j'ai téléchargé l'ods:

Mauvaise nouvelle, j'ai toujours des erreurs.

Autre truc bizarre, les formules sont composées à la fois de fonctions en anglais (ex: countif), à la fois de fonctions en français (ex: si). Ceci explique peut-être cela?
Image
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 409
Inscription : 12 févr. 2007 14:33
Localisation : Bruxelles

Message par Vandeput »

Bonjour,

La solution que je t'ai proposée est celle dans les colonnes A et N.

Je ne suis pas non plus parvenu à faire fonctionner la formule matricielle de l'exemple téléchargé.
Sous Excel c'est parfait, mais sous Calc !

Je ne maitrise pas encore fort bien les matricielles sous Calc.
Je viens d'ailleurs de poster une question à ce sujet, où je rencontre le même problème.

Donc patience, le temps que mon seul neurone restant veuille bien se réveiller !
andré
2.2 sous Windows XP
hector
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 25 nov. 2005 11:23

Message par hector »

Oups , mon neurone à moi doit encore hiberner, j'avais cru que la colonne N était l'étape intermédiaire :oops:
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Message par jeanmimi »

les matricielles sous Calc
Jeff a rédigé une série de fonctions matricielles impressionnantes qui commence ici :

http://user.services.openoffice.org/fr/ ... sc-15.html
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox