1 pièce(s) jointe(s)
2 dictionnaires dans une macro
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:
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. Pièce jointe 645153
Merci de votre aide