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

[RESOLU] Extraction doublon ligne dans plage

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Annette

XLDnaute Occasionnel
Bonjour le forum,

Dans ma recherche de statistiques, je tente de faire deux choses:

- Extraire une (ou plusieurs) ligne(s) correspondant à des doublons dans une plage
- Remplir en rouge les lignes en doublons.

En souhaitant que ma demande soit claire 🙂.

Merci pour vos suggestions 🙂.

Cordialement
 

Pièces jointes

Dernière édition:
Re : Extraction doublon ligne dans plage

Re,

Votre fonction personnalisée ColorCountIf est volatile.

De ce fait elle est recalculée partout où elle se trouve chaque fois qu'une cellule ou une plage de cellules du classeur sont modifiées.

Alors dans la feuille "Compare" utilisez cette macro :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [Q2:U2]) Is Nothing Then Exit Sub
Dim ncol%, x$, ta, tb(), i&, y$, n&, j%
ncol = 4
If Application.Count([Q2:U2]) < 5 Then GoTo 1
x = [Q2] & " " & [R2] & " " & [S2] & " " & [T2] & " " & [U2]
ta = [t] 'matrice, plus rapide
ReDim tb(1 To UBound(ta), 1 To ncol)
For i = 1 To UBound(ta)
  y = ta(i, 6) & " " & ta(i, 7) & " " & ta(i, 8) & " " & ta(i, 9) & " " & ta(i, 10)
  If x = y Then
    n = n + 1
    For j = 1 To 4
      tb(n, j) = ta(i, j)
    Next j
  End If
Next i
'---restitution---
1 Application.Calculation = xlCalculationManual 'mode de calcul manuel
If n Then [L2].Resize(n, ncol) = tb
[L2].Offset(n).Resize(Rows.Count - n - 1, ncol).ClearContents
Application.Calculation = xlCalculationAutomatic 'mode de calcul automatique
End Sub
A+
 
Re : Extraction doublon ligne dans plage

Re,

Ah là comme vous je découvre, ceci ne pose aucun problème :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [Q2:U2]) Is Nothing Then Exit Sub
Dim ncol%, x$, ta, tb(), i&, y$, n&, j%
ncol = 4
If Application.Count([Q2:U2]) < 5 Then GoTo 1
x = [Q2] & " " & [R2] & " " & [S2] & " " & [T2] & " " & [U2]
ta = [t] 'matrice, plus rapide
ReDim tb(1 To UBound(ta), 1 To ncol)
For i = 1 To UBound(ta)
  y = ta(i, 6) & " " & ta(i, 7) & " " & ta(i, 8) & " " & ta(i, 9) & " " & ta(i, 10)
  If x = y Then
    n = n + 1
    For j = 1 To 4
      tb(n, j) = ta(i, j)
    Next j
  End If
Next i
'---restitution---
If n Then [L2].Resize(n, ncol) = tb
1 [L2].Offset(n).Resize(Rows.Count - n - 1, ncol) = ""
End Sub
Donc c'est .ClearContents qui sème la pagaille 😕

Et ça semble mieux en terme de rapidité, du moins chez moi (Excel 2003).

Nota : en 13ème ligne écrivez For j = 1 To ncol comme je l'ai fait au post #7.

A+
 
Dernière édition:
Re : Extraction doublon ligne dans plage

job75,

Merci pour vos explications et pour la rectification de votre macro 🙂
Tout fonctionne à merveilles 😉

Merci à vous et merci au forum 🙂.

Cordialement
 
Re : [RESOLU] Extraction doublon ligne dans plage

Je suis votre fil du coin de l’œil depuis son ouverture mais très honnêtement j'ai un peu de mal ... mais petit à petit à petit, je m'améliore... 🙄.

Cordialement
 
Re : [RESOLU] Extraction doublon ligne dans plage

salut

Donc … pour ne pas mélanger les problèmes
.
En terme de rapidité - sur un nombre très conséquent de lignes- ne serait-il pas intéressant de ne concaténer que les 4 dernières cellules car le nom du jour est automatiquement trouvé avec le quantième.
Dans ce cadre, il n’y a de petits profits à négliger, non ?

Connaissant ton sens extrême de la perfection, je te laisse, Job 😀, le soin de comparer la rapidité (bien sûr si cela t’intéresse) de ta méthode et de celle à laquelle j’ai pensé (utilisation de filtres).
Je ne la donne surtout qu’à titre d’exemple car ta dernière proposition est efficace chez moi aussi (avec mon 2010)😎.

Je jetterai, sans doute, un œil à la fonction qui compte les couleurs et avec ce que j’ai pu comprendre, sur laquelle on ne peut pas trop compter.
 

Pièces jointes

Re : [RESOLU] Extraction doublon ligne dans plage

Bonsoir Si...

Avec des tableaux VBA la recherche des doublons sera toujours très rapide.

Sur le fichier d'Annette ce qui prend du temps c'est le recalcul des fonctions volatiles en Feuil5 lors de la restitution.

Quant à l'utilisation d'un filtre, cela prend beaucoup de temps si l'on obtient un grand nombre de lignes disjointes.

A+
 
Re : [RESOLU] Extraction doublon ligne dans plage

re


avec 2010 et un peu plus de 14800 lignes (sauf erreur de test) :

Regarde la pièce jointe 931670
 

Pièces jointes

  • compare.jpg
    100.3 KB · Affichages: 22
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Doublon
Réponses
4
Affichages
179
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…