Remplir combobox sans doublon et avec format

Résolu
drik56 Messages postés 127 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 8 juillet 2008 - 4 juin 2008 à 08:47
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 4 juin 2008 à 10:34
Bonjour a tous,

Je souhaiterais remplir un combobox sur ma feuille excel avec les données de la colonne B d'une autre feuille mais sans doublon et sans l'heure.
B
02/06/2008 06:55
02/06/2008 08:23
02/06/2008 15:35
03/06/2008 05:43
03/06/2008 09:23
04/06/2008 07:40
...
Voila ma colonne B donc je voudrais remplir mon combobox avec juste la date (sans l'heure) et sans doublon. Cad avoir:
02/06/2008
03/06/2008
04/06/2008
...

J'ai commencé avec ce début de code pour virer les doublons:
Dim i As Integer



For i = 2 To Sheets("HIS").Range("B65536").End(xlUp).Row
  ComboBox1 = Sheets("HIS").Range("B" & i)
  If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Sheets("HIS").Range("B" & i)
Next i


Merci de votre aide

10 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
4 juin 2008 à 10:08
voir plus haut, je t'indique "FormatDateTime"
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
4 juin 2008 à 09:08
l'idée n'est pas de virer les doublons, mais simplement de ne pas les y ajouter...

en tapant simplement "doublon" sur Codyx, tu serait a coups sur tombé sur :

http://www.codyx.org/snippet_supprimer-doublons-combobox_374.aspx#1205
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
4 juin 2008 à 09:19
Arf, m'a fallu 10 minutes pour écrire !!! Suis fatigué :(  Salut Renfiled

@++

le mystérieux chevalier,"Provençal, le gaulois"
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
4 juin 2008 à 09:20
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
4 juin 2008 à 09:21
et pour virer l'heure, voir FormatDateTime
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
4 juin 2008 à 09:21
Lol, c'est mon snippet :)
M'en rappelais plus

@++

le mystérieux chevalier,"Provençal, le gaulois"
0
drik56 Messages postés 127 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 8 juillet 2008
4 juin 2008 à 10:05
Ok merci de votre aide mais je pensais plutot a un formatage du combo et du coup il prendrais juste les dates.
0
drik56 Messages postés 127 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 8 juillet 2008
4 juin 2008 à 10:23
Merci a vous deux.
Code final:
Dim i As Integer



ComboBox1.Clear
For i = 2 To Sheets("HIS").Range("B65536").End(xlUp).Row



  ComboBox1 = DateValue(Sheets("HIS").Range("B" & i))
  If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem DateValue(Sheets("HIS").Range("B" & i))
Next i
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
4 juin 2008 à 10:34
c'est discutable... (doit etre lent, de selectionner les eventuels doublons dans la combobox)
mais si tu en es satisfait, c'est el principal ^^
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
4 juin 2008 à 09:19
Salut,

pour être franc, ton code ne vérifie jamais s'il y a des doublons.
En gros tu fais une boucle sur tes cellules, certes, mais ensuite faut boucler également sur les items de ton ComboBox.
Ton If... veut dire, en français : Si aucun Index n'est choisi dans la liste de mon ComboBox alors ajoute en tant qu'Item au ComboBox la donnée de la cellule B i de la feuille HIS.

3 soluces :

1/ Tu boucles sur les cellules, comme tu l'as fait, ensuite tu boucles sur tes Items (sert toi de ComboBox.ListCount pour For j = 1 To ComboBox.ListCount Next) et si aucune valeur n'est égale, alors là tu fais un AddItem.

2/ Lourd et moins rapide, tu peux te servir d'une Collection en étape intermédiaire : tu mets un On Error Resume Next, ensuite tu ajoutes les Items de tes cellules à la Collection, genre Dim cCol As New Collection, dans ton For i.. : cCol.Add Sheets("HIS").Range("B" & i).Vvalue, CStr(Sheets("HIS").Range("B" & i).Vvalue)
Puis tu ajoutes les élements de ta collection dans ton ComboBox.

3/ Je ne sais plus le code mais enregistre toi pour l'avoir : tu fais un filtre sur place ssans doublons (sélectionne la plage de donnée, menu Outils, Filtrer -> Filtre élaboré, Extraction sans doublons. Choisis la destination en cellule, tu boucles  sur les celles de destination pour les rajouter dans ton ComboBox, puis tu effaces les données de l'extraction.

Je pense que le mieux serait 1 puis 3 et enfin 2

@++

le mystérieux chevalier,"Provençal, le gaulois"
-1
Rejoignez-nous