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

Bonjour job75 🙂, le forum,

job75, votre MFC est, comment dire ... tout simplement géniale 😉.
Je dois avouer que je n'aurais jamais pu faire ceci ...
Merci pour votre solution 🙂.

Cordialement
 
Re : Extraction doublon ligne dans plage

Re,

Maintenant la macro du bouton :

Code:
Private Sub CommandButton1_Click() 'bouton Doublons
Dim ta, ncol%, tb(), d As Object, i&, x$, n&, j%
ta = [T] 'matrice, plus rapide
ncol = UBound(ta, 2)
ReDim tb(1 To UBound(ta), 1 To ncol)
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(ta)
  x = ta(i, 6) & " " & ta(i, 7) & " " & ta(i, 8) & " " & ta(i, 9) & " " & ta(i, 10)
  If d.exists(x) Then
    n = n + 1
    If ta(d(x), 1) <> Chr(1) Then
      For j = 1 To ncol
        tb(n, j) = ta(d(x), j)
      Next j
      ta(d(x), 1) = Chr(1) 'repérage
      n = n + 1
    End If
    For j = 1 To 4
      tb(n, j) = ta(i, j)
    Next j
  Else
    d(x) = i 'mémorisation de la 1ère ligne des doublons
  End If
Next i
'---restitution---
If n Then
  With [L2].Resize(n, ncol)
    .Value = tb
    .Offset(n).Resize(Rows.Count - n - 1).ClearContents
  End With
End If
End Sub
Fichier (2).

A+
 

Pièces jointes

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

job75,

Votre macro est très intéressante (dans la musette 🙂) mais ne répond pas à ma demande car je souhaite réellement entrer en plage Q2:U2 les numéros à la main afin de vérifier si ils existent en colonne F:J et restituer les jours / Date / Mois / Année.
Désolée de n'avoir pu être plus précise 😱.
En fait pour l'exemple, j'ai pris des nombres apparaissant dans la liste pour plus de lisibilité, mais il semblerait que ce soit raté ... les nombres entrés peuvent ne pas apparaitre en colonne F:J.
Merci de prendre de votre temps pour moi 😱.

Cordialement
 
Re : Extraction doublon ligne dans plage

Re,

Il manquait un tri dans la macro précédente, prenez donc celle-ci :

Code:
Private Sub CommandButton1_Click() 'bouton Doublons
Dim ta, ncol%, tb(), d As Object, i&, x$, n&, j%
ta = [T] 'matrice, plus rapide
ncol = UBound(ta, 2)
ReDim tb(1 To UBound(ta), 1 To ncol + 1) 'une colonne de plus, pour le tri
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(ta)
  x = ta(i, 6) & " " & ta(i, 7) & " " & ta(i, 8) & " " & ta(i, 9) & " " & ta(i, 10)
  If d.exists(x) Then
    n = n + 1
    If ta(d(x), 1) <> Chr(1) Then
      For j = 1 To ncol
        tb(n, j) = ta(d(x), j)
      Next j
      ta(d(x), 1) = Chr(1) 'repérage
      tb(n, ncol + 1) = d(x) 'pour permettre le tri
      n = n + 1
    End If
    For j = 1 To 4
      tb(n, j) = ta(i, j)
    Next j
    tb(n, ncol + 1) = d(x) 'pour permettre le tri
  Else
    d(x) = i 'mémorisation de la 1ère ligne des doublons
  End If
Next i
'---restitution---
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual 'à cause de la MFC
If n Then
  With [L2].Resize(n, ncol + 1)
    .Value = tb
    .Sort .Columns(ncol + 1), xlAscending, Header:=xlNo 'tri
    .Columns(ncol + 1).ClearContents
  End With
End If
[L2].Offset(n).Resize(Rows.Count - n - 1, ncol).ClearContents
Application.Calculation = xlCalculationAutomatic
End Sub
Fichier (3).

Edit : je viens de lire votre post #5, je vais voir ce qu'il faut faire.

A+
 

