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
E

Exl-Noob

Guest
Bonjour @AhmedLounes,

C'est une bonne réponse de @djidji59430 que je vais proposer d'améliorer en "répétant les étiquettes d'élément" (clic sur champ ville > Paramètres de champs)
1610528590960.png

Pour que ça donne ça :
1610528709309.png
 

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

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

Statistiques des forums

Discussions
312 373
Messages
2 087 724
Membres
103 654
dernier inscrit
kingdz2022