Je suis débutante en VBA.
J'ai créer ce code pour qu'excel me trie par (B1) OF et (F1) OP des dates, car parfois j'ai deux dates pour un même OP et avec ce code je voudrais obtenir un tableau sur une nouvelle feuille avec par OP une seule date ; la plus grande.
Voici mon code :
Sub datetrier()
Dim i, j, k, m, Pass As Integer
Dim maPlage As Range
Dim Tabl(), temP(), TablV()
Dim Resultat()
Dim cellVide
Dim MaCOll As Collection
Application.ScreenUpdating = False
Range("A1:W1").EntireColumn.Hidden = False
Sheets("Prod").Activate
cellVide = Range("A1048576").End(xlUp).Offset(1, 0).Row
Range(Cells(2, 1), Cells(cellVide - 1, 10)).Sort Range("b1"), xlAscending, Range("f1"), , xlAscending
Set maPlage = Range("A2:J" & cellVide)
Tabl = maPlage.Value
For i = 1 To cellVide - 1
Tabl(i, 10) = Tabl(i, 2) & Tabl(i, 6)
Next i
ReDim TablV(cellVide, 10)
k = 1
Set MaCOll = New Collection
On Error Resume Next
For i = 1 To cellVide
ReDim Preserve Resultat(2, m + 1)
MaCOll.Add Tabl(i, 10), CStr(Tabl(i, 10))
If Err <> 0 Then
If CLng(Tabl(i, 1)) > CLng(Tabl(i - 1, 1)) Then
TablV(k - 1, 1) = Tabl(i, 1)
End If
Err.Clear
Else
If Tabl(i, 10) = " " Then
Exit For
End If
For j = 1 To 9
TablV(k, j) = Tabl(i, j)
Next j
k = k + 1
End If
Next i
Sheets("datefiltré").Cells.Clear
Sheets("Prod").Activate
Range("A1;I1").Select
Selection.Copy
Sheets("datefiltré").Activate
Range("A1").Select
ActiveSheet.Paste
For i = 2 To UBound(TablV)
For j = 1 To 9
Cells(i, j) = TablV(i - 1, j)
Next j
Next i
Application.screenupadating = True
End Sub
Quand je tente d'exécuter ce code, une erreur 1004 s'affiche et mee dis que La méthode Sort de la classe range a échoué.
Je ne comprend pas d'ou vient mon erreur.
Merci de votre lecture,
Vicky