Tri selectif d'un fichier excel en VBA
bonjour, je suis débutant en VBA mais j'ai quelques connaissances en C, html et php
je voudrai créer une macro qui synchroniserai plusieurs fichiers excel à partir d'un fichier excel selon deux critères:
si la colonne D = "presta1" et la colonne E="erreur" de la ligne X
copie de la ligne X a la suite sur fichier "presta1.xls"
sinon
si la colonne D = "presta2" et la colonne E="erreur" de la ligne X
copie de la ligne X a la suite sur fichier "presta2.xls"
...ainsi de suite....
puis tous ça imbriqué dans une matrice de balayage pour balayer tous le fichier a trier
alors voici mon code
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
Sub tri()
Dim l As Integer
Dim i As Integer
Dim WBSource As Workbook, WBDest As Workbook
Dim DerniereLigne As Integer
DerniereLigne = Range("D50").CurrentRegion.End(xlDown).Row
Set WBSource = Workbooks("SUIVI")
Set WBDest = Workbooks("presta1")
Set WBDest1 = Workbooks("presta2")
'sauvegarde une copie avec la date de l'execution
ActiveWorkbook.SaveAs Filename:=suivi_
"chemin\suivi" & Date & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
For l = 1 To DerniereLigne
'balayage de toute ligne de 1 à 50
If (ActiveSheet.Cells(l, D) = "presta1") And (ActiveSheet.Cells(l, E) = "erreur") Then
'test si la cellule lD = presta1 et si la cellule lE = erreur
'alors faire ceci
i = WBDest.Worksheets(1).Range("A65536").End(xlUp).Row + 1
'cherche une ligne vide dans WBdest
'copie la ligne l sur fichier destinataire
WBSource.Worksheets(1).Rows(l).Copy _
Destination:=WBDest.Worksheets(1).Cells(i, 1)
'suprime la ligne de la source
WBSource.Worksheets(1).Rows(l).Delete
end if
If (ActiveSheet.Cells(l, D) = "presta2") And (ActiveSheet.Cells(l, E) = "erreur") Then
'test si la cellule lD = presta2 et si la cellule lE = erreur
'alors faire ceci
i = WBDest1.Worksheets(1).Range("A65536").End(xlUp).Row + 1
'cherche une ligne vide dans WBdest1
'copie la ligne l sur fichier destinataire
WBSource.Worksheets(1).Rows(l).Copy _
Destination:=WBDest1.Worksheets(1).Cells(i, 1)
'suprime la ligne de la source
WBSource.Worksheets(1).Rows(l).Delete
end if
Next l
End Sub |
mais ceci ne fonctionne pas, pouvez vous m'aidez?