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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| Sub Prévision_Semaine()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim Debut As Date, Temps As Date, Fin As Date
Début = Time
'Compteur de ligne afin d'obtenir le nombre de références articles
Ligne = Sheets("Base").Range("A13:A" & Rows.Count).End(xlDown).Row
'Compteur de ligne afin de connaître le nombre de commandés passées
Dim LigneAccdep As Long
LigneAccdep = Sheets("accdep80").Range("A2:A" & Rows.Count).End(xlDown).Row
'Variable pour compteur ligne
Dim i As Long
'Variable pour compteur de semaine
Dim Sem As Byte
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Déclaration des tableaux
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Tableau chargé des numéros d'articles et nom du fournisseur
'présent en colonne A de la feuille "Prévision semaine"
Dim TabArticle() As Variant
ReDim TabArticle(Ligne)
'Tableau chargé des numéros d'articles et nom du fournisseur
'présent en colonne H de la feuille "accdep80"
Dim TabArticle2() As Variant
ReDim TabArticle2(LigneAccdep)
'Tableau chargé des numéros de semaine de livraison des articles
'présent dans la feuille "accdep80"
Dim TabArticle3() As Variant
ReDim TabArticle3(LigneAccdep)
Dim TabArticle4() As Variant
ReDim TabArticle4(LigneAccdep)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Variable permettant d'obtenir le volume total commandé sur une semaine par référence
Dim VolCde As Long
'Création de la feuille de synthèse
Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Prévision semaine"
'Transfert des références articles vers la feuille de synthèse
Sheets("Base").Range(Sheets("Base").Cells(13, 3), Sheets("Base").Cells(Ligne, 3)).Copy
Sheets("Prévision semaine").Range("A2").PasteSpecial
'Chargement des données dans le tableau N°1
For i = 2 To Ligne
TabArticle(i) = Sheets("Prévision semaine").Range("A" & i)
Next i
'Chargement des données dans le tableau N°2
For i = 2 To LigneAccdep
TabArticle2(i) = Sheets("accdep80").Range("H" & i)
Next i
'Chargement des données dans le tableau N°3
For i = 2 To LigneAccdep
TabArticle3(i) = Sheets("accdep80").Range("AX" & i)
Next
'Chargement des données dans le tableau N°4
For i = 2 To LigneAccdep
TabArticle4(i) = Sheets("accdep80").Range("R" & i)
Next
'Boucle pour les semaines
For Sem = 1 To 52
'Seconde boucle pour passer sur toutes les références articles
For i = 2 To Ligne
'Troisième boucle pour passer sur toutes les lignes de commandes
For j = 2 To LigneAccdep
'Test pour récupérer le volume commandé par référence article
If TabArticle(i) = TabArticle2(j) And TabArticle3(j) = Sem Then
VolCde = VolCde + TabArticle4(j)
End If
Next j
'Associe le volume commandé à la référence article sur la feuille synthèse
Cells(i, Sem + 3) = VolCde
VolCde = 0
Next i
Next Sem
Fin = Time
Temps = Fin - Début
MsgBox ("c'est fini !" & Chr(10) & "temps de traitement" & Temps)
End Sub |
Partager