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.

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

Messagepar hector » 28 Mars 2007 17:51

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   AgrandirRéduire
Henri
Matthieu
Jean
Henri
Jean
Martin


donnerait:

Code : Tout sélectionner   AgrandirRéduire
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 édition par hector le 06 Avr 2007 08:29, édité 3 fois.
hector
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 139
Inscrit le : 25 Nov 2005 12:23

Messagepar Vandeput » 28 Mars 2007 19:15

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
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 409
Inscrit le : 12 Fév 2007 15:33
Localisation : Bruxelles

Messagepar Pierre-Yves Samyn » 30 Mars 2007 15:27

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
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

Messagepar jeanmimi » 30 Mars 2007 18:14

Bonjour,

Voici quelques exemples de listes possibles dans le Tableur :
http://user.services.openoffice.org/fr/ci-joint/fichier/2007/03/30-071356.ods
LibreOffice Version : Version : 7.0.1.2 (x64)(13 septembre 2020)
Adoptopen JRE ou Oracle JRE (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15450
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Messagepar hector » 31 Mars 2007 20:37

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 édition par hector le 04 Avr 2007 16:28, édité 1 fois.
hector
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 139
Inscrit le : 25 Nov 2005 12:23

Messagepar Pierre-Yves Samyn » 01 Avr 2007 06:31

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 édition par Pierre-Yves Samyn le 04 Avr 2007 16:42, édité 1 fois.
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

Messagepar Vandeput » 01 Avr 2007 10:26

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/ci-joint/fichier/2007/04/01-112332.ods
andré
2.2 sous Windows XP
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 409
Inscrit le : 12 Fév 2007 15:33
Localisation : Bruxelles

Messagepar hector » 01 Avr 2007 15:30

Merci pour vos réponses, j' analyse ça cette semaine et je vous tiens au courant...
hector
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 139
Inscrit le : 25 Nov 2005 12:23

Messagepar hector » 04 Avr 2007 16:28

Merci à vous tous: les solutions proposées sont impressionnantes ... et fonctionnent. :D
hector
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 139
Inscrit le : 25 Nov 2005 12:23

Messagepar Vandeput » 04 Avr 2007 17:16

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
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 409
Inscrit le : 12 Fév 2007 15:33
Localisation : Bruxelles

Messagepar hector » 06 Avr 2007 09:05

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

Code : Tout sélectionner   AgrandirRéduire
NB.SI($B$5:$B$49;"<"&E27)


(ni moi non plus...)
hector
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 139
Inscrit le : 25 Nov 2005 12:23

Messagepar Vandeput » 06 Avr 2007 09:26

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
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 409
Inscrit le : 12 Fév 2007 15:33
Localisation : Bruxelles

Messagepar hector » 06 Avr 2007 11:58

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/ci-joint/fichier/2007/04/06-010151.ods
hector
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 139
Inscrit le : 25 Nov 2005 12:23

Messagepar Vandeput » 06 Avr 2007 13:06

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
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 409
Inscrit le : 12 Fév 2007 15:33
Localisation : Bruxelles

Messagepar hector » 06 Avr 2007 13:19

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
 
Message(s) : 139
Inscrit le : 25 Nov 2005 12:23

Messagepar hector » 07 Avr 2007 11:39

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 édition par hector le 08 Avr 2007 19:34, édité 1 fois.
hector
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 139
Inscrit le : 25 Nov 2005 12:23

Messagepar Vandeput » 09 Avr 2007 13:28

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/ci-joint/fichier/2007/04/09-023550.ods
andré
2.2 sous Windows XP
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 409
Inscrit le : 12 Fév 2007 15:33
Localisation : Bruxelles

Messagepar hector » 12 Avr 2007 13:09

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
hector
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 139
Inscrit le : 25 Nov 2005 12:23

Messagepar Vandeput » 12 Avr 2007 13:41

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
Vandeput
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 409
Inscrit le : 12 Fév 2007 15:33
Localisation : Bruxelles

Messagepar hector » 12 Avr 2007 13:45

Oups , mon neurone à moi doit encore hiberner, j'avais cru que la colonne N était l'étape intermédiaire :oops:
hector
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 139
Inscrit le : 25 Nov 2005 12:23

Messagepar jeanmimi » 12 Avr 2007 13:47

les matricielles sous Calc

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

http://user.services.openoffice.org/fr/forum/ftopic127-0-asc-15.html
LibreOffice Version : Version : 7.0.1.2 (x64)(13 septembre 2020)
Adoptopen JRE ou Oracle JRE (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15450
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte


Retour vers Tableur

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 22 invité(s)