Recherche l'interieur une combobox

  • Initiateur de la discussion WyLLoU
  • Date de début
W

WyLLoU

Guest
Bonjour,j'ai un petite souci avec ma combobox,qui je pense ne dois pas être très difficile,mais la j'ai un trou de mémoire :eek:

Donc pour mettre en forme, j'ai ma combobox dans laquel j'ajoute des noms (méthode additem biensur) par une boucle For; mais ce que je veux c'est que avant de rentrer un nom,qu'il vérifie que ce nom n'existe pas encore dans la combobox....pour éviter les doublons;pour ne pas avoir deux fois le mm nom dans ma liste de combo...voilà.


Donc enfet il me faudrait la proprièté qui renvoi le contenue de la combo et ça position index...comme CB.value,mais value c'est juste la valeur sélectionner...voilà

Eclairez moi svp !!! :(
 

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

Wyllou,

Ton combobox se trouve sur un userform ?
tu veux éviter les doublons lors de l'initialisation de cette combobox, ou lorsque tu rajoutes un nom ?

sinon , ce type de macro, boucle sur chaque item d'une combobox :

Dim i As Integer
For i = 0 To ComboBox1.ListCount - 1
MsgBox ComboBox1.List(i)
Next i

En attendant tes éclaircissements.

salut
 

ChTi160

XLDnaute Barbatruc
Salut Willou seras Jerome ????
bonjour Hervé

n'as tu pas déjà posé la question ?????

Tu boucles sur une colonne et tu entres les données dans ton Combo
c'est ca ???

je pense tavoir conseillé de rentré tes données via une collection ce qui évite les doublons
ensuite si tu veux entrer directement des données dans ton combo tu passe(à chaque fois par une boucle qui reprends les données de ta combo et les compare) comme te le dit Hervé
 

Hervé

XLDnaute Barbatruc
re
salut chti

Ce type de macro, vérifie si un item saisie par combobox est déjà présent dans le controle.

Dim i As Byte

For i = 0 To ComboBox1.ListCount - 1
   
If ComboBox1.List(i) = ComboBox1.Value Then
        MsgBox 'Déjà présent.', , 'Attention...'
        ComboBox1.Value = ''
       
Exit Sub
   
End If
Next i
ComboBox1.AddItem ComboBox1.Value

Salut
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

Tout a été dit et très bien dit pour ce post. Je me permets juste de mettre en pratique avec ce code full comment :

Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
dim cel As Range 'déclare la variable cel
dim x as Integer 'déclare la variable x

'remplit la ComboBox1 sans doublon
'boucle sur toutes les cellules de la plage A1:A_dernière
For Each cel In Range('A1:A' & Range('A65536').End(xlUp).Row)
If ComboBox1.ListCount <> 0 Then 'condition : si la ComboBox1 n'est pas vide
For x = 0 To ComboBox1.ListCount - 1 'boucle sur tous les éléments de la ComboBox1
'si la valeur de la cellule égale un élément de la comboBox1
'va à la balise 'suite' (sans ajouter cet élément à la ComboBox1
If cel.Value = ComboBox1.List(x) Then GoTo suite
Next x 'prochain élément de la ComboBox1
End If 'fin de la condition
ComboBox1.AddItem cel.Value 'ajoute la valeur de la callule à la ComboBox1
suite: 'balise
Next cel 'prochaine cellule de la plage
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 080
Membres
103 457
dernier inscrit
fab2614