Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Eviter doublons dans liste

3 réponses
Avatar
Jean-Paul V
Bonjour à tous

J’ai cette macro qui me liste les Œuvres dans une liste (ChoixOeuvre) d’un
Userform quand un musicien est cliqué dans la liste Choixnom ,
malheureusement si nous avons plusieurs versions de cette œuvre nous avons
dans la liste ChoixOeuvre des doublons comment corriger cette macro qui
marche
:
Private Sub Choixnom_Click() 'en cliquant sur un des compositeurs on obtient
la liste des oeuvres dispo
ligne = Sheets("BD").[A:A].Find(choixnom, LookIn:=xlValues).Row
majFiche
Set f = Sheets("BD")
Me.ChoixOeuvre.Clear
For Each c In f.Range("A2", f.[A65000].End(xlUp))
If c = Me.choixnom Then Me.ChoixOeuvre.AddItem c.Offset(0, 2) ‘ marche
mais avec doublons
' If c = Me.choixnom And Not ChoixOeuvre.Exists(c.Offset(0, 2).Value)
Then Me.ChoixOeuvre.AddItem c.Offset(0, 2) 'sans doublons ne marche pas
Next c
majFiche
End Sub

NB j’ai essayé également en vain :
If c = Me.choixnom And Not ChoixOeuvre.Exists(c.Offset(0, 2)) Then
Me.ChoixOeuvre.AddItem c.Offset(0, 2)

A + j’espère

--
Jean-Paul V

3 réponses

Avatar
MichDenis
Bonjour Jean-Paul,

Juste un exemple comment remplir un combobox ou listbox
avec une liste située en Colonne A:A sans doublon.

'-----------------------------------
Private Sub Choixnom_Click()
Dim Rg As Range, C As Range
Dim X As Object
With Sheets("BD")
ligne = .[A:A].Find(choixnom, LookIn:=xlValues).Row
majFiche
Me.ChoixOeuvre.Clear
Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With

'Pour remplir dans doublons le contrôle ChoixNom des données
'en colonnes a:a
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then
X.Add CStr(C), CStr(C)
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.choixnom.List = Application.Transpose(X.Items)
majFiche
End Sub
'-----------------------------------



"Jean-Paul V" a écrit dans le message de groupe de
discussion :
Bonjour à tous

J’ai cette macro qui me liste les Œuvres dans une liste (ChoixOeuvre) d’un
Userform quand un musicien est cliqué dans la liste Choixnom ,
malheureusement si nous avons plusieurs versions de cette œuvre nous avons
dans la liste ChoixOeuvre des doublons comment corriger cette macro qui
marche
:
Private Sub Choixnom_Click() 'en cliquant sur un des compositeurs on obtient
la liste des oeuvres dispo
ligne = Sheets("BD").[A:A].Find(choixnom, LookIn:=xlValues).Row
majFiche
Set f = Sheets("BD")
Me.ChoixOeuvre.Clear
For Each c In f.Range("A2", f.[A65000].End(xlUp))
If c = Me.choixnom Then Me.ChoixOeuvre.AddItem c.Offset(0, 2) ‘ marche
mais avec doublons
' If c = Me.choixnom And Not ChoixOeuvre.Exists(c.Offset(0, 2).Value)
Then Me.ChoixOeuvre.AddItem c.Offset(0, 2) 'sans doublons ne marche pas
Next c
majFiche
End Sub

NB j’ai essayé également en vain :
If c = Me.choixnom And Not ChoixOeuvre.Exists(c.Offset(0, 2)) Then
Me.ChoixOeuvre.AddItem c.Offset(0, 2)

A + j’espère

--
Jean-Paul V
Avatar
Jean-Paul V
Bonjour MichDenis

Merci pour vos indications, j'ai pu éviter les doublons sur les Oeuvres
lorsque l'on a fait le choix d'un nom . Car lorsque l'on est mélomane on peut
avoir plusieurs interprétations d'une oeuvre
--
Jean-Paul V


"MichDenis" wrote:

Bonjour Jean-Paul,

