Les Snippets

Connexion

Supprimer les doublons d'un combobox

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 23/04/2007 09:38:19 et initié par OneHacker [Liste]
Date de mise à jour : 03/06/2007 16:52:28
Vue : 10002
Catégorie(s) : Control
Langages dispo pour ce code :
- VB 2005, VB.NET 1.x
- VB6, VBA
- VB6, VBA
- Javascript
- C# 1.x, C# 2.x
- Delphi 5
- Delphi 5



Langage : VB.NET 1.x , VB 2005
Date ajout : 23/04/2007
Posté par OneHacker [Liste]
DateMAJ : 23/04/2007
 Dim cResult(cbTest.Items.Count) As String
        For Each item As String In cbTest.Items
            cResult(cbTest.Items.IndexOf(item)) = item
        Next
        cResult.Sort(cResult)
        cResult.Reverse(cResult)
        Dim newindex As Integer
        For Each item As String In cResult
            If item Is Nothing Then
                newindex = cResult.IndexOf(cResult, item)
                Exit For
            End If
        Next

        Dim cnewResult(newindex - 1)
        cResult.Copy(cResult, 0, cnewResult, 0, newindex)
        cnewResult.Sort(cnewResult)
        cbTest.Items.Clear()
        cbTest.Items.AddRange(cnewResult)
        MsgBox("End Clear")
Remarque :
cbTest est un combobox
Mettre le code dans une procédure
Langage : VB6 , VBA
Date ajout : 23/04/2007
Posté par mortalino [Liste]
Private Sub NoDupesInCombo(ByRef cbo As ComboBox)
    Dim As Long, j As Long
    
    For i = To cbo.ListCount - 1
        For j = cbo.ListCount - To i + 1  Step -1
            If cbo.List(i) = cbo.List(j) Then  cbo.RemoveItem (j)
        Next j
    Next i
End Sub
Private Sub UserForm_Initialize() 'Form_Load pour  vb6
With ComboBox1
    .AddItem "1"
    .AddItem "2"
    .AddItem "3"
    .AddItem "1"
    .AddItem "2"
    .AddItem "3"
    .AddItem "1"
    .AddItem "1"
    .AddItem "2"
    .AddItem "2"
    .AddItem "3"
    .AddItem "3"
End With
End Sub

' *** Exemple d'appelle  :
Private Sub CommandButton1_Click()
    Call NoDupesInCombo(Me.ComboBox1)
End Sub
Langage : VB6 , VBA
Date ajout : 24/04/2007
Posté par jrivet [Liste]
DateMAJ : 24/04/2007
Dim i As Integer
Dim Elements As New Collection
   On Error Resume Next
       'Pour chaque éléments de la combo
       For i = 0 To Combo1.ListCount - 1
           'On l'ajoute a la collection
           'Si il existe déja => Erreur (ignorée)
           Call Elements.Add(Combo1.List(i), Combo1.List(i))
       Next
   On Error GoTo 0
   
   'On Vide le Combo
   Call Combo1.Clear
   'POur chaque éléments de la collection
   For i = 1 To Elements.Count
       'On l'ajoute au combo
       Call Combo1.AddItem(Elements(i))
   Next 
Remarque :
Ce code utilise Les collections (peu être un peu trop juste pour des doublons mais ca montre le principe).
Code à placer aussi dans une procédure. Combo1 est le comboBox.
Langage : Javascript
Date ajout : 26/04/2007
Posté par bultez [Liste]

<select  id="combobox"
            size=5>
    <option>1
    <option>2
    <option>3
    <option>1
    <option>2
    <option>3
    <option>1
    <option>1
    <option>2
    <option>2
    <option>3
    <option>3
</select>
<script type="text/javascript">
    var sel=document.getElementById("combobox");
    var i=0;
    do
    {
        j=i+1;
        do
        {
            if ( sel.options[i].text==sel.options[j].text )
                       {    sel.remove(j);    }
            else    {    j++;    }
        }    while ( j<sel.length )
        i++;
    }    while ( i<(sel.length-1) )
</script>    

Langage : C# 1.x , C# 2.x
Date ajout : 27/04/2007
Posté par Bidou [Liste]
DateMAJ : 27/04/2007

for(int i=0; i<this.comboBox.Items.Count - 1; i++)
{
   for (int j = this.comboBox.Items.Count - 1; j>i; j--)
   {
      if (comboBox.Items[i] == comboBox.Items[j])
      {
         comboBox.Items.RemoveAt(j);
      }
   }
}

