EXCEL (MODE)

Résolu/Fermé
Albert - 11 janv. 2010 à 23:19
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 - 27 juin 2013 à 00:23
Bonjour,
un trés grand petit problème,lol
MODE : est une formule qui Renvoie la valeur la plus fréquente dans une matrice ou une plage de données. cette valeur est afficher sous forme numérique bien sure
que faire dans le cas ou la plage de donnée contient que des noms et on veux afficher le nom le plus repetes
je cherche depuis plusieurs jours mais rien trouvé
A voir également:

20 réponses

Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 458
11 janv. 2010 à 23:23
Salut,

avec la fonction NB.SI(plage;critère)

donc si ton tableau est en A1:C4 et le mot recherché est "toto"

=NB.SI(A1:C4;"toto")

Voilà :)
0
re et merci Mr RICKY pour ta réponse
vous m'avez mal compris
EXEMPLE:

A
DAVID
SAM
SAM
CLAUD
SAM
DAVID
SAM
SAM
SAM
.
.
.
ETC
voila : SAM et le mot le plus fréquent, qu'elle la formule a utiliser pour l'afficher ?
0
jejelefou Messages postés 304 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 18 février 2016 42
11 janv. 2010 à 23:55
Bonsoir,

Je connais pas de formule preformatée pour ce genre de probleme.

Par contre en VB c'est largement réalisable

1/prendre le 1er mot
compter le nombre de fois il apparait dans la zone
2/prendre le mot suivant compter le nombre de fois qu'il apparait dans la zone
si le nombre d'occurence est > alors enregistrer
3/repeter 2/ jusqu'à la fin de la zone
4/ afficher le resultat

demain je le traduirais en VB

bonne soirée
0
Merci jeje
en traduisant ce que ta a dit je trouve :
compter le nombre de reptation de chaque nom
trouver le MAX
Renvoyer le MAX.....

pfffff
c trop compliquer
j'attendrais ta repense avec impatience
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raymond PENTIER Messages postés 58423 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 10 mai 2024 17 105
12 janv. 2010 à 01:55
à côté de chaque mot tu mets un code numérique, et tu feras ton CODE sur cette colonne ...
DAVID 45
SAM 203
SAM 203
CLAUD 35
SAM 203
DAVID 45
SAM 203
SAM 203
SAM 203
.
.
0
jejelefou Messages postés 304 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 18 février 2016 42
12 janv. 2010 à 11:27
Bonjour,

voici un petit truc qui trouve le résultat.
Je pense que la forme peut etre améliorée :

Sub modemot()

coldebut = InputBox("entrez le numero de la colonne du 1er mot")
colfin = InputBox("entrez le numero de la colonne du dernier mot")
lignedebut = InputBox("entrez le numero de la ligne du 1er mot")
lignefin = InputBox("entrez le numero de la ligne du dernier mot")

recurence = 0
motmax = 0

'Boucle de reference
For a = coldebut To colfin
For b = lignedebut To lignefin

reference = Cells(b, a).Text
'boucle de recherche de l'identique de reference
For i = coldebut To colfin
For j = lignedebut To lignefin

If Cells(j, i).Text = reference Then
recurence = recurence + 1
End If

Next
Next
If recurence > motmax Then
motmax = recurence
motmaxvaleur = reference
End If
recurence = 0
Next
Next

'affichage du resultat
Cells(lignefin + 1, coldebut + 0).Value = "le mot le plus de fois present est :"
Cells(lignefin + 2, coldebut + 0).Value = motmaxvaleur
Cells(lignefin + 3, coldebut + 0).Value = motmax
End Sub
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
12 janv. 2010 à 11:46
Bonjour

