[Résolu][Calc] contraire de la fonction MODE

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Répondre
Avatar de l’utilisateur
DARDI
Membre hOOnoraire
Membre hOOnoraire
Messages : 101
Inscription : 14 déc. 2007 09:01
Localisation : BORDEAUX

[Résolu][Calc] contraire de la fonction MODE

Message par DARDI »

Bonjour,

La fonction MODE renvoie la valeur qui apparaît le plus souvent dans une plage de données.
J'ai réussi, grâce à l'aide de la communauté (https://forum.openoffice.org/fr/forum/v ... =4&t=55254), à faire le "contraire", c.a.d. retourner la valeur qui apparait le moins souvent.
Cela fonctionne très bien sur une petite base de données. Mais dès que la base est trop importante, l'ouverture du fichier est très longue ainsi qui les tris et autres opérations presque interminables...
Donc l'idée est d'écrire une macro qui permettrait d'avoir un fichier "manipulable".
Étant un peu limité dans le développement de macro, je fais appel à la communauté pour avoir quelques pistes.

Merci par avance.
Dernière modification par DARDI le 24 août 2017 15:30, modifié 2 fois.
Version: 5.2.2.2 (x64) sous Windows 7 Professionnel
Avatar de l’utilisateur
Grenouille
ManitOOu
ManitOOu
Messages : 3223
Inscription : 13 janv. 2006 17:21
Localisation : Chasseneuil-du-Poitou / Futuroscope

Re: [Calc] contraire de la fonction MODE

Message par Grenouille »

Bonjour,
DARDI a écrit :Cela fonctionne très bien sur une petite base de données
Calc est un tableur et pas une base de données.
C'est le module Base qu'il te faut dans ce cas.
http://www.openoffice.org/fr/Documentat ... cABase.pdf

A+
OpenOffice 4.1.5 et LibreOffice 5.3.4 (par obligation) sous Windows 7
Avatar de l’utilisateur
DARDI
Membre hOOnoraire
Membre hOOnoraire
Messages : 101
Inscription : 14 déc. 2007 09:01
Localisation : BORDEAUX

Re: [Calc] contraire de la fonction MODE

Message par DARDI »

Désolé, je me suis mal exprimé... en fait ce que j'appelle improprement base de données, est en réalité un tableur.
Version: 5.2.2.2 (x64) sous Windows 7 Professionnel
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc] contraire de la fonction MODE

Message par Jeff »

Bonjour à tous,

Dans ton sujet en section Tableur, je reprends la fonction FREQUENCE proposée par Hubert, avec un jeu de données sur 1024 colonnes, le résultat est instantané (voir classeur joint), sur combien de lignes et de colonnes travaille-tu ?

A +
Pièces jointes
DARDI_HL_Jeff.ods
(17.73 Kio) Téléchargé 61 fois
Avatar de l’utilisateur
DARDI
Membre hOOnoraire
Membre hOOnoraire
Messages : 101
Inscription : 14 déc. 2007 09:01
Localisation : BORDEAUX

Re: [Calc] contraire de la fonction MODE

Message par DARDI »

Merci.

J'ai du mal avec la variable "données" dans la formule FREQUENCE... d'où vient-elle ?
Je travaille sur 150 colonnes et 10 000 lignes.

Cordialement
Version: 5.2.2.2 (x64) sous Windows 7 Professionnel
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc] contraire de la fonction MODE

Message par Jeff »

DARDI a écrit : d'où vient-elle ?
C’est un nom, tu peux voir à quoi il est attribué via le menu Insertion > Noms

Tu cherches le minimum de répétition par lignes, ou bien pour toute la plage ?
Avatar de l’utilisateur
DARDI
Membre hOOnoraire
Membre hOOnoraire
Messages : 101
Inscription : 14 déc. 2007 09:01
Localisation : BORDEAUX

Re: [Calc] contraire de la fonction MODE

Message par DARDI »

YES... j'avais oublié.
Je cherche le minimum de répétition par ligne.
En fait, j'aimerai avoir en bout de ligne, une cellule m'indiquant la valeur qui apparait le moins souvent.
Version: 5.2.2.2 (x64) sous Windows 7 Professionnel
Avatar de l’utilisateur
DARDI
Membre hOOnoraire
Membre hOOnoraire
Messages : 101
Inscription : 14 déc. 2007 09:01
Localisation : BORDEAUX

Re: [Calc] contraire de la fonction MODE

Message par DARDI »

Lorsque je saisie cette expression : $ligne.$AHH$1:$AMJ$1 et valide, je me retrouve avec ceci : $#REF !.$AHH$1:$#REF !.$AMJ$1
Je ne comprends pas...
Version: 5.2.2.2 (x64) sous Windows 7 Professionnel
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc] contraire de la fonction MODE

