EXCEL (MODE)

Résolu
Albert -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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é
Configuration: Windows XP
Firefox 3.0.17

20 réponses

  1. Ricky38 Messages postés 5776 Date d'inscription   Statut Contributeur Dernière intervention   1 463
     
    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
  2. Albert
     
    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
  3. jejelefou Messages postés 310 Statut Membre 42
     
    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
  4. Albert
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Raymond PENTIER Messages postés 58209 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    à 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
  7. jejelefou Messages postés 310 Statut Membre 42
     
    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
  8. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  9. Albert
     
    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
  10. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    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
  11. jejelefou Messages postés 310 Statut Membre 42
     
    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
  12. Albert
     
    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
    1. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
       
      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
  13. jejelefou Messages postés 310 Statut Membre 42
     
    Avec plaisir, et merci de ce retour.

    A+

    jéjé
    0
  14. Albert
     
    OOPPPSS,
    just une dernier chose, y a t il un moyen pour afficher le resuktat dans une autre feuille?
    0
  15. moiwahab Messages postés 4 Date d'inscription   Statut Membre
     
    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
  16. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    @ 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
  17. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    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
    1. Max
       
      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
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonsoir,

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

      eric
      0
  18. moiwahab Messages postés 4 Date d'inscription   Statut Membre
     
    waw,,
    je vais esseyer ça,just deux minute
    0
  19. moiwahab Messages postés 4 Date d'inscription   Statut Membre
     
    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
  20. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    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
  21. moiwahab Messages postés 4 Date d'inscription   Statut Membre
     
    merci,merci
    finalement c'est PAS TROP Compliqué,lol
    merci tompolis
    0