Trier liste avec espacements sans doublons....

CyberNeo99

XLDnaute Occasionnel
Bonjour à tous,

Je suis encore à la recherche d'une formule pour trier en ordre alpha sans doublons mais cette fois à partir d'une liste dont il y a des espacements vides et parmi cette liste il y a des items que je ne veux pas.

Je joint un fichier pour illustrer ce que je recherche.


Merci à l'avance


Neo
 

Pièces jointes

  • Trier une liste avec des espacements sans doublons avec exclusions.xls
    19.5 KB · Affichages: 42
  • Trier une liste avec des espacements sans doublons avec exclusions.xls
    19.5 KB · Affichages: 47
  • Trier une liste avec des espacements sans doublons avec exclusions.xls
    19.5 KB · Affichages: 46

david84

XLDnaute Barbatruc
Re : Trier liste avec espacements sans doublons....

Bonsoir,
cf.fichier
A+
 

Pièces jointes

  • Trier une liste avec des espacements sans doublons avec exclusions.xls
    25.5 KB · Affichages: 58
  • Trier une liste avec des espacements sans doublons avec exclusions.xls
    25.5 KB · Affichages: 61
  • Trier une liste avec des espacements sans doublons avec exclusions.xls
    25.5 KB · Affichages: 60

CyberNeo99

XLDnaute Occasionnel
Re : Trier liste avec espacements sans doublons....

Bonjour David84,

merci pour le code.

Je venais tout juste de trouver une formule, la même que toi en fait ;o)))) Je pense que c'est toi en plus qu'ill'avait créer dans une de mes demandes.....


Gros Merci


Neo
 

Grand Chaman Excel

XLDnaute Impliqué
Re : Trier liste avec espacements sans doublons....

Bonjour CyberNeo,

Je préfère les macros au formules pour ce genre d'exercice, alors voici une proposition :

Code:
Sub TriSansDoublons()
' Note : il faut ajouter une référence à Microsoft Scripting Runtime pour
' utiliser l'objet Dictionary
' Dans VBE : Outils | Références | Microsoft Scripting Runtime


Dim p1 As Range, p2 As Range, p3 As Range
Dim Dict As Dictionary
Dim c As Range, c2 As Range
Dim bAjoute As Boolean
Dim v As Variant
Dim i As Integer

Application.ScreenUpdating = True

Set p1 = Application.InputBox("Plage contenant les valeurs à trier : ", , , , , , , 8)
Set p2 = Application.InputBox("Plage contenant les villes à ne pas considérer : ", , , , , , , 8)
Set p3 = Application.InputBox("Cellule de destination : ", , , , , , , 8)

Set Dict = New Dictionary

For Each c In p1
    If c.Value <> "" Then
        bAjoute = True
        For Each c2 In p2
            If c = c2 Then bAjoute = False
        Next c2
        
        If bAjoute Then
            If Not Dict.Exists(c.Text) Then Dict.Add c.Text, c.Text
        End If
    End If
Next c

i = 0
For Each v In Dict.keys
    p3.Offset(i, 0) = Dict.Item(v)
    i = i + 1
Next v

p3.Resize(Dict.Count, 1).Sort Key1:=p3, Order1:=xlAscending
Application.ScreenUpdating = False
End Sub

Pour la plage de villes à ne pas considérer, tu n'as qu'à les lister à quelque part dans ton classeur, Exemple en I2:I4

A+
 

david84

XLDnaute Barbatruc
Re : Trier liste avec espacements sans doublons....

Bonsoir,
en VBA en adaptant l'idée de Grand Chaman Excel :
Code:
Sub Trier()
Set mondico = CreateObject("Scripting.Dictionary")
Set p1 = Application.InputBox("Plage contenant les valeurs à trier : ", , , , , , , 8)
Set p2 = Application.InputBox("Plage contenant les villes à ne pas considérer : ", , , , , , , 8)
Set p3 = Application.InputBox("Cellule de destination : ", , , , , , , 8)

  For Each c In p1
    Nb = Application.WorksheetFunction.CountIf(p2, c.Value)
    If c.Value <> "" And Nb = 0 Then
        mondico.Item(c.Value) = c.Value
    End If
  Next c
  
  temp = mondico.Items
  Call tri(temp, LBound(temp), UBound(temp))
 p3.Resize(mondico.Count, 1) = Application.Transpose(temp)
End Sub

Sub tri(a, gauc, droi) ' Quick sort
  ref = a((gauc + droi) \ 2)
  g = gauc: d = droi
  Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call tri(a, g, droi)
  If gauc < d Then Call tri(a, gauc, d)
End Sub
A+
 

Discussions similaires

Réponses
8
Affichages
561

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T