Juste un exemple comment remplir un combobox ou listbox
avec une liste située en Colonne A:A sans doublon.

'-----------------------------------
Private Sub Choixnom_Click()
Dim Rg As Range, C As Range
Dim X As Object
With Sheets("BD")
ligne = .[A:A].Find(choixnom, LookIn:=xlValues).Row
majFiche
Me.ChoixOeuvre.Clear
Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With

'Pour remplir dans doublons le contrôle ChoixNom des données
'en colonnes a:a
'------------------------
Set X = CreateObject("Scripting.Dictionary")
For Each C In Rg
If Not X.Exists(CStr(C.Value)) Then
X.Add CStr(C), CStr(C)
End If
Next
'--------------------------
'Affecte au contrôle la liste trouvée
Me.choixnom.List = Application.Transpose(X.Items)
majFiche
End Sub
'-----------------------------------



"Jean-Paul V" a écrit dans le message de groupe de
discussion :
Bonjour à tous

J’ai cette macro qui me liste les Œuvres dans une liste (ChoixOeuvre) d’un
Userform quand un musicien est cliqué dans la liste Choixnom ,
malheureusement si nous avons plusieurs versions de cette œuvre nous avons
dans la liste ChoixOeuvre des doublons comment corriger cette macro qui
marche
:
Private Sub Choixnom_Click() 'en cliquant sur un des compositeurs on obtient
la liste des oeuvres dispo
ligne = Sheets("BD").[A:A].Find(choixnom, LookIn:=xlValues).Row
majFiche
Set f = Sheets("BD")
Me.ChoixOeuvre.Clear
For Each c In f.Range("A2", f.[A65000].End(xlUp))
If c = Me.choixnom Then Me.ChoixOeuvre.AddItem c.Offset(0, 2) ‘ marche
mais avec doublons
' If c = Me.choixnom And Not ChoixOeuvre.Exists(c.Offset(0, 2).Value)
Then Me.ChoixOeuvre.AddItem c.Offset(0, 2) 'sans doublons ne marche pas
Next c
majFiche
End Sub

NB j’ai essayé également en vain :
If c = Me.choixnom And Not ChoixOeuvre.Exists(c.Offset(0, 2)) Then
Me.ChoixOeuvre.AddItem c.Offset(0, 2)

A + j’espère

--
Jean-Paul V




Avatar
JB
Bonjour,

http://boisgontierjacques.free.fr/pages_site/formulairelistesansdoublons.ht m#Dictionnary

JB
http://boisgontierjacques.free.fr

On 25 juin, 09:44, Jean-Paul V
wrote:
Bonjour à tous

J’ai cette macro qui me liste les Œuvres dans une liste (ChoixOeuvre) d’un
Userform quand un musicien est cliqué dans la liste Choixnom ,
malheureusement si nous avons plusieurs versions de cette œuvre nous av ons
dans la liste ChoixOeuvre des doublons comment corriger cette macro qui
marche
:
Private Sub Choixnom_Click() 'en cliquant sur un des compositeurs on obti ent
la liste des oeuvres dispo
   ligne = Sheets("BD").[A:A].Find(choixnom, LookIn:=xlValues).Ro w
   majFiche
   Set f = Sheets("BD")
   Me.ChoixOeuvre.Clear
   For Each c In f.Range("A2", f.[A65000].End(xlUp))
     If c = Me.choixnom Then Me.ChoixOeuvre.AddItem c.Offset(0, 2 ) ‘ marche
mais avec doublons
'      If c = Me.choixnom And Not ChoixOeuvre.Exists(c.Offset(0, 2).Value)
Then Me.ChoixOeuvre.AddItem c.Offset(0, 2) 'sans doublons ne marche pas
  Next c
  majFiche
End Sub

NB j’ai essayé également en vain :
If c = Me.choixnom And Not ChoixOeuvre.Exists(c.Offset(0, 2)) Then
Me.ChoixOeuvre.AddItem c.Offset(0, 2)

A + j’espère

--
Jean-Paul V