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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| Option Explicit
Option Base 1
Sub test()
Dim valeur As Integer
Dim xlsheet As Worksheet, xlsheet2 As Worksheet
Dim MyRange As Range, AllRange As Range
Dim MyDico As New dictionary
Dim MyObject As Contenu
Dim Clef As String
Dim Key As Variant
Dim MyTab, MyTab2()
Dim i As Long
Set xlsheet = ThisWorkbook.Worksheets("Feuil3")
Set xlsheet2 = ThisWorkbook.Worksheets("Feuil4")
With xlsheet
Set AllRange = .Range(.Range("A2"), .Range("A2").End(xlDown))
For Each MyRange In AllRange.Cells
Clef = MyRange.Value & "//" & MyRange.Offset(, 1).Value & "//" & MyRange.Offset(, 2).Value & "//" & MyRange.Offset(, 3).Value
If Not MyDico.Exists(Clef) Then
Set MyObject = New Contenu
MyTab = Split(Clef, "//")
MyObject.Agence = MyTab(3)
MyObject.DateS = MyTab(1)
MyObject.Matricule = MyTab(0)
MyObject.TypeD = MyTab(2)
MyDico.Add Clef, MyObject
End If
Next MyRange
End With
i = 1
valeur = InputBox("Rentre le numero de l'agence")
'supprimer la clef en trop
For Each Key In MyDico.Keys
If MyDico(Key).Agence = valeur And MyDico(Key).DateS < Date Then
ReDim Preserve MyTab2(2, i)
MyTab2(1, i) = MyDico(Key).TypeD
MyTab2(2, i) = MyDico(Key).Matricule
i = i + 1
End If
Next Key
If LBound(MyTab2) < 1 Then
MsgBox ("Pas de Pb")
Else
For i = 1 To UBound(MyTab2, 2)
MsgBox ("le type" & MyTab2(1, i) & "a un pb" & "avec le matricule" & MyTab2(2, i))
Next i
End If
End Sub |
Partager