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

XL 2016 retrouver toutes les combinaison Excel existante dans 2 colonnes

AhmedLounes

XLDnaute Nouveau
Bonjour,

Besoin d'aide !!!
Je souhaite récupérer et faire apparaitre dans une autre feuille de mon fichier toutes les combinaisons EXISTANTE et non possible entre les ville de départ et arrivée.

Merci d'avance.

Cordialement.
 

Pièces jointes

  • aide.xlsx
    8.4 KB · Affichages: 24

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous ,

Une autre méthode :
  • sélectionner la plage (avec les en-têtes) ou bien copier la plage ailleurs puis sélectionner la plage copiée si vous ne voulez pas toucher à la zone source
  • menu Données / Supprimer les doublons
  • cocher les cases adéquates puis OK
 

job75

XLDnaute Barbatruc
Bonjour AhmedLounes, djidji59430, Exl-Noob, mapomme,

Oui mapomme et en VBA c'est très simple :
VB:
Sub MAJ()
Application.ScreenUpdating = False
[D:E].Copy [G1] 'copier-coller
[G:H].Sort [G1], xlAscending, [H1], , xlAscending, Header:=xlYes 'tri sur 2 colonnes
[G:H].RemoveDuplicates Array(1, 2), xlYes 'supprime les paires en doublon
End Sub
A+
 

Pièces jointes

  • aide(1).xlsm
    16.2 KB · Affichages: 5

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @job75 ,

D'habitude, je fais ce que tu as codé : Tri puis suppression des doublons.

J'ai tenté l'expérience sur 750 000 lignes de données. La version avec tri est bien plus lente que la version sans tri. C’est bizarre, il m'avait semblé que le tri améliorait les performances sur des fichiers et/ou versions antérieures.
 

Pièces jointes

  • Retirer doublons.xlsm
    18.5 KB · Affichages: 4

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

J'ai ajouté une troisième méthode via dictionary. C'est la plus rapide.
Je pense que les résultat sont très largement influencés par le fait que le nombre de lignes restantes est très faible (11). De ce fait la recherche sur le dictionary est très très rapide.
 

Pièces jointes

  • Retirer doublons v2.xlsm
    21.1 KB · Affichages: 3

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,
Avec beaucoup moins de doublons, l'écart entre entre "avec tri" et "sans tri" se réduit ("sans tri" parvient à passer juste devant "sans tri") alors que la méthode avec dictionary passe en queue de peloton.
 

Pièces jointes

  • Retirer doublons v3.xlsm
    19.8 KB · Affichages: 7

job75

XLDnaute Barbatruc
Le tri suivi d'un traitement du tableau VBA est très rapide :
VB:
Sub MajAvecTriTableauVBA()
Dim t, tablo, x$, i&, y$, z$, n&
    t = Timer
    Application.ScreenUpdating = False
    [D:E].Copy [G1] 'copier-coller
    [G:H].Sort [G1], xlAscending, [H1], , xlAscending, Header:=xlYes 'tri sur 2 colonnes
    tablo = [G1].CurrentRegion 'matrice, plus rapide
    x = tablo(1, 1) & tablo(1, 2)
    For i = 2 To UBound(tablo)
        y = tablo(i, 1): z = tablo(i, 2)
        If x <> y & z Then
            n = n + 1
            tablo(n, 1) = y: tablo(n, 2) = z
        End If
        x = y & z
    Next
    '---restitution---
    With [G2]
        If n Then .Resize(n, 2) = tablo
        .Offset(n).Resize(Rows.Count - n - .Row + 1, 2).ClearContents 'RAZ en dessous
    End With
    MsgBox Format(Timer - t, "0.0\ sec.")
End Sub
 

Pièces jointes

  • Retirer doublons(1).xlsm
    19.8 KB · Affichages: 5

Discussions similaires

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