Excel: Somme de valeurs identiques entre elles

Excel: Somme de valeurs identiques entre elles - Logiciels - Windows & Software

Marsh Posté le 11-02-2008 à 16:27:01    

Somme de valeurs identiques dans une ligne contenant différentes données au format texte
 
Bonjour à tous,
 
Voila j'ai un tableau de 70 colonnes par 50 lignes. Chaque colonne représente une personne. Et chacune de ces personnes se voient attribuées plusieurs lettres. Mais parfois aucune (que je représente ici par un "..."!
Donc admettons l'exemple :  
colonne (A) Jean-Louis a en A1 la valeur R, en A2 la valeur K en A3="...", A4=Q, A5="...", A6=Q
Fabrice (colonne B) a quant à lui: B1=R, B2=C, B3=R, B4="...", B5=K,  B6=R, B7="..."
.
.
.
Colonne CA, Stephane: CA1=R, CA2=T, CA3="...", CA4="...", CA5="...", CA6=T, CA7=P
 
Je voudrais calculer la somme des valeurs identiques au sein de chaque colonne. Par exemple pour ma colonne "CA" (représentant Stephane), je voudrais voir le résultat "2" car il y a 2 fois la lettre T. POur Fabrice (colonne B), je voudrais voir le résultat "3" car j'ai 3 fois la lettre R.
Sachant qu'à chaque fois je ne connais pas la lettre d'avance.
Je recherche donc des valeurs identiques entre elles, et non pas identiques à une valeur donnée.
Si possible une formule (pas un script), même matricielle fera très bien l'affaire.
 
Merci de votre aide.
 

Reply

Marsh Posté le 11-02-2008 à 16:27:01   

Reply

Marsh Posté le 11-02-2008 à 18:45:15    

Salut,
Il manque des éléments non ?
En fait, tu veux compter toutes les occurrences de chaque lettre (par colonne), mais ne récupérer que le nombre d'occurrences le plus élevé ?
Il faut juste afficher le nombre trouvé ou tu dois savoir aussi quelle lettre est affichée ce nombre de fois ?

Reply

Marsh Posté le 12-02-2008 à 09:56:16    

Bonjour,
En fait, je veux juste que ça me compte le nombre de doublons dans une colonne (des caractères, dans mon cas ce sont simplement des lettres), mais je ne connais pas à l'avance le caractère à vérifier.
Là je m'aperçois que mon énoncé était bigrement compliqué alors que j'ai pu le résumer en qq mots....ahhhh, la langue française...LOL

Reply

Marsh Posté le 12-02-2008 à 10:10:59    

Tu dis par exemple :

Citation :


Pour Fabrice (colonne B), je voudrais voir le résultat "3" car j'ai 3 fois la lettre R

 

Mais peut-il y avoir 3 fois la lettre R, 2 fois lettre P, 5 fois la lettre S ?
Si oui, que faut-il que tu récupères ?
Car tu veux récupérer les doublons, mais il peut peut-être y avoir plusieurs doublons par colonne ?


Message édité par blueteen le 12-02-2008 à 10:11:28
Reply

Marsh Posté le 12-02-2008 à 10:18:18    

Fort heureusement, il ne peut y avoir plusieurs lettres en doublons mais une seule. Comme dans l'exemple suivant:
CA1=R, CA2=T, CA3="...", CA4="...", CA5="...", CA6=T, CA7=P  
Je n'aurais que la lettre "T" en doublon. Mais je n'en aurais jamais d'autres.
Merci blueteen.

Reply

Marsh Posté le 12-02-2008 à 11:26:16    

Donc, un énoncé plus simple : ça revient à compter chaque lettre, et afficher le décompte le plus grand :) (juste le nombre).
Ca me fait bizarre, que tu aies juste à savoir ce nombre, sans afficher clairement la lettre la plus redondante !
Bon, tout est posé à plat, reste à trouver !
Je jette un oeil.


Message édité par blueteen le 12-02-2008 à 11:26:44
Reply

