EXCEL (MODE)

Résolu
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. merci,merci
    finalement c'est PAS TROP Compliqué,lol
    merci tompolis
    0
    1. Contributeur
      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
      1. 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
        1. waw,,
          je vais esseyer ça,just deux minute
          0
          1. Contributeur
            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. 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. Contributeur
              Bonsoir,

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

              eric
              0
          2. Contributeur
            @ 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
            1. 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
              1. OOPPPSS,
                just une dernier chose, y a t il un moyen pour afficher le resuktat dans une autre feuille?
                0
                1. Avec plaisir, et merci de ce retour.

                  A+

                  jéjé
                  0
                  1. 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. Contributeur
                      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
                  2. 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
                    1. Contributeur
                      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
                      1. 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
                        1. Contributeur
                          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
                          1. 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
                            1. Contributeur
                              à 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
                              1. 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
                                1. 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
                                  1. 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
                                    1. Contributeur
                                      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