Doublons dans listes déroulantes

Résolu/Fermé
wroom69 Messages postés 23 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 4 février 2017 - 6 déc. 2015 à 11:00
wroom69 Messages postés 23 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 4 février 2017 - 6 déc. 2015 à 13:55
Bonjour,
J'ai créé une base de donnée avec un formulaire personnalisé avec UserForm en suivant un tuto vidéo.
Sur le tuto il y a 2 "ComboBox" et 7 "TextBox".
J'ai voulu rajouter 4 listes déroulantes et 3 "TextBox".
Le formulaire fonctionne bien, mis à part qu'il se crée un doublon dans la liste déroulante à chaque saisie. Au bout de 30 saisies je vais me retrouver avec 30 doublons dans la liste déroulante !
J'ai repris le code d'une liste déroulante du tuto pour l'adapter aux autres listes créés.
Comment faire pour supprimer ces doublons dans le menu déroulant ?
voici mon UserForm
Option Explicit
Dim Ws As Worksheet



Private Sub TextBox4_Change()

End Sub

'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer

ComboBox2.ColumnCount = 1 'Pour la liste déroulante Civilité
ComboBox2.List() = Array("", "M.", "Mme", "Mlle")
Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 10
Me.Controls("TextBox" & I).Visible = True
Next I

'Pour la liste déroulante Catégorie
ComboBox3.ColumnCount = 1
ComboBox3.List() = Array("", "Benjamin", "Minime", "Cadet", "Junior", "Sénior", "Vétéran")
Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox3
For J = 2 To Ws.Range("E" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("E" & J)
Next J
End With
For I = 1 To 10
Me.Controls("TextBox" & I).Visible = True
Next I

'Pour la liste déroulante MMA/CNIL
ComboBox4.ColumnCount = 1
ComboBox4.List() = Array("", "J'ai lu", "Je n'ai pas lu")
Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox4
For J = 2 To Ws.Range("H" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("H" & J)
Next J
End With
For I = 1 To 10
Me.Controls("TextBox" & I).Visible = True
Next I

'Pour la liste déroulant NMDC
ComboBox5.ColumnCount = 1 '
ComboBox5.List() = Array("", "Nouvelle.", "Mutation", "Duplicata", "Correction")
Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox5
For J = 2 To Ws.Range("M" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("M" & J)
Next J
End With
For I = 1 To 10
Me.Controls("TextBox" & I).Visible = True
Next I

'Pour la liste déroulante Classement
ComboBox6.ColumnCount = 1 'Pour la liste déroulante Classement
ComboBox6.List() = Array("", "Elite", "Honneur", "Promotion")
Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox6
For J = 2 To Ws.Range("P" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("P" & J)
Next J
End With
For I = 1 To 10
Me.Controls("TextBox" & I).Visible = True
Next I

End Sub

'Pour la liste déroulante Code client
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer

If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "B")
For I = 1 To 10
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I

End Sub

'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim L As Integer
If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
L = Sheets("Licenciés").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement ? la premi?re ligne de tableau non vide
Range("A" & L).Value = ComboBox1
Range("B" & L).Value = ComboBox2
Range("C" & L).Value = TextBox1
Range("D" & L).Value = TextBox2
Range("E" & L).Value = ComboBox3
Range("F" & L).Value = TextBox3
Range("G" & L).Value = TextBox4
Range("H" & L).Value = ComboBox4
Range("I" & L).Value = TextBox5
Range("J" & L).Value = TextBox6
Range("K" & L).Value = TextBox7
Range("L" & L).Value = TextBox8
Range("M" & L).Value = ComboBox5
Range("N" & L).Value = TextBox9
Range("O" & L).Value = TextBox10
Range("P" & L).Value = ComboBox6
End If
End Sub

'Pour le bouton Modifier
Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim I As Integer

If MsgBox("Confirmez-vous la modification de ce contact ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
Ws.Cells(Ligne, "B") = ComboBox2
For I = 1 To 10
If Me.Controls("TextBox" & I).Visible = True Then
Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
End If
Next I
End If
End Sub

'Pour le bouton Quitter
Private Sub CommandButton3_Click()
Unload Me
End Sub





A voir également:

2 réponses

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
6 déc. 2015 à 11:45
Bonjour,

Avant de remplir ComboBox, pour supprimer tous les items il faut utiliser la méthode Clear.

Exemple :
ComboBox1.Clear

A+
0
wroom69 Messages postés 23 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 4 février 2017
6 déc. 2015 à 13:55
Bonjour,
Je te remercie, ça fonctionne !
A+
0