Pièces jointes

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

Re,

Bon ce que vous voulez maintenant (post #5) est beaucoup plus simple :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [Q1:U1]) Is Nothing Then Exit Sub
Dim ncol%, x$, ta, tb(), i&, y$, n&, j%
ncol = 4
If Application.Count([Q1:U1]) < 5 Then GoTo 1
x = [Q1] & " " & [R1] & " " & [S1] & " " & [T1] & " " & [U1]
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 ncol
      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).ClearContents
End Sub
Fichier (4).

A+
 

Pièces jointes

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

job75,

Merci pour votre retour, cela fonctionne à merveille 😀.
J'ai changé la plage à renseigner de votre macro (au lieu de Q1:U1, j'ai mis Q2:U2), cela à l'air de fonctionner correctement.
Y a t-il une raison au fait que vous ayez mis la plage à renseigner en Q1:U1 ?

Merci pour votre réponse.

Cordialement
 
Re : Extraction doublon ligne dans plage

Y a t-il une raison au fait que vous ayez mis la plage à renseigner en Q1:U1 ?

Ben supposez que vous avez 100 doublons.

Pour aller voir en bas il faut faire défiler les lignes.

Donc il vaut mieux que la plage de référence soit dans la ligne des titres (figée) pour rester visible.

Nota : j'ai un peu modifié tout à l'heure ma macro (4), vérifiez que vous avez pris la bonne version.

A+
 
Re : Extraction doublon ligne dans plage

job75,

Merci pour votre réponse, la vue sur la plage de référence est une bonne chose 🙂.
En revanche, je remarque que la macro "parasite" les résultats de mon onglet précédent 😕, notamment mes colonnes N à R contenant des fonctions.
Auriez-vous une explication à ceci ?
Quoiqu'il en soit, votre travail est précisément ce que je souhaitais 😉.
Merci beaucoup pour le partage de votre temps et de votre savoir.

Merci à vous et merci au forum 🙂.

Cordialement
 
Re : Extraction doublon ligne dans plage

job75,

Il s'agit d'un fichier exemple, mais mon fichier original comporte 7 onglets, et celui ou se trouve votre macro est le septième.
En soit, "le parasitage" n'est pas trop gênant car il n'efface pas mes fonctions mais les transforme en ##### et si je souhaite que tout revienne normal, il me faut recopier mes fonctions.
Je souhaitais simplement savoir si l'interférence entre votre macro et les fonctions pouvait être supprimée.
Voili, voilou 🙂.

Merci à vous 😉

Cordialement
 
Re : Extraction doublon ligne dans plage

Bonjour job75, le forum,

Afin de palier à ce petit désagrément, je vais laisser ces statistiques dans un fichier à part qui ira chercher ses références dans un autre classeur 🙂.
Encore une fois un GRAND MERCI à job75 pour son super travail 😉 et merci au forum 🙂.

Cordialement
 
Re : Extraction doublon ligne dans plage

Bonjour Annette,

Afin de palier à ce petit désagrément, je vais laisser ces statistiques dans un fichier à part qui ira chercher ses références dans un autre classeur 🙂

Vous n'êtes pas parvenue à trouver l'origine de ces ###### ?

Nous non plus puisque vous ne nous montrez pas le fichier.

Il faut toujours arriver à comprendre ce qui se passe dans un fichier.

C'est comme ça qu'on progresse et qu'on évite de construire des usines à gaz.

A+
 
Re : Extraction doublon ligne dans plage

Bonjour job75 🙂,

Il faut toujours arriver à comprendre ce qui se passe dans un fichier.

C'est comme ça qu'on progresse et qu'on évite de construire des usines à gaz.

A+


Vous avez tout à fait raison mais je n'ai pas voulu abuser de vos compétences ...😱
Ci-joint un exemple de mon fichier stats ou "la chose" se produit dans mon onglet "Feuil5" quand des nombres sont entrés onglet "Compare" Q2:U2.

Merci encore pour votre intervention
 

Pièces jointes

- 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…