Identifier doublons dans une même ligne excel

Fermé
Vdpt Messages postés 25 Date d'inscription mercredi 5 juin 2013 Statut Membre Dernière intervention 2 juillet 2015 - 2 sept. 2014 à 09:53
Le Pingou Messages postés 12231 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 janvier 2025 - 2 sept. 2014 à 22:05
Bonjour à tous,

je travaille sur excel 2007.

J'ai un fichier comportant de nombreuses lignes et colonnes, assez long à traiter.

J'ai dans une 10aine de colonnes des infos qui reviennent parfois plusieurs fois, et j'aimerais identifier les doublons.
ex : Admettons que j'ai 10 colonnes en tout, avec en colonne A, C, E, G et I des lettres, et dans les colonnes B, D, F, H et J leurs montants associés.

Colonne A, ligne 1 j'ai "X"; colonne C, ligne 1, j'ai également "X", colonne G, lligne 1, j'ai "Y".
Les montants associés aux différentes lettres sont invariables. Ainsi X vaudra tjs 1 et Y deux par exemple.

Est il possible d'identifier rapidement les valeurs redondantes dans une même ligne?

L'idée serait en fait de dire que si dans la mm ligne deux valeurs identiques apparaissent, mon "total sur la ligne", qui serait une somme des différents montants, ne prenne en compte que les valeurs "uniques", qui n'apparaissent qu'une seule fois donc.

J'espère avoir été clair!

Merci!!
A voir également:

5 réponses

Le Pingou Messages postés 12231 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 janvier 2025 1 454
Modifié par Le Pingou le 2/09/2014 à 11:01
Bonjour,
Bonjour,
Juste au passage, dans votre cas d'exemple le total de la ligne 1 serait 3 .... Oui / Non ?
Question est-ce que chaque colonne (A, C, E, G et I] contiennent toujours une lettre ?


Salutations.
Le Pingou
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 421
2 sept. 2014 à 10:56
Bonjour une formule quand même limitée, valable ici pour 5*2 colonnes:

=B1+SI(NB.SI(A1:C1;C1)>1;0;D1)+SI(NB.SI($A$1:E1;E1)>1;0;F1)+SI(NB.SI(A1:G1;G1)>1;0;H1)+SI(NB.SI(A1:I1;I1)>1;0;J1)

Sauf erreur, ,je n'ai pas tout testé

crdlmnt
0
Licorne rose Messages postés 997 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 18 janvier 2024 227
2 sept. 2014 à 13:16
Une autre façon de faire peut-être :
ajouter une colonne tout à droite "doublon".
Dans "doublon", à l'aide d'une formule (plutôt simple), tu mets oui si la ligne est un doublon et non sinon.
Ensuite tu calcules tes totaux avec des somme.si.ens (si doublon = non).
Ça ajoute une colonne (que tu peux masquer) et évite d'écrire une longue formule délicate.
En plus, par la suite, si ça t'intéresse, tu peux filtrer les doublons ou faire une mise en forme conditionnelle pour les faire remarquer.
Et si tu changes d'avis sur ce que tu veux faire, c'est plus facile à maintenir.
0
Le Pingou Messages postés 12231 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 janvier 2025 1 454
2 sept. 2014 à 18:04
Bonjour,
Merci Vaucluse pour la solution (amicales salutations), dans le sens où il doit y avoir plus de 10 colonnes, je pense qu'il sera plus confortable avec une petite fonction personnalisée.
J'attends simplement la réponse du demandeur à mon message pour en faire plus.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12231 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 29 janvier 2025 1 454
2 sept. 2014 à 22:05
Bonjour,
Ma proposition, fonction personnalisée à mettre dans un module du classeur et selon votre exemple, 10 colonnes (A1.....J1) le totale de la ligne avec la formule en [M1] : =totLigsansdouble(A1:J1)
Ensuite vous la tirer sur le nombre des lignes nécessaire.
La fonction :
Function totLigsansdouble(plage As Range)
Dim nbcol As Integer, nuli As Integer, c As Integer
Dim totli As Double
nbcol = plage.Count: nuli = plage.Row
Set mondico = CreateObject("Scripting.Dictionary")
For c = 1 To nbcol Step 2
If Not mondico.exists(Cells(nuli, c).Value) Then
mondico(Cells(nuli, c).Value) = ""
totlig = totlig + Cells(nuli, c).Offset(0, 1)
End If
Next c
totLigsansdouble = totlig
Set mondico = Nothing
End Function

0