liste de validation à éléments uniques

  • Initiateur de la discussion max
  • Date de début
M

max

Guest
je souhaite créer une liste de validation sur une cellule à partir d'une liste variable d'éléments. Cette liste peut contenir des doublons, or je ne souhaite pas récupérer les doublons dans la liste de validation !

Si vous avez une idée, je suis preneur.

Merci d'avance
 

andré

XLDnaute Barbatruc
OUPS, mes doigts sont trop gros (lol) !
Je recommence.

Salut Max,

A ma connaisance il n'y a d'autre méthode que d'établir d'abord une liste sans doublons et d'établir ta liste de validation sur cette dernière.

Pour établir une liste sans doublons je te conseille de télécharger la démo de nos excellentes miss (sous Accueil de ce site).

Ândré.
 

Hervé

XLDnaute Barbatruc
Bonjour max et andré

Bien d'accord avec toi andré :)

Une solution par vba, mais je pense qu'une solution par formule soit possible(j'y connais rien en formule :eek: ) et surement plus pratique.

Voir la pièce jointe.

Sub Bouton1_QuandClic()
Dim datanom As Collection
Dim c As Range
Dim i As Byte
Dim tablo

ActiveCell.Validation.Delete

Set datanom = New Collection
For Each c In Range('a2:a' & Range('a65536').End(xlUp).Row)
   
On Error Resume Next
        datanom.Add c.Text, c.Text
        datanom.Add ','
   
Next c

For i = 1 To datanom.Count
    tablo = tablo & datanom.Item(i)
Next i

For i = 1 To datanom.Count
   
With ActiveCell.Validation
        .Add Type:=xlValidateList, Formula1:=tablo
        .Modify Type:=xlValidateList, Formula1:=tablo
   
End With
Next i

End Sub

Merci de nous tenir au courant

salut
[file name=Classeur1_20050523151836.zip size=8520]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20050523151836.zip[/file]
 

Pièces jointes

  • Classeur1_20050523151836.zip
    8.3 KB · Affichages: 19

pat1545.

XLDnaute Accro
Salut,

si tu utilises le VBA, tu peux y coller ce code qui mets à droite d'une sélection sur 1 colonne (A par ex) , les occurences uniques trouvées dans la colonne : (basé sur un code de F SIGONNEAU)

Option Explicit

Sub MenuCell()
Dim Ctrl
For Each Ctrl In Application.CommandBars('Cell').Controls
Ctrl.Enabled = True
Next
With Application.CommandBars('Cell').Controls.Add(msoControlButton)
.Caption = 'Unique à droite'
.BeginGroup = True
.FaceId = 252
.OnAction = 'ValUniquesACote'
End With
End Sub
Sub ValUniquesACote() ' PlageSrc As Range, CellDest As Range)
'Extrait les valeurs uniques d'une colonne et les renvoie
'dans une autre, à partir de CellDest tiré d'un code de F. Signonneau (pense-je)
Dim Arr1, Elt, Arr2(), Coll As New Collection, i As Integer
'If PlageSrc.Columns.Count > 1 Then Exit Sub ' Mais possible sur 2 colonnes
'Arr1 = PlageSrc.Value
Arr1 = Selection.Value
Dim Colo
Dim line
Dim err
Colo = Selection.Column
line = Selection.Row
For Each Elt In Arr1
On Error Resume Next
Coll.Add Elt, CStr(Elt)
If err.Number = 0 Then
ReDim Preserve Arr2(1 To Coll.Count)
Arr2(Coll.Count) = Elt
End If
On Error GoTo 0
Next
For i = 1 To Coll.Count
If IsEmpty(Cells(line, Colo + 1)) Then
Cells(line + i, Colo + 1).Value = Coll.Item(i)
Else
MsgBox ('cellule voisine non vide')
MsgBox Coll.Item(i)
End If
Next
Application.Transpose (Arr2)
End Sub

Sub Efface_ClicDroit()
On Error Resume Next
Application.CommandBars('Cell').Controls('Unique à droite').Delete
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 362
Membres
103 530
dernier inscrit
Chess01