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 : 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
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?