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 ?
Pour les tests, ouvrez le formulaire en clic droit dans le fichier. forum.xlsm
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
Merci de votre aide
Partager