obtenir une liste sans doublons  Sujet résolu

Pour toutes vos questions à propos d'Excel ...

obtenir une liste sans doublons  Sujet résolu

Messagepar vba-new » 22 Août 2009, 03:03

bonsoir forum,

J'ai créé une liste B de données découlant d'une liste A.

Cependant, dans la liste B, je me retrouve avec des doublons.
Comment faire pour obtenir une liste de données distinctes?

Je vous joins le fichier correspondant avec quelques explications dessus également : http://www.excel-pratique.com/~files/do ... mmande.xls

Je vous remercie d'avance pour votre aide.
vba-new
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Messagepar cousinhub » 22 Août 2009, 04:53

Bonjour,

essaie avec ce code dans l'évènement de feuille (Feuil4)

Code: Tout sélectionner
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
Dim Fournisseurs As Object
If Target.Count > 1 Then Exit Sub
If Target.Address = "$A$2" And Target <> "" Then
    Set Fournisseurs = CreateObject("Scripting.Dictionary")
    With Sheets(CStr(Target))
        For Each Cel In .Range("B2:B" & .[B65000].End(xlUp).Row)
            Fournisseurs.Item(Cel.Value) = Cel.Value
        Next Cel
    End With
    temp = Fournisseurs.items
    Call tri(temp, LBound(temp), UBound(temp))
    For i = LBound(temp) To UBound(temp)
        tmp = tmp & "," & temp(i)
    Next i
    tmp = Right(tmp, Len(tmp) - 1)
    With Target.Offset(, 1)
        .ClearContents
        .Validation.Delete
        .Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=tmp
        .Select
    End With
End If
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


http://www.excel-pratique.com/~files/do ... nde_v1.zip
cousinhub
Membre dévoué
 
Messages: 928
Inscription: 28 Mai 2009, 22:18
Localisation: Brest
Version Excel: xl 2003, xl 2007

Messagepar vba-new » 22 Août 2009, 09:14

Bonjour cousinhub, forum,

1. Post ouvert le 22/08/09 à 3h03

2. Répondu à 4h53

3. Mis en Résolu à 9h14

Que demander de plus?

Merci beaucoup cousinhub!! Tes interventions restent toujours d'aussi bonne facture :D

Edit1 : point 3 : pas tout à fait encore :D
Dernière édition par vba-new le 22 Août 2009, 10:37, édité 2 fois.
vba-new
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Messagepar Nad-Dan » 22 Août 2009, 09:23

Bonjour vba-new

vba-new a écrit:Que demander de plus?


Le passer effectivement en RESOLU ? OOOO

Amicalement
Nad
Nad-Dan
Modérateur
 
Messages: 7309
Inscription: 27 Avr 2007, 15:30
Localisation: Nad à Dax (France) - Dan à Liège (Belgique)
Version Excel: 2003 FR-2007 FR-MAC 2004 FR

Messagepar vba-new » 22 Août 2009, 09:25

Une petite demande avant de mettre le post en résolu :)

La présentation étant peu attirante, est-il possible de mettre ces deux listes dans des ComboBox, ListBox ou autres? Le but étant de l'égayer un peu, cette présentation :oops:

Merci d'avance :D

Edit : salut Nad, je ne manquerai pas de le faire :D
vba-new
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Messagepar cousinhub » 22 Août 2009, 10:09

cousinhub
Membre dévoué
 
Messages: 928
Inscription: 28 Mai 2009, 22:18
Localisation: Brest
Version Excel: xl 2003, xl 2007

Messagepar vba-new » 22 Août 2009, 10:35

C'est exactement ce qu'il me faut cousinhub! Merci beaucoup!

Par contre, je viens de le voir, dans le fichier précédent, lorsque je sélectionne le compte 606, je n'ai pas toute la liste des fournisseurs :shock:

Il semblerait que la taille de la liste déroulante ne permette pas de voir le reste des fournisseurs!

Y a-t-il un remède à ça?

PS : je te demande ça car j'aimerais quand même garder la liste sans userform quelque part! Ça pourrait me servir plus tard :D
vba-new
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Messagepar cousinhub » 22 Août 2009, 10:51

Re,

Effectivement, la liste est trop longue, pour la validation de données...

Un petit ersatz...

colonne H masquée, on met dedans la liste triée sans doublons...

Et on y fait référence dans la validation de données...

http://www.excel-pratique.com/~files/do ... nde_v3.zip
cousinhub
Membre dévoué
 
Messages: 928
Inscription: 28 Mai 2009, 22:18
Localisation: Brest
Version Excel: xl 2003, xl 2007

Messagepar vba-new » 22 Août 2009, 11:05

Parfait cousinhub!

Un dernier petit truc sur l'affichage par userform :oops:

Lorsque je sélectionne le compte 606 (avec l'userform donc), la liste des fournisseurs n'est pas complètement triée dans l'ordre alphabétique :shock:

Image

Comment cela se fait-il?

Merci encore pour ton aide cousinhub!
vba-new
vba-new
Membre impliqué
 
Messages: 2586
Inscription: 13 Mai 2009, 10:27
Version Excel: 2010 FR

Messagepar cousinhub » 22 Août 2009, 11:07

Re-,

en haut du code de l'usf, tu mets ceci :

Code: Tout sélectionner
Option Compare Text


afin de s'affranchir des minuscules et des majuscules....
cousinhub
Membre dévoué
 
Messages: 928
Inscription: 28 Mai 2009, 22:18
Localisation: Brest
Version Excel: xl 2003, xl 2007

Suivante

Retourner vers Excel - VBA

 


  • Sujets similaires
    Réponses
    Vus
    Dernier message

Utilisateurs en ligne

Utilisateurs parcourant ce forum: Bing [Bot], Google [Bot] et 6 invités