Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Surligner les doublons mais pas la première Occurrence

Doze

XLDnaute Nouveau
Bonjour à tous,

Je recherche à surligner tout les doublons sauf la première occurrence dans une colonne précise d'un fichier d'environs 50000 à 60000 ligne, comme dans l'exemple ci dessous




Mon code VBA pour le moment est le suivant


VB:
Sub RechercherDoublons()

  Dim col, nbCells, i, j

  col = ActiveCell.Column

  nbCells = Application.WorksheetFunction.CountA(Range(Columns(col), Columns(col)))

  For i = 1 To nbCells - 1

    For j = i + 1 To nbCells

      If Cells(i, col) = Cells(j, col) Then

        Cells(j, col).Interior.Color = RGB(255, 0, 0)

      End If

    Next j

  Next i

End Sub

Cela marche très bien pour de petit tableau mais lors de l'exécution sur mon fichier de base cela fait planter excel. Petite précision nous utilisons encore excel 2013 et nos ordinateurs ne sont pas extrêmement performant.

Auriez vous des pistes pour Améliorer mon code pour l'utilisation sur un fichier conséquent ? J'utilise de base Javascript et je découvre tout juste VBA.

Merci beaucoup aux personnes qui prendront le temps de me répondre.

Bonne fin de week end à tous.
 

mic6259

XLDnaute Occasionnel
Bonjour ma pomme, le code m'intéresse.
Serait il possible de faire de rechercher sur une plage de la feuille définie, par exemple en A1:J30, ou toute la feuille ?
Merci beaucoup
 

job75

XLDnaute Barbatruc
Bonjour mic6259,

Le code de mapomme a l'avantage d'éviter le Dictionary grâce à un tri.

Mais cela a lieu sur une seule colonne.

Sur plusieurs colonnes le mieux est de revenir au Dictionary.

A+
 

job75

XLDnaute Barbatruc
Pourriez vous le faire ?.
J'ai votre fichier avec Dictionary
Ce n'est guère compliqué voyez ce fichier (2) et la macro :
VB:
Private Sub Worksheet_Calculate()
Dim t, d As Object, tablo, ncol%, i&, j%, x$, n&
t = Timer
Set d = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With UsedRange
    .Interior.ColorIndex = xlNone 'RAZ
    tablo = .Value 'matrice, plus rapide
    ncol = UBound(tablo, 2)
    For i = 1 To UBound(tablo)
        For j = 1 To ncol
            x = tablo(i, j)
            If x <> "" Then
                If d.exists(x) Then
                    n = n + 1
                    .Cells(i, j).Interior.ColorIndex = 44 'orange
                Else
                    d(x) = ""
                End If
            End If
    Next j, i
End With
MsgBox n & " cellules colorées en " & Format(Timer - t, "0.00 \sec")
End Sub
Elle se déclenche quand les formules (volatiles) sont recalculées.

Salut mapomme.
 

Pièces jointes

  • VBA comme MFC(2).xlsm
    687.9 KB · Affichages: 6

mic6259

XLDnaute Occasionnel
Sur ton fichier, la recherche doublon se fait sur une colonne. Serait il possible de le faire sur une plage sélectionnée ?
Excusez-moi je me suis trompé de fichier que vous avez mis dans ce forum
Je le mets pour comprendre par rapport a ma question plus haut.
Merci beaucoup job et mapomme
 

Pièces jointes

  • Doze- colorer doublons- v1 (1).xlsm
    337.1 KB · Affichages: 7

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…