Bonjour à tous,
Je suis pas encore familier des dicos et j'arrive pas à l'utiliser 2 fois dans la même macro. La 1ere c'est pour que les noms des salariés ne soient pas sélectionnés 2 fois dans la liste, la 2éme pour avoir le numéro de l'enregistrement non utilisé.
Que je crée 2 dictionnaires ou que je fasse un remove all avant la 2éme utilisation, seul le 1er dictionnaire fonctionne.
Il y a aussi le souci du texte ou numérique. Pour le texte il y a dico.CompareMode = TextCompare, mais pour le numérique ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
   'verif doublons salariés en liste
        Set dico = CreateObject("scripting.dictionary")
        dico.CompareMode = TextCompare
       For i = 0 To Me.LstSals.ListCount - 1
          If Not dico.exists(Me.LstSals.List(i)) Then
            dico.Add Me.LstSals.List(i), ""
          ElseIf dico.exists(Me.LstSals.List(i)) Then
            'dic.items
            MsgBox "Il ne peut y avoir 2 fois le même salarié dans la liste.": GoTo fin
          End If
      Next i
    'numero tache inutilisé
        'dico.RemoveAll
        Set dico2 = CreateObject("scripting.dictionary")
        With Sheets("Taches")
         ' If .FilterMode Then .ShowAllData
           t = .Range("e1:e" & drn1)
           For i = 2 To UBound(t)
                 If Not dico2.exists(t(i, 1)) Then
                     dico2.Add t(i, 1), ""
                 End If
           Next i
             For j = 1 To 1000
                 If Not dico2.exists(j) Then
                     Me.numT.Value = j
                     Exit For
                 End If
             Next j
         End With
Pour les tests, ouvrez le formulaire en clic droit dans le fichier. forum.xlsm
Merci de votre aide