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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
Option Explicit
Option Base 1
Public Const FS = "Suivi des commandes"
Const lidebFS = 5
Const coId = "A"
Const coAA = "T" 'déclare comme constante la colonne W pour la colonne des Annulations AMCOR
Const coPL = "U" 'déclare comme constante la colonne W pour la colonne de Pas de livraison
Const coDL = "W" 'déclare comme constante la colonne W pour la colonne de Date de livraison réelle
Public Const FM = "Mise à Jour Commandes"
Public Const lidebFM = 3
Public Const cofinFM = 7
Const coulFM = 23
Public Sub MAJCommandes()
Dim liFS As Long, lifinFS As Long
Dim id As Long
Dim liFM As Long, lifinFM As Long, coFM As Long
Dim objFM As Object, liobjFM As Long
Dim TcoFS()
'Début de la macro
Application.ScreenUpdating = False
'liste des n° de colonnes dans FS qui sont dans FM
TcoFS = Array(1, 3, 6, 16, 17, 23, 24)
' dernière ligne de FM
lifinFM = Sheets(FM).Cells(Rows.Count, 1).End(xlUp).Row
'On parcourt le tableau FM
For liFM = lidebFM To lifinFM
'On enlève le fond coloré
Rows(liFM).Interior.ColorIndex = xlNone
'On enlève la ligne si date livraison>AUJOURDHUI
If Sheets(FM).Cells(liFM, coDL).Value > Date Then
Rows(liFM).Delete Shift:=xlUp
End If
Next liFM
' dernière ligne de FS
lifinFS = Sheets(FS).Cells(Rows.Count, 1).End(xlUp).Row
'On parcourt toutes les lignes de FS
For liFS = lidebFS To lifinFS
' On donne la valeur de l'identificateur de cette ligne à id
id = Sheets(FS).Cells(liFS, coId).Value
' recherche de id dans colonne coId de FM
Set objFM = Sheets(FM).Columns(coId).Find(id, , , xlWhole)
If (Sheets(FS).Cells(liFS, coDL).Value = Date Or Sheets(FS).Cells(liFS, coDL).Value = "") And Sheets(FS).Cells(liFS, coAA).Value = "" And Sheets(FS).Cells(liFS, coPL).Value = "" Then
' si id non trouvé
If objFM Is Nothing Then
'Do While (Cells(fin + 1, 1) <> "" And Cells(fin + 1, 1) = Cells(fin, 1))
'copie de cet id dans FM
lifinFM = Sheets(FM).Cells(Rows.Count, 1).End(xlUp).Row
For coFM = 1 To cofinFM
Sheets(FS).Cells(liFS, TcoFS(coFM)).Copy
Sheets(FM).Cells(lifinFM + 1, coFM).PasteSpecial Paste:=xlPasteValues
Sheets(FM).Cells(lifinFM + 1, coFM).Interior.ColorIndex = coulFM
Next coFM
' si id trouve modification+couleur éventuelle de cet id dans FM
Else
' ligne de id dans FM
liobjFM = objFM.Row
' boucle sur les colonnes de FM
For coFM = 1 To cofinFM
' si données differentes on colorie la cellule
If Sheets(FS).Cells(liFS, TcoFS(coFM)).Value <> Sheets(FM).Cells(liobjFM, coFM).Value Then
Sheets(FM).Cells(liobjFM, coFM).Interior.ColorIndex = coulFM
End If
' on copie la cellule - dans tous les cas
Sheets(FS).Cells(liFS, TcoFS(coFM)).Copy
Sheets(FM).Cells(liobjFM, coFM).PasteSpecial Paste:=xlPasteValues
Next coFM
End If
End If
Next liFS
Application.ScreenUpdating = True
End Sub |
Partager