XL 2010 Tri sur doublons/triplons (Résolu)

vidalv

XLDnaute Nouveau
Bonjour à tous,
voici mon problème, j'ai extrais avec une macro des données sur 3 onglets d'excel 2010. La feuille 1 contiens une série de données que l'on va retrouver sur la feuille 2 et sur la 3. J'aimerais faire un tri afin de ne conserver que les lignes qui n’apparaissent en feuille 3 (voir exemple joint) à savoir 18 Lignes (de la ligne 5 à la fin ligne 22) purger la feuille 2 des lignes qui ne sont pas en feuille 3 et de même sur la feuille 1.
Merci pour vos idées !
Vincent.
 

Pièces jointes

  • Tri.xlsx
    14 KB · Affichages: 66

vidalv

XLDnaute Nouveau
Bonjour,

euh, comment se caractérise un doublon ?

Désolé ! En effet sans repère de tri c'est plus difficile ...

Les doublons se caractérises par les colones B et C par exemple :
Sur feuille F3 nous avons 2,14; 2,19; 2,20; 2,21; 2,22; 2,23; et 2,25.
que l'on retrouve sur F2 ou il faut éliminer les lignes 2,15 et 2,16.
ainsi que sur F1 ou il faut éliminer ces mêmes lignes.
J’espère être plus claire ?

Merci.

Vincent.
 

vidalv

XLDnaute Nouveau
Bonjour vidalv

Un essai
Merci pierrejean, après essai il semble que l'elimination des lignes non désirées ne soit pas la bonne.

Ici les 3 feuilles initiales :
upload_2017-1-24_13-35-40.png


Les lignes en jaune sont en trop par rapport au premier tableau (feuille F3) après traitement voici le tableau :

upload_2017-1-24_13-37-13.png


En fait au lieu de me retrouver avec les mêmes colonnes B et C / L et M / V et W il y a un mixte.
Peut-être que la definition des lignes à effacer : Set c = Sheets("F3").Columns(1).Find(x, LookIn:=xlValues, lookat:=xlWhole)
n'est pas complete, il faut le "Y" aussi dans le find ?

PS: J'utilise une version Française d'Excel 2010.

Merci.

Vincent.
 

vidalv

XLDnaute Nouveau
Voici le code de pierrejean modifié pour prendre en compte les 2 colonnes B et C, mais ça coince sur la deuxième ligne Set C = ..... C prends une valeur 'Nothing'. Je vois pas pourquoi ?
C'est quoi .Columns(1) le 1 ?

Merci.

VB:
Sub Tri()

Sheet = Array("F1", "F2")                                                               ' List Sheets.
For m = LBound(Sheet) To UBound(Sheet)                                                  ' Loop on Array Sheets.
     For n = Sheets(Sheet(m)).Range("A" & Rows.Count).End(xlUp).Row To 5 Step -1        ' Loop on lines (Last to First).
        x = Sheets(Sheet(m)).Range("B" & n)                                             ' X Val.
        y = Sheets(Sheet(m)).Range("C" & n)                                             ' Y Val.
     
        Set B = Sheets("F3").Columns(1).Find(x, LookIn:=xlValues, lookat:=xlWhole)      ' Set the B value.
        Set C = Sheets("F3").Columns(1).Find(y, LookIn:=xlValues, lookat:=xlWhole)      ' Set the C value.
     
        If (B Is Nothing) Or (C Is Nothing) Then                                        ' If one "Nothing"
          Sheets(Sheet(m)).Rows(n).Delete                                               ' delete the line.
        End If                                                                          ' End nothing.
   
      Next                                                                              ' Next loop "Lines"

Next                                                                                    ' Next loop "Sheets"

End Sub
 

pierrejean

XLDnaute Barbatruc
Re
Un problème bien posé est à moitié résolu
Vis si ceci est meilleur

Sub test()
feuilles = Array("F1", "F2")
For m = LBound(feuilles) To UBound(feuilles)
For n = Sheets(feuilles(m)).Range("A" & Rows.Count).End(xlUp).Row To 5 Step -1
x = Sheets(feuilles(m)).Range("B" & n)
y = Sheets(feuilles(m)).Range("C" & n)
For p = Sheets("F3").Range("B" & Rows.Count).End(xlUp).Row To 5 Step -1
x1 = Sheets("F3").Range("B" & p)
y1 = Sheets("F3").Range("C" & p)
If x = x1 And y = y1 Then ok = True
Next
If ok = False Then
Sheets(feuilles(m)).Rows(n).Delete
End If
ok = False
Next
Next

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 587
Membres
109 084
dernier inscrit
mizab