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
| Option Explicit
Dim dte As Date, fFJ As Worksheet, fR As Worksheet, fDon As Worksheet, rep, Ldte
Dim f1 As Worksheet, f2 As Worksheet, f3 As Worksheet, f4 As Worksheet, f5 As Worksheet, f6 As Worksheet, feuil
Dim i&, m&, colM, ln&, lnJ&, c&, L&
Sub ValiderLaDate()
Set fFJ = Sheets("Fin de Journée") 'on affecte la feuille "Fin de journée" à une variable
Set fR = Sheets("RESULTATS") 'on affecte la feuille "RESULTATS" à une variable
dte = fFJ.Range("B2") 'on affecte la date de la cellule B2 de la feuille "Fin de journée" à une variable
m = Month(dte) 'on affecte le mois de cette date à une variable
lnJ = Day(dte) + 8 'on affecte à une variable le n° de la ligne du jour de cette date sur la feuille "RESULTATS"
Application.ScreenUpdating = False
If m = 1 Then 'cas particulier du mois de janvier
colM = 5 'la colonne du mois de la date est en colonne 5 sur la feuille "RESULTATS"
Else 'autres cas
colM = 5 * m + 1 'colonne du mois de la date sur la feuille "RESULTATS"
End If
If fR.Cells(lnJ, colM) <> "" Then 'cas où la cellule de destination n'est pas vide : on a un message
rep = MsgBox("La date du " & dte & " a déjà fait l'objet d'un report : " & Application.Round(fR.Cells(lnJ, colM), 2) & _
Chr(13) & Chr(13) & "Voulez-vous continuer ?", 20)
If rep = 7 Then Exit Sub 'cas où on ne veut pas continuer : on arrête la macro
End If
fR.Cells(lnJ, colM) = fFJ.Range("C12") 'Cas général : on écrit la valeur dans la cellule de destination
ExportVersDonnees
ExportVersProduits
End Sub
Sub ExportVersDonnees()
Set fDon = Sheets("Données") 'on affecte la feuille "Données" à une variable
Set Ldte = fDon.Columns("A").Find(dte, LookIn:=xlFormulas) 'recherche de la ligne de la date à traiter
If Not Ldte Is Nothing Then
fDon.Cells(Ldte.Row, "B") = fFJ.Cells(13, "C") 'Caht
fDon.Cells(Ldte.Row, "C").Resize(1, 8) = Application.Transpose(fFJ.Range(Cells(4, "C"), Cells(11, "C"))) 'de "Nb Pds" à "Nb Chq"
fDon.Cells(Ldte.Row, "K") = fFJ.Cells(14, "B") 'CA Boul
fDon.Cells(Ldte.Row, "L") = fFJ.Cells(16, "B") 'CA Vien
fDon.Cells(Ldte.Row, "M") = fFJ.Cells(18, "B") 'CA Patis
fDon.Cells(Ldte.Row, "N") = fFJ.Cells(20, "B") 'CA Sale
fDon.Cells(Ldte.Row, "O") = fFJ.Cells(22, "B") 'CA Epice
fDon.Cells(Ldte.Row, "P") = fFJ.Cells(24, "B") 'CA Form
fDon.Cells(Ldte.Row, "Q") = fFJ.Cells(26, "B") 'Total Marge
fDon.Cells(Ldte.Row, "R") = fFJ.Cells(27, "B") 'Total TVA
fDon.Cells(Ldte.Row, "S") = fFJ.Cells(29, "C") 'Temps Matin
fDon.Cells(Ldte.Row, "T") = fFJ.Cells(30, "C") 'Temps Ap. Midi
fDon.Cells(Ldte.Row, "U").Resize(1, 10) = Application.Transpose(fFJ.Range(Cells(33, "B"), Cells(42, "B"))) 'de "Divers 1" à "Divers Bis 5"
End If
End Sub
Sub ExportVersProduits()
For c = 6 To 41 Step 7
Select Case c
Case 6
Set feuil = Sheets("Données Boulangerie") 'on affecte la feuille "Données Boulangerie" à une variable
Case 13
Set feuil = Sheets("Données Viennoiserie") 'on affecte la feuille "Données Viennoiserie" à une variable
Case 20
Set feuil = Sheets("Données Patisserie") 'on affecte la feuille "Données Patisserie" à une variable
Case 27
Set feuil = Sheets("Données Sale") 'on affecte la feuille "Données Sale" à une variable
Case 34
Set feuil = Sheets("Données Epicerie") 'on affecte la feuille "Données Epicerie" à une variable
Case 41
Set feuil = Sheets("Données Formule") 'on affecte la feuille "Données Formule" à une variable
End Select
Set Ldte = feuil.Rows(1).Find(dte, LookIn:=xlFormulas) 'recherche de la ligne de la date à traiter
If Not Ldte Is Nothing Then
L = 3
For i = 1 To 30
If fFJ.Cells(i + 7, c) <> "" Then
feuil.Cells(L, Ldte.Column).Resize(5, 1) = Application.Transpose(fFJ.Range(Cells(i + 7, c), Cells(i + 7, c + 4)))
L = L + 6
Else: Exit For
End If
Next i
End If
Next c
End Sub |