XL 2013 Liste triée sans doublon - modification du code

Jouxte

XLDnaute Occasionnel
Bonjour à toutes et tous,

J'utilise un code qui me sert à créer une liste triée sans doublon des élémements de la colonne "C" de la feuille Nom.
J'aurais souhaité faire évoluer ce code pour :
1 que la liste créée vienne se coller en B2 et non pas en B1de la feuille Liste
2 Créer une deuxième liste triée sans doublon qui vienne se coller en D2 de la feuille liste.
Ci-Joint fichier test.

Merci par avance pour vos solutions.

le code actuel est :
VB:
Private Sub Worksheet_Activate()
Me.Range("B:B").Clear
Set liste = CreateObject("scripting.dictionary")
With Sheets("Nom")
For Each c In .Range("C2:C" & .Range("C" & Rows.Count).End(xlUp).Row)
    liste(c.Value) = c.Value
Next c
End With
Me.Range("B1:B" & liste.Count) = Application.Transpose(liste.keys)
Me.Range("B1:B" & liste.Count).Sort key1:=Range("B1"), order1:=xlAscending, Header:=xlNo

End Sub
 

Pièces jointes

  • Test.xlsm
    18.3 KB · Affichages: 7

laurent950

XLDnaute Accro
Bonsoir @Jouxte

VB:
Private Sub Worksheet_Activate()
Dim liste As Object
Dim Rgn As Range
With Sheets("Nom")
    Worksheets("Liste").Range("B:B").Clear
    Set liste = CreateObject("scripting.dictionary")
    '1 que la liste créée vienne se coller en B2 et non pas en B1de la feuille Liste
    For Each c In .Range("C2:C" & .Range("C" & Rows.Count).End(xlUp).Row)
        liste(c.Value) = c.Value
    Next c
    Me.Range("B2:B" & liste.Count + 1) = Application.Transpose(liste.Keys)
    Me.Range("B2:B" & liste.Count + 1).Sort key1:=Range("B2"), order1:=xlAscending, Header:=xlNo
    Set liste = Nothing
    '
    '2 Créer une deuxième liste triée sans doublon qui vienne se coller en D2 de la feuille liste.
    Worksheets("Liste").Range("D:D").Clear
    Set liste = CreateObject("scripting.dictionary")
    For Each c In .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row)
        liste(c.Value) = c.Value
    Next c
    Me.Range("D2:D" & liste.Count + 1) = Application.Transpose(liste.Keys)
    Me.Range("D2:D" & liste.Count + 1).Sort key1:=Range("D2"), order1:=xlAscending, Header:=xlNo
End With
End Sub
Me.Range("B1:B" &
Me.Range("B2:B" & liste.Count + 1)
La : liste.Keys Commence à 0 donc pour 3 Valeurs = 0 / 1 / 2 et comme excel Commence a 1 donc ( liste.Count + 1) pour 1 / 2 / 3
 

Discussions similaires