[Résolu] Copier et trier 2 colonnes en conservant les correspondances

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.
Ridexpla
Fraîchement OOthentifié
Messages : 5
Inscription : 12 août 2024 19:28

[Résolu] Copier et trier 2 colonnes en conservant les correspondances

Message par Ridexpla »

Bonsoir,

Je cherche une formule concernant la fonction EQUIV.

EQUIV permet d'afficher un nombre correspondant à un autre (dans mon cas le rang).
Mais comme vous le savez (je l'ai lu plus d'une fois sur le forum), en cas de doublons, il affichera toujours et uniquement le premier.
J'ai besoin d'afficher les suivants également.

Dans mon exemple, j'ai besoin d'afficher dans la colonne J les rang correspondant à la colonne E, par rapport à la colonne C.
Hum, c'est pas très clair.
Ou pour le dire autrement, j'ai besoin d'afficher dans la colonne J, la même chose que dans la colonne H, mais sans les "/" (qui correspondent aux doublons), et de mettre la vraie correspondance à la place.

J'ai travaillé sur cette formule:

Code : Tout sélectionner

=SI(E5=E4;EQUIV(E5;C2:C21;0);EQUIV(E5;C2:C21;0))
Mais elle n'est pas finie. Il faudrait remplacer le C2 de la première EQUIV par ce que je suis venu chercher sur ce forum :)

Maintenant si vous avez d'autres idées, je vous écoute.
Essayez de faire au plus simple.
Merci.

Voilà le fichier:
Pour Help.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Ridexpla le 19 août 2024 06:45, modifié 3 fois.
OpenOffice 4.1.10 sous Windows 10
Jeff
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 10007
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: EQUIV afficher doublons (pas que le 1er)

Message par Jeff »

Bonjour et bienvenue,

Pas de version AOO sous la main pour tester avec ton fichier joint, communément, pour éviter les doublons, on ajoute souvent l'indice de ligne divisé par 1000, un truc du genre :

Code : Tout sélectionner

=Ta_formule+(LIGNE(A1)/1000)
Voir si cela est applicable dans ton cas (la formule avec EQUIV devra également rechercher cette valeur)

A +
À lire avant tout !

Pour télécharger Apache OpenOffice

AOO 4.1.16 / Debian 13 "Trixie" / Xfce
AOO 4.1.15 / Debian 11 "Bullseye" / Cinnamon
Ridexpla
Fraîchement OOthentifié
Messages : 5
Inscription : 12 août 2024 19:28

Re: EQUIV afficher doublons (pas que le 1er)

Message par Ridexpla »

Merci pour ta réponse Jeff.

Alors j'ai déjà vu d'autres post où ils citaient cette technique, mais je n'y ai rien compris, c'est pour cela que j'ai fini par créer mon propre post.
J'ai essayé ce que tu dis, et le résultat n'est pas concluant, il est affiché 4.001 maintenant.
Et comment je fais pour l'ajouter à EQUIV ?
Je précise que je suis débutant.