tes noms sont de A1 à A9 (d'après ton post)

=INDEX(A1:A9;MIN(SI(NB.SI(A1:A9;A1:A9)=MAX(NB.SI(A1:A9;A1:A9));LIGNE(A1:A9))))


formule matricielle à valider par Ctrl+maj+entrée (et non par entrée, comme d'hab)
Le curseur doit être dans la barre de formule.
XL encadre automatiquement la formule par des accolades

edit 12:00: si ex-æquo, ne donne que le 1° rencontré en descendant !...
0
Bonsoir tous
Merci JEJE pour ton code,je ne sais pas comment faire pour le mettre dans une case, je ne connais rien en VBA,j'ai esseyé mais rien,merci quand même
Mr Raymond PENTIER,j'ai une liste qui contient presque 3200 noms,;) tu vois? numéroter 3200 case,lol,MERCI bqp pour ton idée
Michel,ta formule est impossible a valider, je ne sais pas pourquoi,malgré que j'ai suivi ta procédure (Ctrl+maj+entrée) mais toujours rien
dans l'attente de ce mode, veuillez acceptez messieurs mes chéres salutations excel-tives
lol
merci pour vos réponses
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
12 janv. 2010 à 22:41
Bonjour,
michel_m l'a pourtant bien précisé, la formule fonctionne en A1:A9, elle renvoie ref si on ne demarre pas à la ligne 1...sinon il faut modifier pour trouver la premiere ligne du tableau :
=INDEX(B15:B23;MIN(SI(NB.SI(B15:B23;B15:B23)=MAX(NB.SI(B15:B23;B15:B23));LIGNE(B15:B23)-MIN(LIGNE(B15:B23)-1))))
à valider par CTRL+SHIFT+ENTREE
ça devrait le faire...
0
jejelefou Messages postés 304 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 18 février 2016 42
12 janv. 2010 à 22:47
Pour mettre le code :
outil
macro
visual basic editor

ouvrir la page correspondant à l'onglet du ton fichier

copier le code
cliquer sur la touche play (sorte de fleche comme sur un lecteur mp3)

repondre aux questions posées

si ca marche, il faudra créer une icone pour un raccourci, mais on n'en est pas encore là. dits moi si ca te convient tout de meme
0
Bonjour
Merci et 1000 fois merci JEJE car ça marche parfaitement, j'ai aussi pu changer la case ou afficher le resultat, donc ,merci bqp encore une fois.
michel_m,a*ta formule marche que dans les case de A1:A9,j'ai essayé de déplacer les cadre mais bon,je sais que le problème vient de chez moi,et merci pour ta contribution
TOMPOLIS,merci pour ta réponse malgré qu'elle ne fonctionne pas car elle renvoie une erreur.
VOILA,Topic resolu, merci pour votre aide, surtout vous JEJE, :)
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
13 janv. 2010 à 10:36
Bonjour,
pas le peine d'écrire en gras, pitié pour nos yeux....
la formule fonctionne très bien (attention au copier/coller depuis le forum, no temment en cas de renvoi à la ligne : https://www.cjoint.com/?bnkKEEVB1b ), apres j'ai utilisé une plage en B15:B23, à adapter...
0
jejelefou Messages postés 304 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 18 février 2016 42
13 janv. 2010 à 10:31
Avec plaisir, et merci de ce retour.

A+

jéjé
0
OOPPPSS,
just une dernier chose, y a t il un moyen pour afficher le resuktat dans une autre feuille?
0
moiwahab Messages postés 4 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 13 janvier 2010
13 janv. 2010 à 10:49
BJR
tompols,je ne sais pas pourquoi, mais ta formule a bien marché, j'ai aimé plus la méthode jeje car cette dernière offre la possibilité de fusionné plusieurs colonne, par contre la tienne on ne peux affiche que le mode d'une seul colonne
MERCI
JEJE,SVP, comment faire pour afficher le résultat dans une autre feuille?
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
13 janv. 2010 à 10:54
@ Jejelefou : "Je pense que la forme peut etre améliorée" bah du coup jm'y suis essayé, on peut raccourcir un peu le code comme ça (et puis ça t'evite de passer par des compteurs de boucle a,b,i,j) :
Set zo = Range(Cells(lignedebut, coldebut), Cells(lignefin, colfin))
For Each c In zo
    reference = c.Text
    For Each d In zo
        If d.Text = reference Then
            recurence = recurence + 1
        End If
    Next
    If recurence > motmax Then
        motmax = recurence
        motmaxvaleur = reference
    End If
    recurence = 0
Next c
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
13 janv. 2010 à 11:00
le plus simple serait de transformer ça en fonction, le code devient
Function motfrequent(plage As Range)

recurence = 0
motmax = 0

For Each c In plage
    reference = c.Text
    For Each d In plage
        If d.Text = reference Then
            recurence = recurence + 1
        End If
    Next
    If recurence > motmax Then
        motmax = recurence
        motmaxvaleur = reference
    End If
    recurence = 0
Next c
motfrequent = "le mot le plus de fois present est : " & motmaxvaleur & " (" & motmax & " occurences)"

End Function


voilà, tu tu disposes ensuite d'une formule =motfrequent() utilisable depuis n'importe quelle feuille; exemple en A1:A9 : =motfrequent(Feuil1!A1:A9)
0
Bonjour tompols,

Merci pour ce code par compte n'y connaissant rien au VBA, je souhaiterais que celui-ci soit applicable non plus pour des mots mais pour des valeurs numériques, tu saurais me donner un coup de pouce?

Bien à toi,
Max
0
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
27 juin 2013 à 00:23
Bonsoir,

applicable non plus pour des mots mais pour des valeurs numériques
Pas besoin de vba, c'est la fonction Mode()

eric
0
moiwahab Messages postés 4 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 13 janvier 2010
13 janv. 2010 à 11:02
waw,,
je vais esseyer ça,just deux minute
0
moiwahab Messages postés 4 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 13 janvier 2010
13 janv. 2010 à 11:08
Mr tompols, vous etes sur que c'est possible,car une goid je tape "play" elle me donne un nom d'une macro (suprimer noms)quand je l'execute, ça renvoie ERREUR d'execution 348" propriete ou methode non generer par cet objet"
merci
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
13 janv. 2010 à 11:27
re,
ce que je te donne c'est une fonction, donc tu colles simplement le code dans un module ou dans ThisWorkbook dans l'editeur vba (pour crer un module, click droit sur une feuille dans l'editeur puis insertion/module).
Ensuite la formule s'utlise comme une simple fomule excel : https://www.cjoint.com/?bnlBp3OXC1
pour ton pb avec supprimer_noms, merci de poster ici :https://forums.commentcamarche.net/forum/affich-16124351-vba-impossible-de-supprimer-tous-les-noms#4
0
moiwahab Messages postés 4 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 13 janvier 2010
13 janv. 2010 à 11:36
merci,merci
finalement c'est PAS TROP Compliqué,lol
merci tompolis
0