Marsh Posté le 12-02-2008 à 11:43:33    

Ah ben si tu peux m'afficher la lettre en+, je prends ! ;-
J'ai déja trouvé une macro qui le fait mais cela m'affiche une boite de dialogue.  
Or, j'ai 60 colonnes * 32 lignes à vérifier, et je veux travailler par colonnes. L'idéal serait vraiment une formule en bas de colonne qui compte les doublons sans connaitre la valeur du doublon. Olaaa, je me répète là LOL

Reply

Marsh Posté le 12-02-2008 à 11:45:31    

ah !
Fais passer ta macro alors, on doit pouvoir la modifier pour afficher le résultat dans la cellule au lieu d'une fenêtre :)
Je ne suis pas un spécialiste d'excel ou des macros, mais j'aime bien me creuser la tête, et ça fait découvrir de nouveaux trucs.

 

Ici on a de bonnes pistes par exemple
http://www.excelabo.net/excel/denombrer.php

 
Citation :


Nombre d'occurrences
J'ai une plage de cellules contenant des valeurs genre 4 4 8 3 2 5 8 4 4 4 27... J'ai besoin 1) de lister les différentes valeurs qui apparaissent 2) de savoir combien de fois chaque valeur apparait

 

Je regarde pour ton cas.

Message cité 1 fois
Message édité par blueteen le 12-02-2008 à 11:47:34
Reply

Marsh Posté le 12-02-2008 à 11:52:38    

Sais-tu quelles lettres vont être attribuées ?
De A à Z ?
 
Je viens de faire un test rapide, et avec ce genre de formule :

Code :
  1. =NB.SI(A2:A8;"=R" )

, je récupère le chiffre 3, car j'ai 3 fois la lettre R dans ma colonne de référence.
Après, il faut voir la quantité de lettre que tu es amené à utiliser pour voir si on peut se lancer dans une boucle, ou si on continue de regarder du côté des macros.

Reply

Marsh Posté le 12-02-2008 à 12:23:07    

blueteen a écrit :

Sais-tu quelles lettres vont être attribuées ?
De A à Z ?
 
Je viens de faire un test rapide, et avec ce genre de formule :

Code :
  1. =NB.SI(A2:A8;"=R" )

, je récupère le chiffre 3, car j'ai 3 fois la lettre R dans ma colonne de référence.
Après, il faut voir la quantité de lettre que tu es amené à utiliser pour voir si on peut se lancer dans une boucle, ou si on continue de regarder du côté des macros.


 
Hé non,  :( malheureusement, je ne sais jamais par avance quelle lettre va etre utilisée. Mais dans le principe tu as tout fait compris ce que je veux. Maintenant, reste à trouver à faire la même chose lorsqu'on ne connait pas la valeur à l'avance... :bounce:

Reply

Marsh Posté le 12-02-2008 à 12:23:07   

Reply

Marsh Posté le 12-02-2008 à 12:23:48    

blueteen a écrit :

ah !
Fais passer ta macro alors, on doit pouvoir la modifier pour afficher le résultat dans la cellule au lieu d'une fenêtre :)
Je ne suis pas un spécialiste d'excel ou des macros, mais j'aime bien me creuser la tête, et ça fait découvrir de nouveaux trucs.
 
Ici on a de bonnes pistes par exemple
http://www.excelabo.net/excel/denombrer.php
 

Citation :


Nombre d'occurrences
J'ai une plage de cellules contenant des valeurs genre 4 4 8 3 2 5 8 4 4 4 27... J'ai besoin 1) de lister les différentes valeurs qui apparaissent 2) de savoir combien de fois chaque valeur apparait  


 
Je regarde pour ton cas.


 
Ci-dessous la macro:
 
Option Explicit
Option Base 1
 
 
Sub listeDoublonsPlage()
    Dim Plage As Range
    Dim Tableau(), Resultat() As String
    Dim i As Integer, j As Integer, m As Integer
    Dim Un As Collection
    Dim Doublons As String
         
    Set Un = New Collection
    'La plage de cellules (sur une colonne) à tester
    Set Plage = Range("BO2:BO" & Range("A65536" ).End(xlUp).Row)
       
       
    Tableau = Plage.Value
     
    On Error Resume Next
    'boucle sur la plage à tester
    For i = 1 To Plage.Count
     
        ReDim Preserve Resultat(2, m + 1)
         
        'Utilise une collection pour rechercher les doublons
        '(les collections n'acceptent que des données uniques)
        Un.Add Tableau(i, 1), CStr(Tableau(i, 1))
         
        'S'il y a une erreur (donc présence d'un doublon)
        If Err <> 0 Then
             
            'boucle sur le tableau des doublons pour vérifier s'il a déjà
            'été identifié
            For j = 1 To m + 1
                'Si oui, on  incrémente le compteur
                If Resultat(1, j) = Tableau(i, 1) Then
                    Resultat(2, j) = Resultat(2, j) + 1
                    Err.Clear
                    Exit For
                End If
            Next j
                 
                'Si non, on ajoute le doublon dans le tableau
                If Err <> 0 Then
                    Resultat(1, m + 1) = Tableau(i, 1)
                    Resultat(2, m + 1) = 1
                     
                    m = m + 1
                    Err.Clear
 
                End If
        End If
    Next i
 
    '----- Affiche la liste et le nombre de doublons --------
    For j = 1 To m
        Doublons = Doublons & Resultat(1, j) & " --> " & _
                    Resultat(2, j) & vbCrLf
    Next j
     
    MsgBox Doublons
     
    Set Un = Nothing
End Sub
 
 

Reply

Marsh Posté le 12-02-2008 à 12:24:12    

Je pense avoir trouvé un truc, avec un mix' de diverses formules trouvées sur le net.
Ca affiche le nombre maximum de doublons trouvés (au cas par exemple où tu aies tout de même plusieurs doublons dans ta colonne).

 

Par contre, je dois voir pour gérer le cas des "..."

 

Je vais manger un morceau, et je reviens.

 

Pour info, la formule actuelle est celle-ci

 
Code :
  1. =NBVAL(A2:A8)-SOMMEPROD(SI(A2:A8<>"...";1/NB.SI(A2:A8;A2:A8)))&" "&INDEX(A2:A8;EQUIV(MAX(NB.SI(A2:A8;A2:A8));NB.SI(A2:A8;A2:A8);0))
 

Avec les lettres se trouvant en A2 à A8.
Il s'agit d'une formule matricielle, il faut donc valider en utiliser les touches : ctrl+maj+entrée pour valider cette formule une fois saisie (ou copié dans ta cellule).

 

J'ai utilisé ce lien :
http://silkyroad.developpez.com/excel/doublons/
Et ce lien :
http://www.excelabo.net/excel/denombrer.php

 

En concaténant 2 formules, j'obtiens ce genre de résultat :
http://img511.imageshack.us/img511/9014/20080212122346ll3.png

 

edit : je viens de voir ton code vb, édite ton message, puis ajoute les balises [ code] et [/ code] autour pour plus de lisibilité :) (sans les espaces entre les crochets).

Message cité 1 fois
Message édité par blueteen le 12-02-2008 à 12:25:55
Reply

Marsh Posté le 12-02-2008 à 13:02:14    

blueteen a écrit :

Je pense avoir trouvé un truc, avec un mix' de diverses formules trouvées sur le net.
Ca affiche le nombre maximum de doublons trouvés (au cas par exemple où tu aies tout de même plusieurs doublons dans ta colonne).
 
Par contre, je dois voir pour gérer le cas des "..."
 
Je vais manger un morceau, et je reviens.
 
Pour info, la formule actuelle est celle-ci
 

