XL 2013 [RESOLU] 3 colonnes : épurer et comparer

Vincenzozo

XLDnaute Nouveau
Bonjour à tous,

Voilà, j'ai des grosses listes à comparer, je souhaiterai les "épurer" en supprimant les doublons puis en "coloriant" les doublons et triplons...

Je souhaiterai donc que pour les données en triple (colonne 1,2&3) on ait une couleur, mettons vert, en double (peu importe les colonnes) en orange et en simple en rouge.

Je vous ai mis en PJ un fichier ou j'ai commencé manuellement...
(j'ai arrété au bout de qques lignes pour le coloriage! :)

Vous pensez que c'est faisable en excel?
Pour le tri sélectif, je pense que je peux trouver ça dans la faq excel, mais la mise en forme...

Merci d'avance
 

Pièces jointes

  • Comparatif.xlsx
    20.7 KB · Affichages: 44
  • Comparatif.xlsx
    20.7 KB · Affichages: 44
Dernière édition:

Victor21

XLDnaute Barbatruc
Re : 3 colonnes : épurer et comparer

Bonjour, Vincenzozo.

Comme ça ?
Le décompte des uniques, doublons, triplons s'effectue sur l'ensemble des 3 colonnes. (Voir les mises en forme conditionnelles)
 

Pièces jointes

  • Vincenzozo.xlsx
    26 KB · Affichages: 49
  • Vincenzozo.xlsx
    26 KB · Affichages: 47

Vincenzozo

XLDnaute Nouveau
Re : 3 colonnes : épurer et comparer

Bonjour,

Merci pour ta réponse, mais je ne pense pas que cela fonctionne tel que je le conçois du moins...
J'ai ajouté une macro (adaptée depuis internet...) qui trie les doublons par colonne. (voir plus bas)
J'ai aussi la possibilité de rajouter de nom de plages de cellules, des fois que ça simplifie le truc...

Ce que je souhaite, c'est que visuellement, en regardant les listes sans doublons, on voit rapidement les triplons, doublons et uniques sans distinction de la ligne...

ex :
A C B
B B
A
D___E

Les A sont en orange car doublons
Les B en vert car triplons : présence dans les 3 colonnes, sur plusieurs lignes
Les C, D et R sont en rouge car uniques

Est-ce que cela aide à comprendre ce que je souhaite faire?

Code:
Option Explicit
Option Base 1
 
Sub SupprimeDoublons()
    Dim Plage As Range, Cell As Range
    Dim Un As New Collection
    Dim Tableau() As Integer
    Dim x As Integer
    Dim Derncol As Long
    Dim DernLigne As Long
    Dim col As Integer


    Derncol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    For col = 1 To Derncol
 
    'Définit la plage de cellules pour la recherche de doublons
    DernLigne = Cells(Rows.Count, col).End(xlUp).Row
    Set Plage = Worksheets("Feuil1").Range(Cells(1, col), Cells(DernLigne, col))
 
    On Error Resume Next
    'Boucle sur les cellules de la plage cible
    For Each Cell In Plage
        'Création d'une collection de données uniques (sans doublons)
        Un.Add Cell, CStr(Cell)
 
        'Une erreur survient si l'élément existe dans la collection.
        'La procédure enregistre le numéro de ligne correspondant dans un tableau.
        If Err.Number <> 0 Then
            x = x + 1
            ReDim Preserve Tableau(1 To x)
            Tableau(x) = Cell.Row
            Err.Clear
        End If
    Next Cell
    On Error GoTo 0
 
    'On sort si aucun doublon n'a été trouvé.
    If x = 0 Then Exit Sub
 
    'Fige l'écran pendant la suppression des lignes
    Application.ScreenUpdating = False
 
    'Boucle sur le tableau pour supprimer les lignes contenant des doublons.
    For x = UBound(Tableau) To LBound(Tableau) Step -1
        Worksheets("Feuil1").Rows(Tableau(x)).Cells.Delete
    Next x
 
    Application.ScreenUpdating = True
    Next col
End Sub
 
Dernière édition:

Victor21

XLDnaute Barbatruc
Re : 3 colonnes : épurer et comparer

Re,

Vous vous étiez parfaitement expliqué. C'est moi qui ai fait une erreur (une histoire de dollars dans la zone à comparer : ET(A2<>"";NB.SI(A$2:C$343;A2)=1) au lieu de ET(A2<>"";NB.SI($A$2:$C$343;A2)=1)).
J'ai corrigé dans le fichier joint.
Désolé de vous avoir induit en erreur :(
 

Pièces jointes

  • Vincenzozo.xlsx
    24.1 KB · Affichages: 49
  • Vincenzozo.xlsx
    24.1 KB · Affichages: 46

Vincenzozo

XLDnaute Nouveau
Re : 3 colonnes : épurer et comparer

Bonjour,
Je dois jouer de malchance, parce que lorsque je recopie la mise en forme de la ligne 2 vers la ligne 3 et plus, bah, il ne se passe rien ou plutôt la lise en forme conditionnelle reste bloquée sur la ligne 2...
Ex pour la ligne 3 j'ai ça :
Code:
=ET(A2<>"";NB.SI($A$2:$C$343;A2)=1)

Faut que je parte sur une macro pour boucler la formule sur chaque ligne avec le numéro de la ligne repris dans les formules?

Edit : je me reponds à moi même, en fait dès que je modifie la formule en B2 par exemple, toute la zone A2:C243 se retrouve modifiée...
Vais commencer à ne plus aimer excel à ce rythme là...
 
Dernière édition:

Spinzi

XLDnaute Impliqué
Re : 3 colonnes : épurer et comparer

Bonjour Vincenzozo, Victor,

je crois que, dans le fichier que t'a construis Victor, tu n'as pas besoin de recopier une quelconque mise en page, tout est déjà paramétré.
Le seul changement à effectuer est ta plage de données ("$A$2:$C$343").

Spinzi
 

Discussions similaires

Statistiques des forums

Discussions
311 734
Messages
2 082 020
Membres
101 872
dernier inscrit
Colin T