Excel: Somme de valeurs identiques entre elles - Logiciels - Windows & Software
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 ?
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
Marsh Posté le 12-02-2008 à 10:10:59
Tu dis par exemple :
Citation :
|
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 ?
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.
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.
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
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 :
|
Je regarde pour ton cas.
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 :
|
, 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.
Marsh Posté le 12-02-2008 à 12:23:07
blueteen a écrit : Sais-tu quelles lettres vont être attribuées ?
, je récupère le chiffre 3, car j'ai 3 fois la lettre R dans ma colonne de référence. |
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...
Marsh Posté le 12-02-2008 à 12:23:48
blueteen a écrit : ah !
|
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
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 :
|
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 :
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).
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.
|
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.
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 :
|
A valider avec ctrl+shift+entrée.
Je te joins également le fichier : http://cjoint.com/?cmn0LWUIiF
Marsh Posté le 12-02-2008 à 14:01:58
Voilà la formule complétée :
Code :
|
A valider avec ctrl+shift+entrée.
S'il n'y a pas de doublon dans la colonne, la cellule reste vide.
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
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
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 ?
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 !!!
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
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 ?
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
Marsh Posté le 14-02-2008 à 17:20:24
Je joins le document, avec 2 autres formules
http://cjoint.com/?corpWfbAvK
Ca donne ça :
Avec cette formule en B37
Code :
|
A valider avec ctrl+shift+entrée
Et celle-ci en B38
Code :
|
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.
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.