Je ne cherche pas exactement à éviter les doublons, mais à afficher leur correspondance.
Par exemple, pour le premier doublon 60 en E6, que la valeur affichée en J6 (correspondant au rang de 60), affiche 5, et pas 4.
E5 = 60, = 4 en J5
E6 = 60, = 5 en J6 (puisque c'est le premier doublon de 60)

Alors cela m'a fait penser à autre chose, et j'ai essayé cette formule (en remplaçant un 0 par 1):

Code : Tout sélectionner

=SI(E6=E5;EQUIV(E6;C2:C21;1);EQUIV(E6;C2:C21;0))
Et ça a fonctionné pour J5 et J6 !
Mais malheureusement pas pour les autres doublons plus bas, c'était donc une fausse piste.

Voilà le fichier
Pour Help.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.10 sous Windows 10
Ridexpla
Fraîchement OOthentifié
Messages : 5
Inscription : 12 août 2024 19:28

Re: EQUIV afficher doublons (pas que le 1er)

Message par Ridexpla »

Ok apparemment je vous demande la lune ...

On va donc simplifier, parce qu'après avoir passé TOUTE mes soirées de cette semaine, et essayer au moins 50 combinaisons différentes :marto: , ça commence à chauffer sévère :fou:


Pouvez-vous svp, simplement me fournir une formule qui permettrait de :
- copier les deux colonnes en B2 à C46
- coller en E2 à F46
- MAIS, en triant par rapport à la colonne C

La difficulté réside dans le fait qu'il y a des doublons dans la colonnes C, et que chaque doublons à ça propre correspondance dans la colonne B (qui doit être affichée).

Merci.
Pour Help.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.10 sous Windows 10
Pagalou
Membre hOOnoraire
Membre hOOnoraire
Messages : 105
Inscription : 07 août 2020 12:34

Re: Copier et trier 2 colonnes en conservant les conrrespondances

Message par Pagalou »

Salut,
est-ce que ce que tu cherches doit ressembler à ça ?
Help_essai.png
Je l'ai obtenu en faisant un tri
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Apache OpenOffice 4.1.15
Windows 11 Pro
Ridexpla
Fraîchement OOthentifié
Messages : 5
Inscription : 12 août 2024 19:28

Re: Copier et trier 2 colonnes en conservant les conrrespondances

Message par Ridexpla »

Merci Pagalou,

Oui ça doit ressembler à ça.
Sauf que je l'imagine plutôt en 4 colonnes (copie des 2 premières colonnes, avant de trier).

Alors si tu parles du tri qu'on obtient en faisant :
- sélectionner les deux colonnes
- cliquer sur le bouton "Tri décroissant"

Effectivement ça fonctionne, et c'est bien ça que je recherche.
MAIS, pour une raison que j'ignore, il y a plein d'erreurs !
EDIT : 2ème problème : si je rajoute des nouvelles données plus bas, l’ordre ne se reclasse pas automatiquement.
Voilà un aperçu (j'ai indiqué les erreurs en bleu):
Capture.JPG
Pour Help.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.10 sous Windows 10
Pagalou
Membre hOOnoraire
Membre hOOnoraire
Messages : 105
Inscription : 07 août 2020 12:34

Re: Copier et trier 2 colonnes en conservant les correspondances

Message par Pagalou »

Salut,
je ne sais pas si cette méthode te convient car elle demande un peu de "manip" mais il me semble qu'elle fonctionne.
J'ai tout simplement copié les deux colonnes B et C et j'ai fait un "collage spécial" avec juste les valeurs(et le format) en K et L. Ensuite j'ai sélectionné ces plages et fait le tri décroissant avec le menu Données.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Apache OpenOffice 4.1.15
Windows 11 Pro
Avatar de l’utilisateur
Arnault
Membre hOOnoraire
Membre hOOnoraire
Messages : 188
Inscription : 01 avr. 2011 13:31

Re: Copier et trier 2 colonnes en conservant les conrrespondances

Message par Arnault »

Ridexpla a écrit : 17 août 2024 09:51 MAIS, pour une raison que j'ignore, il y a plein d'erreurs !
Parce que vos formules colonnes C et F font appel à des références relatives et non absolues.
EDIT : 2ème problème : si je rajoute des nouvelles données plus bas, l’ordre ne se reclasse pas automatiquement.
Ce n'est pas possible si vous procédez par copier/coller de données puis tri de ces données et cela n'apparait pas dans votre demande initiale.

Je vous propose une solution ci-jointe qui :
Colonne A : indique le rang de la valeur trouvée colonne C

Code : Tout sélectionner

=RANG(C2;$C$2:$C$46)
Colonne C : nombre de fois où la valeur de la colonne B est trouvée dans la plage $D$48:$I$10011. Remarquez les $ qui indiquent une référence absolue. A ce nombre, j'ajoute le numéro de la ligne divisée par 1000 pour différentier les ex-aequos, la fonction rang indique le même classement pour deux ex-aequos et "saute" le classement suivant. En formatant la cellule sans décimale, ces millièmes n'apparaissent pas : cf cellule C2

Code : Tout sélectionner

=NB.SI($D$48:$I$10011;B2)+LIGNE()/1000
Colonne E : recherche de la valeur de la ligne -1 (donc 1 pour la ligne 2) dans la plage $A$2:$C$46 et renvoie de la valeur de la colonne B correspondante.

Code : Tout sélectionner

=RECHERCHEV(LIGNE()-1;$A$2:$C$46;2;0)
Colonne F : formule analogue à celle de la colonne C sans l'ajout de millième qui n'est plus nécessaire, on recherche cette fois le nombre de valeurs de la colonne E

Le fait de classer des nombres n'aide pas à comprendre le problème, il est très facile de confondre le nombre et le rang dans votre problème.

Code : Tout sélectionner

=NB.SI($D$48:$I$10011;E2)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 25.2.3.2 (x64) - OpenOffice 4.1.15
Windows 11 pro 64 23H2 (domicile) 24H2 (travail)

- Modifier sa signature - Joindre un fichier - Clore un sujet résolu
Ridexpla
Fraîchement OOthentifié
Messages : 5
Inscription : 12 août 2024 19:28

Re: Copier et trier 2 colonnes en conservant les correspondances

Message par Ridexpla »

Salut,
je ne sais pas si cette méthode te convient car elle demande un peu de "manip" mais il me semble qu'elle fonctionne.
J'ai tout simplement copié les deux colonnes B et C et j'ai fait un "collage spécial" avec juste les valeurs(et le format) en K et L. Ensuite j'ai sélectionné ces plages et fait le tri décroissant avec le menu Données.
Merci Pagalou, c'est bien le résultat souhaité, sans les erreurs.
Mon erreur était de ne pas passer par le collage spécial (j'avais fait un Ctrl-C).
Ce n'est pas possible si vous procédez par copier/coller de données puis tri de ces données et cela n'apparait pas dans votre demande initiale.

Je vous propose une solution ci-jointe qui :
Merci Arnault, parfait, cela permet en plus l'automatisation.

Tous les problèmes sont bien résolus ! Merci à tous les deux :super:

Mais avant de modifier l'entête, y a-t-il une solution pour déplacer la colonne A en D ?
C'est pour une question de compréhension dans le temps uniquement.
J'ai bien étudié toutes les formules, et j'ai eu beau essayer dans tous les sens, cela semble impossible.

EDIT: c'est bon j'ai trouvé, encore merci.
OpenOffice 4.1.10 sous Windows 10
Avatar de l’utilisateur
Arnault
Membre hOOnoraire
Membre hOOnoraire
Messages : 188
Inscription : 01 avr. 2011 13:31

Re: Copier et trier 2 colonnes en conservant les correspondances

Message par Arnault »

Ridexpla a écrit : 18 août 2024 19:13
Mais avant de modifier l'entête, y a-t-il une solution pour déplacer la colonne A en D ?
C'est pour une question de compréhension dans le temps uniquement.
J'ai bien étudié toutes les formules, et j'ai eu beau essayer dans tous les sens, cela semble impossible.

EDIT: c'est bon j'ai trouvé, encore merci.
La solution pour les personnes parcourant ce fil et qui la voudrait :
il faut copier la formule de la colonne A dans la colonne de votre choix

Code : Tout sélectionner

=RANG(C2;$C$2:$C$46)
et non pas la cellule qui modifie la valeur cherchée de C2 en I2 si on copie la cellule dans la colonne G par exemple, puisque j'avais indiqué un valeur relative :

Code : Tout sélectionner

=RANG(I2;$C$2:$C$46)
Il est aussi possible de modifier la formule en colonne A

Code : Tout sélectionner

=RANG($C2;$C$2:$C$46)
pour pouvoir copier la cellule complète dans la colonne de votre choix. Le $ devant le C fixe une référence absolue à la colonne C qui n'est donc pas modifiée par le copier/coller.
LibreOffice 25.2.3.2 (x64) - OpenOffice 4.1.15
Windows 11 pro 64 23H2 (domicile) 24H2 (travail)

- Modifier sa signature - Joindre un fichier - Clore un sujet résolu