Message par Hubert Lambert »

Bonjour,

Ci-joint le fichier avec les formules adaptées en fonction des dernières précisions :wink: .
Cordialement.
Pièces jointes
DARDI_HL_2.ods
(39.65 Kio) Téléchargé 53 fois
AOOo 4.1.7 sur Win10
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)
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc] contraire de la fonction MODE

Message par Jeff »

Le problème est que je n’arrive pas à obtenir une matrice en ligne avec la fonction FREQUENCE :mrgreen:

Si on reste avec des formules, je te propose :

Code : Tout sélectionner

=INDEX($EV$1:$FJ$1;1;EQUIV(MIN(NB.SI(A4:ET4;$EV$1:$FJ$1));NB.SI(A4:ET4;$EV$1:$FJ$1);0))
à valider matriciellement

$EV$1:$FJ$1 contient le jeu de données.
En cas de doublon, c’est la première valeur du jeu de données qui est renvoyée.

Le résultat est un classeur assez poussif à l’ouverture et à la fermeture pour 10 000 lignes, par contre, les modifications lignes par ligne sont actualisée instantanément.

À tester :
DARDI_Jeff_allegee2.ods
Nouvelle version avec légère correction sur MFC
(268.04 Kio) Téléchargé 73 fois
Sinon, je doute pas que tu auras une réponse par macro :)
 Ajout : Bonjour Hubert :) 
A +
Dernière modification par Jeff le 23 août 2017 10:26, modifié 1 fois.
Avatar de l’utilisateur
DARDI
Membre hOOnoraire
Membre hOOnoraire
Messages : 101
Inscription : 14 déc. 2007 09:01
Localisation : BORDEAUX

Re: [Calc] contraire de la fonction MODE

Message par DARDI »

Bonjour,

Merci Hubert... mais j'ai toujours le même souci, lorsque j'entre : $ligne.$A2:$ET2, après validation je me retrouve avec : $#REF !.$A2:$#REF !.$ET2

J'ai trouvé mon erreur... c'était le nom de ma feuille qui n'était pas cohérent.

Par contre, comment fais-tu, Hubert, pour "étirer" la formule aux lignes suivantes ?
Dernière modification par DARDI le 23 août 2017 11:14, modifié 1 fois.
Version: 5.2.2.2 (x64) sous Windows 7 Professionnel
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc] contraire de la fonction MODE

Message par Hubert Lambert »

Jeff a écrit :Le problème est que je n’arrive pas à obtenir une matrice en ligne avec la fonction FREQUENCE :mrgreen:
[...]
 Ajout : Bonjour Hubert :) 
:D
DARDI a écrit :j'ai toujours le même souci, lorsque j'entre : $ligne.$A2:$ET2, après validation je me retrouve avec : $#REF !.$A2:$#REF !.$ET2
La référence n'étant pas absolue pour les lignes, il faut être attentif au moment de définir la plage nommée, puisque la référence sera relative à la cellule active au moment de la définir. Ainsi, si tu entres "$ligne.$A2:$ET2" en ayant le curseur sur la ligne 4, la plage nommée aura en ligne 3 la référence "$ligne.$A1:$ET1" tandis que, pour les deux premières lignes, la plage pointera "dans le vide".
Au moment de valider la plage nommée avec une formule comme "$ligne.$A2:$ET2", assure-toi d'être sur la même ligne, c'est-à-dire en ligne 2.
Cordialement.
AOOo 4.1.7 sur Win10
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
DARDI
Membre hOOnoraire
Membre hOOnoraire
Messages : 101
Inscription : 14 déc. 2007 09:01
Localisation : BORDEAUX

Re: [Calc] contraire de la fonction MODE

Message par DARDI »

Désolé... mais je n'arrive pas à faire fonctionner ta formule dans mon fichier.
Par ailleurs, comment fais-tu, Hubert, pour "étirer" la formule aux lignes suivantes ?

Merci.
Pièces jointes
7-Temp-1.ods
(24.24 Kio) Téléchargé 43 fois
Version: 5.2.2.2 (x64) sous Windows 7 Professionnel
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Calc] contraire de la fonction MODE

Message par Hubert Lambert »

La plage nommée "freq" doit ressembler à ceci :

Code : Tout sélectionner

FREQUENCE(données;LIGNE($A$1:$A$100))
Elle sert de tableau de référence à la fonction FREQUENCE et doit démarrer de la plus petite valeur à prendre en compte (1 a priori) jusqu'à la plus grande (78 dans ton exemple).

