Ajouter item à un combobox à partir d'un textbox en évitant les doublons

  • Initiateur de la discussion Initiateur de la discussion blord
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

blord

XLDnaute Impliqué
Bonjour à tous,

Le petit bout de code suivant permet d'ajouter un item à un combobox à partir d'une valeur dans un textbox :

Code:
ComboBox1.AddItem (TextBox1.Text)

Comme serait-il possible de vérifier si la valeur du textbox est déjà présente dans la liste des items du combobox afin d'éviter les doublons ?

Merci pour votre aide...

Benoit Lord
 
Re : Ajouter item à un combobox à partir d'un textbox en évitant les doublons

Bonjour Papou, le Forum,

La différence que j'ai avec l'autre demande, c'est que la liste qui alimente le combobox n'est pas dans une feuille mais chargée directement à l'initialisation du userfrom par des additem...

C'est certain que je pourrais toujours exporter la liste vers une feuille tampon et utiliser le code en question pour ajouter le nouvel item mais je me demandais s'il n'y avait pas une méthode plus directe du genre on passe chaque élément de la liste du combobox en revue et si l'item ne s'y trouve pas, on l'ajoute... à moins que je n'ai absoulement rien compris au code reçu dans le fil en question....

Benoit Lord
 
Re : Ajouter item à un combobox à partir d'un textbox en évitant les doublons

Bonjour le Forum

Je suis intéressé par ce fil. Paritec je pense Blord a comme souci le fait que l'ajout réalisé n'est pas inclut lors de la prochaine ouverture de l'USF. Par Exemple avec votre fichier j'ajoute "Dominique" il et bien ajouté, mais a la prochaine ouverture le choix de "Dominique" n'est plus possible !
Bon WK
Dominique
 
Re : Ajouter item à un combobox à partir d'un textbox en évitant les doublons

bonjour WD Benoit le forum
oui le à la prochaine ouverture le prénom ne sera pas disponible, mais il ne parle pas de l'avoir disponible mais de l’ajouter à la combobox
ce qui est bien différent.
En plus il dit qu'il ne charge pas avec une liste ce qui est une bêtise mais bon je n'insisterai pas là dessus, il a bien une liste obligatoirement pour remplir sa combo et si il veux que pour la prochaine ouverture le prénom soit disponible c'est pas un souci non plus mais il faut des explications claires du résultat souhaité et du pourquoi et après on sait faire, mais j'attend des explications claires pour poursuivre, et pour le traitement des doublons question initiale c'est fait
a+
papou🙂
 
Re : Ajouter item à un combobox à partir d'un textbox en évitant les doublons

Salut

Si... tu ne veux pas enregistrer le nouvel item, tu peux essayer cela
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim Itm As Range
    Set Itm = [A:A].Find(TextBox1, Lookat:=xlWhole) 'liste en colonne A
    If Itm Is Nothing Then ComboBox1.AddItem TextBox1
End Sub
 
Re : Ajouter item à un combobox à partir d'un textbox en évitant les doublons

bonjour blord,Paritec,Wdandco
ajout dans le fichier de Paritec
en rassemblant quelques codes,concerne listbox1
pour ajout dans listbox1 code dans module1
à bientôt
 

Pièces jointes

Re : Ajouter item à un combobox à partir d'un textbox en évitant les doublons

Bonjour à tous,

Tout d'abord , merci pour votre participation et vos suggestion...

À Papou, le premier fichier Blord1.xls correspond exactement à ce que je voulais, merci infiniment....

Le code qui se trouve dans le userform que voici :

Code:
Option Explicit
Option Compare Text

Private Sub UserForm_Initialize()
    Dim i&, fin&, aa As Variant
    aa = Feuil1.Range("A5:A" & Feuil1.Range("A" & Rows.Count).End(xlUp).Row)
    ComboBox1.List = aa
End Sub

Private Sub CommandButton1_Click()
    Dim i&
    If TextBox1 = "" Then Exit Sub
    For i = 0 To ComboBox1.ListCount - 1
        If ComboBox1.List(i, 0) = TextBox1 Then Exit Sub
    Next i
    ComboBox1.AddItem (TextBox1.Text): TextBox1 = ""
