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

  • Initiateur de la discussion Initiateur de la discussion Jouxte
  • Date de début Date de début

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 !

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

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
 
- 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 worksheet_change
Réponses
29
Affichages
250
Réponses
39
Affichages
3 K
Réponses
2
Affichages
730
Retour