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

Colorier les doublons par lignes en VBA! (RESOLU)

JBARBE

XLDnaute Barbatruc
Bonjour à tous,

Je n'ai pas trouvé la recherche de doublons sur des lignes ( seulement les doublons sur colonnes)!

Ci-joint un fichier exemple !

Est-ce possible ?

Merci à l'avance !

bonne journée
 

Pièces jointes

  • Doublons_lignes_coloriage.xls
    36.5 KB · Affichages: 46
  • Doublons_lignes_coloriage.xls
    36.5 KB · Affichages: 59
  • Doublons_lignes_coloriage.xls
    36.5 KB · Affichages: 60
Dernière édition:

JBARBE

XLDnaute Barbatruc
Re : Colorier les doublons par lignes !

Bonjour Monique,

Merci pour ta réponse mais j'aurais aimé avoir une macro pour ce genre de demande ( pas de MFC , ni formule) !

Excuse-moi de ne pas l'avoir précisé !

bonne journée
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Colorier les doublons par lignes en VBA!

Bonjour,


Code:
Sub ColoriageDoublonsNbSi()
  [A1].CurrentRegion.Interior.ColorIndex = xlNone
  Application.ScreenUpdating = False
  For i = 1 To [A65000].End(xlUp).Row
    Set champ = Cells(i, 1).Resize(, 4)
    For c = 1 To 4
     If Application.CountIf(champ, Cells(i, c)) > 1 Then Cells(i, c).Interior.ColorIndex = 6
    Next c
  Next i
End Sub


Si beaucoup de lignes, il existe des méthodes + rapides.


JB
 

Pièces jointes

  • Doublons_lignes_coloriage.xls
    36.5 KB · Affichages: 58
  • Doublons_lignes_coloriage.xls
    36.5 KB · Affichages: 85
  • Doublons_lignes_coloriage.xls
    36.5 KB · Affichages: 71
Dernière édition:

job75

XLDnaute Barbatruc
Re : Colorier les doublons par lignes en VBA!

Bonjour JBARBE, Monique, JB,

Application d'une MFC par macro, version française d'Excel :

Code:
Sub MFC()
Cells.FormatConditions.Delete 'RAZ
With [A1].CurrentRegion
  .Cells(1).Select 'pour Excel 2003
  .FormatConditions.Add xlExpression, _
    Formula1:="=NB.SI(" & .Rows(1).Address(0, 1) & ";A1)>1"
  .FormatConditions(1).Interior.ColorIndex = 6 'jaune
End With
End Sub
A+
 

JBARBE

XLDnaute Barbatruc
Re : Colorier les doublons par lignes en VBA!

Merci Job, Merci Boisgontier,

Je vais prendre la macro de Boisgontier car elle ne fait pas appel à la MFC !

Le fichier a une centaine de ligne !

Merci quand même Job et bonne journée à tous !
 

job75

XLDnaute Barbatruc
Re : Colorier les doublons par lignes en VBA!

Re,

Bon j'ai cru voir qu'il ne fallait pas de MFC, alors :

Code:
Sub ColorierDoublons()
Application.ScreenUpdating = False
With [A1].CurrentRegion
  .EntireColumn.Interior.ColorIndex = xlNone 'RAZ
  '---entre les formules dans un 2ème tableau---
  .Cells(1).Offset(, .Columns.Count) = _
    "=LN(COUNTIF(" & .Rows(1).Address(0, 1) & ",A1)>1)"
  .Cells(1).Offset(, .Columns.Count).Copy .Offset(, .Columns.Count)
  '---copie les formats du 1er tableau sur le 2ème---
  .Copy
  .Offset(, .Columns.Count).PasteSpecial xlPasteFormats
  '---colorie le 2ème tableau---
  On Error Resume Next
  .Offset(, .Columns.Count).SpecialCells(xlCellTypeFormulas, 1) _
    .Interior.ColorIndex = 6 'jaune
  '---copie les formats du 2ème tableau sur le 1er---
  .Offset(, .Columns.Count).Copy
  .PasteSpecial xlPasteFormats
  '---supprime le 2ème tableau---
  .Offset(, .Columns.Count).EntireColumn.Delete
  .Cells(1).Select
End With
End Sub
Edit : testé sans problème jusqu'à 5000 lignes x 4 colonnes.

Mais avec 10000 lignes rien ne va plus (sur Excel 2003 du moins).

C'est sûrement à cause des trop nombreuses plages disjointes créées par SpecialCells.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Colorier les doublons par lignes en VBA! (RESOLU)

Re,

Pour pallier l'inconvénient de la macro précédente utiliser :

Code:
Sub ColorierDoublons()
Dim cc%, i&
Application.ScreenUpdating = False
With [A1].CurrentRegion
  cc = .Columns.Count
  .EntireColumn.Interior.ColorIndex = xlNone 'RAZ
  '---entrée des formules dans un 2ème tableau---
  .Cells(1).Offset(, cc) = "=LN(COUNTIF(" & .Rows(1).Address(0, 1) & ",A1)>1)"
  .Cells(1).Offset(, cc).Copy .Offset(, cc)
  '---copie les formats du 1er tableau sur le 2ème---
  .Copy
  .Offset(, cc).PasteSpecial xlPasteFormats
  '---itérations par pas de 500 lignes---
  On Error Resume Next
  For i = 0 To .Rows.Count - 1 Step 500
    '---colorie le 2ème tableau---
    .Offset(i, cc).Resize(500).SpecialCells(xlCellTypeFormulas, 1) _
      .Interior.ColorIndex = 6 'jaune
    '---copie les formats du 2ème tableau sur le 1er---
    .Offset(i, cc).Resize(500).Copy
    .Offset(i).Resize(500).PasteSpecial xlPasteFormats
  Next
  '---supprime le 2ème tableau---
  .Offset(, cc).EntireColumn.Delete
  '---mise à jour de la barre de défilement verticale---
  .Offset(.Rows.Count).Resize(500).Delete xlUp
  .Parent.UsedRange.Select
  .Cells(1).Select
End With
End Sub
Sur 10000 lignes x 4 colonnes la macro s'exécute en 0,53 seconde sur Excel 2003.

Celle de JB en 3,48 secondes, JB a bien dit qu'il y avait plus rapide.

A+
 

Discussions similaires

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