[Excel] Compter des valeurs

Résolu
Erdnax Messages postés 2279 Statut Contributeur -  
 Marie-Josée -
Bonjour à tous,

J'aurais aimé savoir s'il existe une fonction permettant de compter le nombre de valeurs différentes dans une colone. En gros, j'ai 540 lignes, et chaque valeur se répète plusieurs, j'aurais aimé savoir s'il n'y a pas un moyen de ressortir uniquement le nombre de chiffres différents.

Par exemple, sur ces 540, il doit y en avoir environ 200 différentes. Je n'ai pas trouvé de fonction par l'invite d'Excel, et j'aimerais éviter de créer un macro pour ça...

Mais si c'est la seule solution, je m'y collerai ;)

@+

--
Punvf cnf dhbv zrgger...

14 réponses

  1. Raymond PENTIER Messages postés 58209 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    Bonsoir, Erdnax (il est 22 h chez moi).

    Comme l'indique random, il faut trier ta colonne.
    Par précaution, je te conseille de ne pas travailler sur ton fichier original, mais sur une copie que tu supprimeras ensuite.
    Nous utiliserons l'assistant "Sous-total". Allons-y :

    1) Faire une copie du fichier
    2) Effectuer un tri du tableau par rapport à la colonne contenant ces valeurs (par exemple colonne C, avec comme intitulé "Prix" en C1, et les différentes valeurs à partir de C2 jusqu'à C541, sans sauter de ligne)
    3) Cliquer Données / Sous-totaux... : La boîte de dialogue "Sous-total" apparaît.
    4) Dans la fenêtre 2 Utiliser la fonction choisir Nb à la place de Somme. Ne pas modifier le reste et faire OK
    5) Excel déplace la colonne "Prix" et insère une colonne portant les intitulés "Nombre xxx", et à côté, dans la cellule "Prix", le nombre d'occurrences de chaque valeur xxx
    6) En supposant que le total général, indiqué par l'intitulé "Nbval", soit à la ligne 559, se placer en C560 et saisir "=NBVAL(C2:C558") : Tu as ta réponse !

    Fais-moi savoir si ça a marché.

    Raymond
    14
    1. ludo
       
      Il suffit d'utiliser la formule suivante (si la plage sur laquelle tu recherches est A2:A500)
      =somme(1/NB.SI(A2:A500 ;A2:A500))
      Comme c'est une matricielle, pour valider la formule il faut taper ctrl+maj+entrée.
      0
      1. Byothe > ludo
         
        Merci

        Cela fonctionne parfaitement !
        0
    2. Monsieur de Rastignac
       
      Très utile!

      Merci beaucoup Raymond
      0
    3. Marie-Josée
       
      Il y aurait une autre façon de voir la fréquence de chaque occurrence de votre liste : la fonction FREQUENCE.

      Par contre, pour voir cette fonction, il faut aller dans Fichier, Options, Compléments, bouton Atteindre, puis activer le complément Analysis Toolpack.
      0
  2. BIBIZAR
     
    J'ai recement deposé sur le site VBFRANCE deux nouvelles fonctions excel qui répondent a ta demande.
    Pas besoin de trier ni de triturer la feuille. il suffit d'incorporer le code VBA de ces fonctiions dans ton classeur
    et ensuite d'utiliser ces fonctions comme toutes les autres fonctions Excel.

    Les doublons triplons ..... peuvent etre contigus ou non, c'est prévu dans la fonction.

    Il y a une fonction pour compter le nombre d'occurences non nulles et différentes dans une plage de cellules
    NBVAL_DISTINCT
    et une autre si on a filtré la plage pour compter le nb d'occurences non nulles, différentes et visibles.
    NBVAL_DISTINCT_VISIBLE

    exemple
    = NBVAL_DISTINCT(A1:A666)

    Voir le lien :
    https://codes-sources.commentcamarche.net/
    9
  3. mat_
     
    Je ne suis pas un pro d'excel mais si tu cherches le nombre de valeurs differentes dans une colonne, je copierais la colonne quelque part, selcetionner cette nouvelle colonne, supprimer les doublons, puis appliquer un simple NBVAL sur cette colonne.
    4
  4. Mynick
     
    Supposons les données en colonne A à partir de la cellule A2
    Trier de A2 à la fin
    En colonne B2, mettre la formule suivante:
    =SI(A2<>A1;1;0)
    Recopier cette formule vers le bas ce qui met la valeur 1 à chaque changement de valeur
    Faire la somme de la colonne B avec la formule suivante:
    =somme(B:B)

    Ceci marche pour tous les types de valeur...
    4
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cerelog Messages postés 4728 Statut Membre 792
     
    il faut utiliser un tableau croisé dynamique pour faire resortir tes valeurs

    cerelog
    2
  7. random Messages postés 1612 Statut Membre 155
     
    on trie la colonne
    on met en place la formule suivante
    si (maligne=ligne-1;1;0)
    et on somme
    2
  8. Djstom
     
    Bonjour,

    J'ai essayé la formule de michel mais sans succès, je retrouve l'erreur valeur dans ma case de résultats. Pourtant j'ai fais copier/coller et j'ai modifié les plages de valeurs... Si qqun a une idée merci bcp
    1
    1. Jac franctireur
       
      N'oublie pas de valider ta formule non pas par Enter mais Ctrl + Shift + Enter
      c'est du matriciel

      et là on découvre qu'Excel est magique !

      Allez bye et bonne continuation

      JacFrancTireur
      0
    2. Raymond PENTIER Messages postés 58209 Date d'inscription   Statut Contributeur Dernière intervention   17 480 > Jac franctireur
       
      5 mois après, tu penses réellement que ton intervention va encore l'intéresser ?
      0
    3. Pierrot > Raymond PENTIER Messages postés 58209 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Bien sur que c'est utile pour tous ceux qui lisent ce thread.
      0
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281 > Pierrot
       
      Et bien comme il n'est jamais trop tard j'en profite pour en mettre une non matricielle :
      =SOMMEPROD((FREQUENCE(B2:B28;B2:B28)>0)*1)
      eric
      0
    5. snew > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
       
      et pour une liste non numérique?
      genre nombre de clients différents...
      0
  9. etienne06 Messages postés 152 Statut Membre 10
     
    Bonjour,

    Je pense qu'il faut utiliser une formule comme celle-là :

    =SOMMEPROD(1/NB.SI(D9:D23;D9:D23))

    Où D9:D23 est la plage de données où se trouvent les valeurs différentes ou non les unes par rapoort aux autres.

    Espérant que cela fonctionne dans ton cas,

    Bonne continuation.
    1
  10. Erdnax Messages postés 2279 Statut Contributeur 497
     
    Qu'est ce que tu entends par ligne-1 ?

    T'arrive à me montrer un exemple de ce que ça peut donner ? Même complètement fictif, comment tu fais pour retourner à la ligne précédente ?
    0
  11. bibi
     
    Je pense que cette solution (maligne-1) ne marche pas, j ai le meme probleme et si j applique cela j ai par exemple :
    5
    5
    5
    5
    4
    4
    5
    5
    5
    Il va compter 3 alors qu il y a que 2 valeurs différentes...
    0
  12. Raymond PENTIER Messages postés 58209 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    C'est encore moi.

    Notre ami qmike a parfaitement raison. Le blog "Astuces Michel" est d'ailleurs remarquable, exhaustif, clair, bien organisé.

    J'avoue que je ne connaissais pas la formule qu'il propose, mais je l'ai testée et elle marche au poil !

    Mais enfin ma prose concernant SOUS-TOTAL pourra toujours te servir à une autre occasion ...

    Salut, Raymond
    0
  13. Charly
     
    Regarde si tu n'as pas une version anglaise d'Excel. Au quel cas tu devras trouver la traduction de la formule.
    0
  14. moiviking
     
    Bonjour,

    Mon premier livrable sur un forum.

    Imaginons que ta colonne en A ait des doublons, triplons, quadruplons,...
    faire un trie croissant de la colonne A
    insérer une ligne en haut
    insérer quatre colones B, C, D et E
    en B
    =SI(A2=A1;1;0)
    en C
    =SI(B2=0;1;0)
    en D
    =SI(ET(C2=0;B2=1);D1+1;1)
    en E
    =SI(ET(B2=1;B3=0);D2;SI(ET(B2=0;B3=0);1;""))

    On peut surement faire mieux, mais ça, ça marche.
    Cordialement.
    0
  15. Erdnax Messages postés 2279 Statut Contributeur 497
     
    Salut,

    Merci pour ta réponse, mais en fait, je m'en suis sortis avec des sommes, sommes.si, et nb ;)

    @+
    -3