Code :
  1. =NBVAL(A2:A8)-SOMMEPROD(SI(A2:A8<>"...";1/NB.SI(A2:A8;A2:A8)))&" "&INDEX(A2:A8;EQUIV(MAX(NB.SI(A2:A8;A2:A8));NB.SI(A2:A8;A2:A8);0))


 
Avec les lettres se trouvant en A2 à A8.
Il s'agit d'une formule matricielle, il faut donc valider en utiliser les touches : ctrl+maj+entrée pour valider cette formule une fois saisie (ou copié dans ta cellule).
 
J'ai utilisé ce lien :
http://silkyroad.developpez.com/excel/doublons/
Et ce lien :
http://www.excelabo.net/excel/denombrer.php
 
En concaténant 2 formules, j'obtiens ce genre de résultat :
http://img511.imageshack.us/img511 [...] 346ll3.png
 
edit : je viens de voir ton code vb, édite ton message, puis ajoute les balises [ code] et [/ code] autour pour plus de lisibilité :) (sans les espaces entre les crochets).


 
Je crois que le plus simple serait de te mettre mon fichier en ligne...
http://cjoint.com/?cmm5IGyH4m
 
En rouge, sont les éléments en double que je veux compter en bas de page, j'ai mis le nombre pour l'exemple...
Merci de votre aide. :hello:  
 

Reply

Marsh Posté le 12-02-2008 à 13:37:20    

C'est mieux avec ton fichier :)
Je te propose cette formule (on doit la compléter pour ne rien afficher par exemple, lorsqu'aucun doublon n'est trouvé)

 
Code :
  1. =SOMMEPROD((EXACT(D2:D32;INDEX(D2:D32;EQUIV(MAX(NB.SI(D2:D32;D2:D32));NB.SI(D2:D32;D2:D32);0)))*1))&" "&INDEX(D2:D32;EQUIV(MAX(NB.SI(D2:D32;D2:D32));NB.SI(D2:D32;D2:D32);0))
 

A valider avec ctrl+shift+entrée.
Je te joins également le fichier : http://cjoint.com/?cmn0LWUIiF


Message édité par blueteen le 12-02-2008 à 14:05:34
Reply

Marsh Posté le 12-02-2008 à 14:01:58    

Voilà la formule complétée :

Code :
  1. =SI(SOMMEPROD((EXACT(B2:B32;INDEX(B2:B32;EQUIV(MAX(NB.SI(B2:B32;B2:B32));NB.SI(B2:B32;B2:B32);0)))*1))>1; SOMMEPROD((EXACT(B2:B32;INDEX(B2:B32;EQUIV(MAX(NB.SI(B2:B32;B2:B32));NB.SI(B2:B32;B2:B32);0)))*1))&" "&INDEX(B2:B32;EQUIV(MAX(NB.SI(B2:B32;B2:B32));NB.SI(B2:B32;B2:B32);0));"" )
 

A valider avec ctrl+shift+entrée.
S'il n'y a pas de doublon dans la colonne, la cellule reste vide.

 

http://cjoint.com/?cmoeAFJMHY

 

Les majuscules sont distinguées des minuscules.
Si tu as 3 fois la lettre "M" et 5 fois la lettre "m", tu retrouveras en bas de colonne : 5 m


Message édité par blueteen le 12-02-2008 à 14:07:37
Reply

Marsh Posté le 12-02-2008 à 15:16:42    

Blueteen, tu as pris l'exemple pour une seule colonne "B" ?
Parce que lorsque j'essaie de la coller en dessous de n'importe quelle colonne, j'ai "oui" ou des "17oui"....lol

Reply

Marsh Posté le 12-02-2008 à 15:20:06    

attention, pense que tu si tu colles une formule, tu dois mettre à jour les cellules parfois.

 