End Sub

Si j'ai bien compris, en cliquant sur le bouton 1, le code fait en sorte de parcourir chacun des items chargés dans le combobox avec la boucle :
For i = 0 To ComboBox1.ListCount - 1

puis il compare l'item avec la valeur du textbox avec la ligne :
If ComboBox1.List(i, 0) = TextBox1 Then Exit Sub

Si l'item est identique il sort du code et va à l'item suivant dans la liste avec le
next et recommence la vérification...

Si la valeur n'est pas trouvée dans la liste, elle est ajoutée par la ligne :
ComboBox1.AddItem (TextBox1.Text): TextBox1 = ""
et ensuite le tetxbox est vidé...

Est-ce que j'ai bien tout compris ???

Si oui, la méthode utilisée ici est donc différente de ce qui m'a été montré dans mon autre fil dont parlait Papou.

Dans ce fil, on cherchait la valeur dans la liste des données qui était sur une feuille excel avec ce code :

Code:
    Dim fin&, i&
    'Récupère l'entrée sélectionnée
    Dim Var As String
    Dim MotTrouve
    Call LoadProjets
    Var = ComboBoxEntrees.Value
    Set MotTrouve = Sheets("data").Range("A:A").Find(What:=Var, LookAt:=xlWhole)
    fin = Feuil3.Range("A" & Rows.Count).End(xlUp).Row
    TextBoxNom.Value = MotTrouve.Offset(0, 1).Value
    TextBoxPrenom.Value = MotTrouve.Offset(0, 2).Value
    For i = 2 To fin
        If MotTrouve.Offset(0, 3).Value = Feuil3.Cells(i, 1) Then GoTo 1
    Next i
    MsgBox "Ce projet " & "'''" & MotTrouve.Offset(0, 3) & "'''" & " n 'est plus autorisé", , "Projet Interdit"
    ComboBoxProjet.Clear: ComboBoxProjet.AddItem MotTrouve.Offset(0, 3)
    ComboBoxProjet.ListIndex = 0
    ComboBoxProjet.Value = MotTrouve.Offset(0, 3).Value

Ce qui à mon avis est différent de ce qui a été proposé ici... Mais bon, je peux me tromper ou n'avoir rien compris du tout....

Si je puis me permettre, à quoi sert cette ligne en début de code :Option Compare Text

Merci !

Benoit Lord
 
Re : Ajouter item à un combobox à partir d'un textbox en évitant les doublons

Bonjour Benoit le squale, tous
tu as mal compris un détail je te le met ci-dessous explication en bleu
HTML:
Si j'ai bien compris, en cliquant sur le bouton 1, le code fait en sorte  de parcourir chacun des items chargés dans le combobox avec la boucle :
For i = 0 To ComboBox1.ListCount - 1
tout à fait exact

HTML:
puis il compare l'item avec la valeur du textbox avec la ligne :
If ComboBox1.List(i, 0) = TextBox1 Then Exit Sub
toujours exact

HTML:
Si l'item est identique il sort du code et va à l'item suivant dans la liste avec le 
next et recommence la vérification...
non là si l'item est identique il sort du code donc il ne va pas a l'item suivant donc pas au next.
En fait pour résumer si il y a une correspondance il sort et dans le cas contraire il fini sa boucle jusqu'au dernier item et n'ayant pas trouvé de correspondance il passe à la ligne suivante et ajoute la valeur de textbox2 à la liste de la Combo et vide la combo

HTML:
Si la valeur n'est pas trouvée dans la liste, elle est ajoutée par la ligne :
ComboBox1.AddItem (TextBox1.Text): TextBox1 = ""
et ensuite le tetxbox est vidé...
parfaitement exact

l'Option Compare Text sert à ne pas différencier minuscule et majuscule car autrement si tu tapes dans le textbox1 Jean et que dans la liste c'est écrit jean la macro ne trouverait pas la correspondance, mais si tu préfères trouver exactement le même texte tu peux le retirer Option Compare text

pour le deuxième code que tu as remis en dessous oui c'est un peu différent mais le principe de la boucle c'est cela que je voulais te dire est bien là.
bonne journée
a+
papou🙂
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour