Remplir combobox sans doublon et avec format [Résolu]

Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
8 juillet 2008
- - Dernière réponse : Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 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
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
3
Merci
voir plus haut, je t'indique "FormatDateTime"

Merci Renfield 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
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
Commenter la réponse de Renfield
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
Arf, m'a fallu 10 minutes pour écrire !!! Suis fatigué :(  Salut Renfiled

@++

le mystérieux chevalier,"Provençal, le gaulois"
Commenter la réponse de mortalino
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
et pour virer l'heure, voir FormatDateTime
Commenter la réponse de Renfield
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
Lol, c'est mon snippet :)
M'en rappelais plus

@++

le mystérieux chevalier,"Provençal, le gaulois"
Commenter la réponse de mortalino
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
8 juillet 2008
0
Merci
Ok merci de votre aide mais je pensais plutot a un formatage du combo et du coup il prendrais juste les dates.
Commenter la réponse de drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
8 juillet 2008
0
Merci
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
Commenter la réponse de drik56
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
c'est discutable... (doit etre lent, de selectionner les eventuels doublons dans la combobox)
mais si tu en es satisfait, c'est el principal ^^
Commenter la réponse de Renfield
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
-1
Merci
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"
Commenter la réponse de mortalino

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.