Mais tes lignes contiennent de nombreux 0 : faut-il en tenir compte ?
S'il faut aussi compter ces 0, adapte les formules comme ceci :

Code : Tout sélectionner

FREQUENCE(données;LIGNE($A$1:$A$150)-1)
et

Code : Tout sélectionner

= EQUIV(MIN(SI(freq>0;freq));freq;0)-1
AOOo 4.1.7 sur Win10
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
DARDI
Membre hOOnoraire
Membre hOOnoraire
Messages : 101
Inscription : 14 déc. 2007 09:01
Localisation : BORDEAUX

Re: [Calc] contraire de la fonction MODE

Message par DARDI »

Bonjour Hubert,

Merci, cela fonctionne très bien, rapide et donne, comme la fonction MODE, la valeur la plus petite correspondant au critère, cela répond parfaitement à mes attentes.
Par contre, pour ma culture perso, peux-tu m'éclairer sur le tableau de référence de la fonction FREQUENCE ?
Ma crainte était qu'elle écrase mes données situées dans ces cellules... ce qui n'ait pas le cas.
Comment est-ce possible que des cellules soient utilisées "deux" fois ?

Cordialement.
Version: 5.2.2.2 (x64) sous Windows 7 Professionnel
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc] contraire de la fonction MODE

Message par Jeff »

Tu peux tout à fait nommer une formule qui fait référence à =A1

Ici, Hubert nomme Données une formule qui fait référence à =$ligne.$A1:$ET1 (lorsque tu visualises le nom alors que la cellule active est sur la 1ere ligne du classeur)
À noter que les colonnes sont en références absolues (précédées du signe $) alors que les lignes sont relatives : le nom Données va donc incrémenter les numéro de ligne, et cette formule nommée va donner le contenu de $A1:$ET1 lorsqu’elle est validée sur la première ligne, puis $A2:$ET2 lorsqu’elle est recopiée sur la seconde ligne etc...
:arrow: Hubert crée ainsi le jeu de données, un jeu par lignes.

Code : Tout sélectionner

FREQUENCE(données;LIGNE($A$1:$A$100))
La fonction fréquence ayant donc un jeu de données, la formule LIGNE($A$1:$A$100) va générer les chiffres de 1 à 100 pour les classes.
Avatar de l’utilisateur
DARDI
Membre hOOnoraire
Membre hOOnoraire
Messages : 101
Inscription : 14 déc. 2007 09:01
Localisation : BORDEAUX

Re: [Calc] contraire de la fonction MODE

Message par DARDI »

Bonjour Jeff,

Merci, ton explication confirme ce que j'avais compris sur le fonctionnement.
Par contre, ce que je ne m'explique pas, c'est l'utilisation des cellules, alors même qu'elles sont "occupées" par mes données...

Cordialement.
Version: 5.2.2.2 (x64) sous Windows 7 Professionnel
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc] contraire de la fonction MODE

Message par Jeff »

Ça recopie les données dans une formule, si tu préfère,

Je ne sais pas si je suis clair...
Avatar de l’utilisateur
DARDI
Membre hOOnoraire
Membre hOOnoraire
Messages : 101
Inscription : 14 déc. 2007 09:01
Localisation : BORDEAUX

Re: [Calc] contraire de la fonction MODE

Message par DARDI »

conceptuellement, j'ai du mal à appréhender...
p.e., dans les cellules A1:ET1, j'ai des données (mes valeurs); donc, si je comprends bien, la fonction FREQUENCE s'attribue les mêmes cellules, A1:ET1, pour stocker ses propres valeurs ???...
Version: 5.2.2.2 (x64) sous Windows 7 Professionnel
Jeff
GourOOu
GourOOu
Messages : 9598
Inscription : 18 sept. 2006 11:40
Localisation : France

Re: [Calc] contraire de la fonction MODE

Message par Jeff »

DARDI a écrit :la fonction FREQUENCE s'attribue les mêmes cellules, A1:ET1
Plus exactement, elle s'attribue les mêmes valeurs que celles présentes dans tes cellules.

J'ai essayé de te faire un topo sur la fonction FREQUENCE :
DARDI_Fx_FREQUENCE.ods
(29.42 Kio) Téléchargé 50 fois
Avatar de l’utilisateur
DARDI
Membre hOOnoraire
Membre hOOnoraire
Messages : 101
Inscription : 14 déc. 2007 09:01
Localisation : BORDEAUX

Re: [Calc] contraire de la fonction MODE

Message par DARDI »

Merci, j'ai compris...
En fait je faisais une confusion entre cellules et classes, induit en erreur par la syntaxe.
Super les explications.
Merci beaucoup.
Version: 5.2.2.2 (x64) sous Windows 7 Professionnel
Répondre