Langage : Delphi 5
Date ajout : 20/05/2007
Posté par japee [Liste]
DateMAJ : 02/06/2007
procedure DeleteDoublets(const AList: TStrings);
var
  StringList: TStringList;
begin
  StringList := TStringList.Create;
  with StringList do
  try
    Sorted := True;    
    Assign(AList);
    AList.Assign(StringList);
  finally
    Free;
  end;
end;
// exemple d'utilisation :
procedure TForm1.Button1Click(Sender: TObject);
begin
  DeleteDoublets(ComboBox1.Items);
end;
Remarque :
Cette fonction s'applique à tous les objets contenant une liste de chaînes : TComboBox, TMemo, TListBox, etc...
A noter que la propriété TStringList.Duplicates (librement consultable dans l'unité Classe.pas, ainsi que dans l'aide en ligne de Delphi, touche F1) est à dupIgnore par défaut, mais c'est elle qui explique le fonctionnement du code.
Langage : Delphi 5
Date ajout : 03/06/2007
Posté par DRJEROME [Liste]
DateMAJ : 03/06/2007

Autre méthode en utilisant uniquement le Combobox :


var   i: Integer; begin   with ComboBox1.Items do     for i:= Count - 1 downto 1 do       if IndexOf(Strings[i]) < i then         Delete(i); end;
Ainsi on peut garder l'ordre d'origine des items. Si on veut classer par ordre alphabétique : il suffit de
 mettre la propriété "Sorted" du Combobox1 à true (ou mettre Combobox1.Sorted:=True) J'ai mis "downto 1" (et pas "downto 0") car l'item "0" n'a pas besoin d'être traité Pour les puristes une boucle "try" peut être rajoutée. Toutefois le code ne coince pas même s'il n'y a aucun item dans le Combobox. Le même raisonnement peut être utilisé pour l'élimination de doublons dans une liste d'éléments (TStringlist par exemple) en gardant l'ordre d'origine (càd qu'on enlève les "Add" supplémentaires supposés avoir été rajoutés ultérieurement) drjerome

Snippets en rapport avec : Combobox, Doublons



Codes sources en rapport avec : Combobox, Doublons

{Delphi} TRI DANS LISTBOX/COMBOBOX (TSTRINGS)
D' après une question sur le forum : http://www.delphifr.com/infomsg_TRI-NUMERIQUE-SUR-LISTBOX_1050...

{Flash} FORMULAIRE MAILEUR MULTIADRESSE -- FLASH=>PHP=>FLASH -- CONSTRUIT EN COMPOSANT FLASH
Bonjour, Maileur Flash qui permet de choisir son correspondant dans un formulaire avec une combob...

{Visual Basic, VB6, VB.NET, VB 2005} DÉPARTEMENTS
C'est un jeu: vous situez le département correctement et vous avez le chef-lieu (c'est un de mes pre...

{Visual Basic, VB6, VB.NET, VB 2005} CALCUL MENTAL
J'ai fait ce programme pour faire travailler les neurones avec les nombres aléatoires, en prime vous...

{Visual Basic, VB6, VB.NET, VB 2005} DLL PERMETTANT DE RÉALISER DES OPÉRATIONS SUR DES VARIABLES STRING
Comme le dit le titre , il s'agit d'une dll ( activeX développée sous VB6 ( je ne suis pas assez ava...

{Flash} DATAGRID AVEC FILTRE XML
Voilà un DataGrid avec Filtre XML. Chargement du XML dans un datagrid et filtre avec combobox. ...

{Delphi} TSTRINGGRID AVEC COMBOBOX, CHECKBOX, EDIT ET BUTTON
Faisant suite à l'excellente source de patriceparent trouvée sur ce site, j'ai voulu aller un peu pl...

{C# / C#.NET} [.NET 2.0 ] PERSONNALISER LES COLONNES D'UN DATAGRIDVIEW
Bonjour, une petite source toute simple qui présente comment personnaliser une colonne du control D...

{Visual Basic, VB6, VB.NET, VB 2005} SCOMBOBOX 1.0.5
New in this version 1.0.5 (Update: 2005-04-13) - Now MouseWheel is support. - Add the Subclassing of...

{Visual Basic, VB6, VB.NET, VB 2005} COMBOBOX CHARGER DEPUIS BDD VERS TEXTBOX
Voici un code qui permet à partir d'un clique sur un combobox (charger depuis une base de donnée) d'...