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
|
Option Explicit
'
' Macro pour mettre à jour le tableau des commandes en cours
'
Sub maj_tableau()
'Déclaration des variables
Dim SC As Object 'déclare la variable SC (onglet Suivi des Commandes)
Dim MAJ As Object 'déclare la variable MAJ (onglet Mise à Jour Commandes)
Dim ligneFin As Integer 'déclare la variable ligne de fin
Dim I As Integer 'déclare la variable I (incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim L As Integer 'déclare la variable L (incrément)
Dim TSC As Variant 'déclare la variable TSC (Tableau Suivi des Commandes)
Dim T() As Variant 'déclare la variable T
'Début de la macro
Application.ScreenUpdating = False
'Définition des onglets
Set SC = Sheets("Suivi des Commandes") 'définit l'onglet SC
Set MAJ = Sheets("Mise à Jour Commandes") 'définit l'onglet MAJ
ligneFin = SC.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A) de l'onglet SC
TSC = SC.Range("A5:X" & ligneFin) 'définit le tableau de cellules TSC
'boucle 1 : sur toutes les lignes du tableau TSC
For I = 1 To UBound(TSC)
'condition : si la cellule en colonne 23 (=W) de la ligne est égale à AUJOURDHUI ou VIDE et qu'il n'y a ni pb d'allocation, ni annulation
If (TSC(I, 23) = Date Or TSC(I, 23) = "") And TSC(I, 20) = "" And TSC(I, 21) = "" Then
ReDim Preserve T(6, J) 'redimensionne le tableau T
T(0, J) = TSC(I, 1) 'récupère l'[Identifiant de la commande] dans la première ligne (ligne 0)
T(1, J) = TSC(I, 3) 'récupère la [Désignation] dans la deuxième ligne (ligne 1)
T(2, J) = TSC(I, 6) 'récupère la [Quantité commandée] dans la troisième ligne (ligne 2)
T(3, J) = TSC(I, 16) 'récupère la [Date demandée finale] dans la quatrième ligne (ligne 3)
T(4, J) = TSC(I, 17) 'récupère la [Date confirmée finale] dans la cinquième ligne (ligne 4)
T(5, J) = TSC(I, 23) 'récupère la [Date réelle de livraison] dans la sixième ligne (ligne 5)
T(6, J) = TSC(I, 24) 'récupère la [Quantité réelle livrée] dans la sixième ligne (ligne 6)
J = J + 1
End If
Next I
'boucle 2 : sur toutes les colonnes du tableau T
For K = 0 To UBound(T, 2)
'boucle 3 : sur les 6 lignes du tableau T
For L = 0 To 6
MAJ.Cells(K + 1, 1).Offset(2, L) = T(L, K) 'renvoie en transposant les données du tableau T dans l'onglet MAJ
Next L
Next K
Application.ScreenUpdating = True
End Sub |
Partager