Dans le cas du dernier fichier fourni, j'ai placé la formule dans la colonne B, et j'ai pu la copier sans souci vers les colonnes C et suivantes.
Seuls les colonnes ont été incrémentées (c'est normal), et les numéros de lignes sont restés les bons.

 

Mais bien sûr, si tu copies vers le bas, tu auras un décalage dans la numérotation des lignes !
Normalement, ça va de B2 à B32, et si tu copies vers le bas, dans la cellule juste en-dessous, ça va utiliser les cellules B3 à B33.
ok ?


Message édité par blueteen le 12-02-2008 à 15:20:58
Reply

Marsh Posté le 13-02-2008 à 09:35:04    

Salut Blueteen,
 
Excuses, hier je planais un peu pour étirer la formule, j'étais sur 3 trucs à la fois.
 
Bon ta formule (celle de 13h37) est vraiment pas mal mais elle ne me sort qu'une seule lettre alors que parfois je peux en avoir plusieurs (uniques toujours), exemple 1T, 1J, 1S, 1Q, 1R....et donc la formule va me sortir une fois "1J" et sur une autre colonne identique "1R"....Ce n'est pas mon but de toute façon mais c''est pour faire avancer le schmilblik...le schmeulbleack, le scheumeule....lol...enfin bref, pour pas qu'on reste sur notre fin.
Comment procède la formule ? a-t-elle un ordre de traitement ?
 
Pour celle de 14h01, c'est bien aussi, mais à la limite faudrait que je trouve à tout afficher carrément :2M, puis en dessous 1Q, puis en dessous 1T, etc...
 
Mais sinon, la formule de 13h37, si j'ai par exemple 1T, 1J, 1S, 2Q, 1R, je vais voir s'afficher 2Q ! Et ça c'est bien !!! Tout à fait ce que je voulais. "Mais c'est siiiiperrrrrr"
Merci !!!

Reply

Marsh Posté le 13-02-2008 à 09:47:41    

Mais là on est plus vraiment dans ce que tu indiquais comme besoins au tout début.
Pour ça que j'avais reformulé ta question :p
Tu avais précisé que tu ne voulais ressortir que les doublons.
D'où la formule de 14h01 qui fait exactement ça.

 

Celle de 13h37 est la même que celle de 14h04 sauf qu'elle affichait même un résultat pour les colonnes où il n'y avait pas de doublons.
Et comme tu l'as fait remarquer, il n'y a pas trop de logique dans l'affichage des lettres uniques.
Une fois ça va affiche 1Q, l'autre fois, ça va afficher 1T, etc...
Je n'ai pas de réelle explication pour ça, mais ça semble être la première lettre de la colonne.

 

Donc en fait, il t'aurait fallu, pour une colonne donnée, afficher la quantité de chaque caractère, avec le caractère le plus fréquemment utilisé en haut de cette liste ?


Message édité par blueteen le 13-02-2008 à 09:48:16
Reply

Marsh Posté le 13-02-2008 à 10:20:51    

Frédéric Sigonneau a écrit un truc en VBA pour colorier les cases (par colonne) en doublon.  
http://www.excelabo.net/excel/comp [...] colori%E9s

Reply

Marsh Posté le 14-02-2008 à 17:20:24    

Je joins le document, avec 2 autres formules
http://cjoint.com/?corpWfbAvK
 
Ca donne ça :
http://img169.imageshack.us/img169/7926/20080214171654ts5.png
 
Avec cette formule en B37

Code :
  1. =SOMME(NBCAR(B2:B32)-NBCAR(SUBSTITUE(B2:B32;"J";"" )))&" "&"J"


A valider avec ctrl+shift+entrée
 
Et celle-ci en B38

Code :
  1. =SOMME(SI((B2:B32="J" );1;0))&" "&"J"


A valider avec ctrl+shift+entrée
 
Comme tu le vois, tu devrais te préparer ta formule pour chaque lettre qui sera susceptible d'être utilisée.
Pour le moment, il n'y a pas de tri, ça apparaîtra dans l'ordre que tu voudras.
Tu peux donc imaginer de laisser la formule utilisée sur la ligne 35, pour récupérer ton doublon, et au-dessous, tu fais affiches le détail de toutes les lettres de la colonne.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed