[Résolu] incompatibilité fonction INDEX et tri alphabétique

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.

[Résolu] incompatibilité fonction INDEX et tri alphabétique

Messagepar pifpaf » 15 Mai 2019 18:37

Bonjour à tous,

Pour des raisons un peu longues à expliquer, j'ai besoin de trier par ordre alphabétique via « données => triées » des données issues de la fonction INDEX. Malheureusement, cela ne semble pas possible (mais assez logique) puisque les données sont « imposées » par la fonction alors que l'ordre alphabétique changerait le contenu de la cellule imposait par la fonction INDEX.
Existe-t-il une fonction pour convertir les données issues d'INDEX en « données brutes » alors triables …. (au besoin en passant par une colonne intermédiaire qui pourrait être masquée).
Je joins un exemple en pièce-jointe à ce post.
D'avance merci à tous.
Pièces jointes
Fonction Index.ods
(11.14 Kio) Téléchargé 18 fois
Dernière édition par Oukcha le 08 Juil 2019 14:19, édité 1 fois.
Raison: Balisage
OpenOffice 4.1.5
Win 7
pifpaf
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 13
Inscrit le : 06 Mai 2019 18:56

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar OOotremer971 » 15 Mai 2019 19:38

Bonjour,
pifpaf a écrit:Existe-t-il une fonction pour convertir les données issues d'INDEX en « données brutes » alors triables

Là comme ça, je ne vois pas trop à par un copier/collage spécial>>Texte seulement.

Mais si le contexte le permet, tu peux trier par ordre alphabétique par formule (matricielle) , maerci Jean-Louis Cadeillan :super: :
Code : Tout sélectionner   AgrandirRéduire
=INDEX(ville;EQUIV(MIN(SI(NB.SI($C$1:C1;ville)=0;SI(ville<>"";NB.SI(ville;"<"&ville);"")));SI(NB.SI($C$1:C1;ville)=0;SI(ville<>"";NB.SI(ville;"<"&ville);""));0))

Voir colonne C du fichier joint :
A+
Pièces jointes
Fonction Index_Mod1.ods
(10.17 Kio) Téléchargé 15 fois
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Ubuntu
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2096
Inscrit le : 16 Avr 2010 14:31

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar Jean-Louis Cadeillan » 15 Mai 2019 21:47

Bonsoir,
Si tu n'as pas de doublons dans ta liste réelle (deux fois Lille, par exemple), tu peux utiliser cette variante :
Code : Tout sélectionner   AgrandirRéduire
=SI(LIGNE() > NBVAL(ville);"";INDEX(ville;EQUIV(PETITE.VALEUR(SI(ville<>"";NB.SI(ville;"<="&ville));LIGNE());NB.SI(ville;"<="&ville);0)))
Sinon, comme dit OOotremer971 (que je salue au passage !) le copier/collage spécial peut être une solution mais même si c'est une macro qui le déclenche, il faudra faire quand même le tri derrière... à moins d'incorporer le tri dans la macro, réussir à la déclencher sur la surveillance d'évènement du style « quand la liste est modifiée »... je ne sais pas si le jeu en vaut la chandelle !
Cordialement,
Jean-Louis
Pièces jointes
pifpaf_20190515_JLC01.ods
(16.77 Kio) Téléchargé 16 fois
Dernière édition par Jean-Louis Cadeillan le 17 Mai 2019 00:08, édité 1 fois.
LibO 6.2.8.2 (x64 avec Java 1.8.0_231) et AOO 4.1.6 (avec Java x32 1.8.0_201), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
ManitOOu
ManitOOu
 
Message(s) : 4482
Inscrit le : 03 Jan 2009 00:56

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar pifpaf » 15 Mai 2019 23:17

Bonsoir à vous deux,

En cette heure avancée de la nuit, mon message sera bref et me conduit à vous remercier pour les réponses apportées. Malheureusement le temps me manque pour tester dès ce soir vos propositions. En revanche, je vais avoir des doublons dans les listes, ce qui complique ...... car sinon j'avais trouvé une formule assez simple pour arriver à mon but. En plus (sinon ce ne serait pas drôle) je voulais ordonner le tri en croissant sur une première colonne et en deuxième critère une seconde ... d'où l'option assez simpliste du tri via données trier. Je voyais bien une macro faire ça (avec recourt éventuel au copier coller) avec un déclenchement auto à l'activation de l'onglet concerné. Le Pb du copier coller c'est la zone à définir mais bon ... la chose me semble assez compliqué. Je vais continuer à explorer le cas et je vous tiens au courant.

Une nouvelle fois, un grand merci aux contributeurs :)
OpenOffice 4.1.5
Win 7
pifpaf
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 13
Inscrit le : 06 Mai 2019 18:56

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar Hubert Lambert » 16 Mai 2019 14:55

Bonjour,

On trouve, sur le forum anglophone, un petite perle qui pourrait t'être utile. Il s'agit d'une mini-extension qui ajoute une fonction matricielle PYSORT, qui renvoie triée (suivant les critères donnés) la plage passée en paramètre.
Pour l'utiliser :
- télécharger le fichier XPySort.zip et le renommer en XPySort.oxt (source : https://forum.openoffice.org/en/forum/v ... 90#p252090);
- double-cliquer sur le fichier XPySort.oxt et accepter l'installation de l'extension;
- redémarrer le programmer et utiliser la fonction. Pour rappel, s'agissant d'une fonction matricielle, il faudra valider par Ctrl+Maj+Entrée.

La signature de la fonction est la suivante :
Code : Tout sélectionner   AgrandirRéduire
PYSORT(inRange, Fields, HasHeaders, ByRows, CollationType)

- inRange = la plage à trier;
- Fields = les paramètres de tri : une matrice pour les colonnes à trier (index de départ à 0), une autre pour les options;
- HasHeaders = en-tête ou pas (défaut);
- ByRows = tri vertical (défaut) ou horizontal;
- CollationType = type de collation pour les chaînes de caractères.
Je reviendrai pour détailler dès que j'ai un peu plus de temps :wink: . (Cf. ajout ci-dessous)

Je joins un exemple très rapide pour illustrer la chose (qui ne marchera évidemment qu'une fois l'extension installée). Dans cet exemple, le tableau est trié en ordre croissant sur la 2e colonne ("1;"") puis décroissant sur la première ("0;"r", "r" pour "reverse", c'est-à-dire "décroissant").

 Ajout : J'ai modifié le fichier joint pour y intégrer quelques précisions sur les différentes options de la formule PYSORT.
Les options de tri sont définies dans un tableau séparé, ce qui permet de les tester plus aisément. 

Cordialement.
Pièces jointes
pifpaf.ods
v2, intégrant quelques détails sur les options de la fonction PYSORT
(13.31 Kio) Téléchargé 19 fois
Dernière édition par Hubert Lambert le 17 Mai 2019 09:32, édité 6 fois.
AOOo 4.1.2 sur Win7
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
 
Message(s) : 1127
Inscrit le : 06 Avr 2016 08:26

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar pifpaf » 16 Mai 2019 21:47

Bonsoir Hubert Lambert,

Merci beaucoup à toi pour ta réponse que je juge assez prometteuse !! :super: Je reviens sur le projet durant le week-end car pour le moment le temps me manque. Je pense que la solution que tu proposes à travers l'extension pourrait intéresser bon nombre de personnes car le sujet du tri alphabétique revient régulièrement mais souvent les solutions sont assez liées à du bricolage. Avec ce que tu proposes cela devrait être beaucoup simple et beaucoup plus fiable.

A suivre et encore merci à toi :bravo: :bravo: :bravo:
OpenOffice 4.1.5
Win 7
pifpaf
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 13
Inscrit le : 06 Mai 2019 18:56

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar Jean-Louis Cadeillan » 17 Mai 2019 00:43

Bonsoir,
Ci-joint un autre bricolage qui fait le tri sur deux critères hiérarchisés.
pifpaf a écrit:je vais avoir des doublons dans les listes, ce qui complique
En fait, non ; la formule de mon message précédent ne permettait pas d'éliminer les doublons, or c'est justement ce que tu veux (ne pas éliminer les doublons), puisque tu veux trier sur un second critère.
Cordialement,
Jean-Louis
Pièces jointes
pifpaf_20190515_JLC02.ods
(29.59 Kio) Téléchargé 17 fois
LibO 6.2.8.2 (x64 avec Java 1.8.0_231) et AOO 4.1.6 (avec Java x32 1.8.0_201), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
ManitOOu
ManitOOu
 
Message(s) : 4482
Inscrit le : 03 Jan 2009 00:56

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar pifpaf » 21 Mai 2019 18:16

Bonjour à tous,

Un peu de retard pour revenir sur le sujet mais le temps me manque en ce moment !! Merci à vous tous pour vos contributions.
Hubert Lambert : je n'ai malheureusement pas réussi à installer l'extension ... un dossier avec plusieurs fichiers mais aucun ne se lance ni reconnu (probablement un bogue de ma part). La formule semble assez aisée à mettre en oeuvre mais je n'ai pas pu tester au regard de l'impossibilité d'installer l'extension.
Jean-Louis Cadeillan : Une nouvelle fois, un problème => une solution !!! lol Je crois que ton "bricolage" correspond parfaitement à ce que je cherche. Malheureusement, en testant pour ajouter une ligne supplémentaire (car les données sont amenées à évoluer) le nombre de lignes reste bloqué à 50 (mais le tri s'actualise bien) donc peut-être un bidouillage de plus et hop ..... :D En revanche, j'ai cherché à comprendre la (heu ... les) ligne de code .... bon ben je dois reprendre ça à tête reposée .....

Dans tous les cas, MERCI à vous !!!!
OpenOffice 4.1.5
Win 7
pifpaf
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 13
Inscrit le : 06 Mai 2019 18:56

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar Hubert Lambert » 21 Mai 2019 19:22

pifpaf a écrit:je n'ai malheureusement pas réussi à installer l'extension ... un dossier avec plusieurs fichiers mais aucun ne se lance ni reconnu (probablement un bogue de ma part)

As-tu bien renommé le fichier XPySort.zip en XPySort.oxt, comme expliqué plus haut ?
AOOo 4.1.2 sur Win7
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
 
Message(s) : 1127
Inscrit le : 06 Avr 2016 08:26

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar Jean-Louis Cadeillan » 21 Mai 2019 21:59

Bonsoir,
pifpaf a écrit:le nombre de lignes reste bloqué à 50
C'est paramétrable : Insertion > Noms > Définir et change l'étendue des plages pour Code et ville.
Combin est juste une formule nommée qui vaut :
Code : Tout sélectionner   AgrandirRéduire
ville&"²"&Code
² est un caractère choisi pour sa rareté (dans le sens où il ne doit normalement pas être rencontré dans les données elles-mêmes) et qui permet à la fonction TROUVE() de repérer ce qui est avant (la ville) et ce qui est après (l'autre donnée).
Pour recopier une formule matricielle (celle des colonnes bleu-vert de Feuille2) vers le bas :
  • il suffit de positionner la souris dans le coin inférieur droit de la dernière cellule (par exemple C50) : le curseur se transforme en croix (+), puis, il faut cliquer/glisser vers le bastout en appuyant simultanément sur la touche Ctrl ;
  • une autre manière de faire est de copier la cellule initiale (Ctrl+C), puis de sélectionner la plage des cellules qui doivent contenir la même formule, puis de coller (Ctrl+V) .
Si la mise à jour ne se fait pas immédiatement après avoir étendu les plages et les formules, tu peux faire un recalcul forcé par Ctrl+Maj+F9. On pourrait encore faire un bidouillage dans la formule pour éviter cela, mais bon, on va éviter la goutte qui fait déborder le vase...
pifpaf a écrit:j'ai cherché à comprendre la (heu ... les) ligne de code
Je ne sais pas si tu as remarqué, mais toutes les formules comprennent la partie :
Code : Tout sélectionner   AgrandirRéduire
NB.SI(Combin;"<="&Combin)
C'est le cœur de la formule. Considère-la comme matricielle. « <= » compare une chaîne de cette matrice avec toutes les autres chaînes de la matrice ; NB.SI() retourne le nombre de fois où la comparaison est vraie, donc si la chaîne de caractères est en tête de classement alphabétique, NB.SI() retournera une grande valeur, si elle est en queue de classement, NB.SI() retournera une petite valeur. C'est sur ce nombre que va se faire le classement, grâce à la fonction PETITE.VALEUR(). Voilà quelques clés pour défricher la formule...
Ci-joint une version à 100 lignes, considère-là comme un corrigé de ce que tu dois obtenir à partir de celle à 50.
Cordialement,
Jean-Louis
Pièces jointes
pifpaf_20190515_JLC03.ods
(26.89 Kio) Téléchargé 14 fois
Dernière édition par Jean-Louis Cadeillan le 22 Mai 2019 05:41, édité 3 fois.
LibO 6.2.8.2 (x64 avec Java 1.8.0_231) et AOO 4.1.6 (avec Java x32 1.8.0_201), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
ManitOOu
ManitOOu
 
Message(s) : 4482
Inscrit le : 03 Jan 2009 00:56

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar pifpaf » 21 Mai 2019 22:01

Re bonsoir Hubert Lambert,

Pour répondre à ta question, je pense que fais ce qu'il faut mais .... peut-être fais-je une erreur. Je télécharge le dossier (un zip auto-extractible) qui contient plusieurs fichiers. Lorsque je le renomme, cela ne change rien il reste en .zip ... je fais via le clic droit renommer mais il se contente de rajouter .oxt sans changer d'icône ou autre ... L'erreur vient probablement de là mais je vois pas comment faire autrement :(
OpenOffice 4.1.5
Win 7
pifpaf
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 13
Inscrit le : 06 Mai 2019 18:56

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar pifpaf » 21 Mai 2019 22:12

Bonsoir Jean-Louis

Ma réponse s'intercale avec celle faite à Hubert Lambert. Comme à ce dernier, je t'adresse un GRAND MERCI, pour tout le temps passé à aider ces illustres inconnus toujours à la recherche de solutions à leurs problèmes...... :fou: Une réponse très complète qui mérite un peu de temps pour comprendre cette formule dont tu me donnes les clefs. Je dois avouer que par manque de temps ce ne sera pas aujourd'hui ni demain, mais promis j'y reviens pour essayer de comprendre et avancer dans ma découverte des innombrables possibilités offertes par Calc ....

En attendant MERCI pour tout !!!! :bravo:

La modération a écrit:Merci de ne pas poster plusieurs messages à la suite.
Vous pouvez très bien répondre à plusieurs personnes dans le même message.
Et vous disposez d'un bouton Éditer en haut à droite de chaque message et d'un autre bouton ajout si vous désirez ajouter un complément lorsqu'il n'y a pas de réponse.
OpenOffice 4.1.5
Win 7
pifpaf
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 13
Inscrit le : 06 Mai 2019 18:56

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar Dude » 22 Mai 2019 07:59

pifpaf a écrit:je fais via le clic droit renommer mais il se contente de rajouter .oxt sans changer d'icône ou autre ... L'erreur vient probablement de là mais je vois pas comment faire autrement

Forcément si les extensions de fichier sont masquées par Windows, ta procédure ne fonctionnera pas.
no_problemo.gif
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20939
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar pifpaf » 22 Mai 2019 19:07

Bonsoir à tous,

Dude tu m'as effectivement donné la solution pour l'extension .... merci à toi.
Hubert Lambert, je vais pouvoir tester la solution proposée à nouveau merci !!
OpenOffice 4.1.5
Win 7
pifpaf
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 13
Inscrit le : 06 Mai 2019 18:56

Re: incompatibilité entre fonction INDEX et le tri alphabéti

Messagepar Oukcha » 08 Juil 2019 14:18

Bonjour,

Plus de 30 jours plus tard, sans nouvelle de votre part, on peut en déduire que le problème est résolu ou ne se reproduit plus.

Merci de baliser par vous-même la prochaine fois.

Un remerciement fait aussi plaisir aux bénévoles qui vous ont consacré de leur temps.
La politesse fait également partie de la philosophie du logiciel libre.

En cas d'erreur, contactez l'équipe de modération pour la réouverture du fil.
                                        
:arrow: A lire avant tout ! Image
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
 
Message(s) : 3087
Inscrit le : 06 Oct 2008 09:03


Retour vers Tableur

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : MSN [Bot] et 12 invité(s)