probleme de calcul en code VBA

HERBIN

XLDnaute Junior
Bonsoir
J’ai realisé une macro et je souhaiterais calculer mon chiffre d’affaires désaisonnalisé colonne H en fonction des coefficients trimestriels, T1 T2 T3 et T4 afin d’obtenir les résultats suivants, mais en vain je n’arrive pas à trouver la solution en VBA.
Colonne K
T1 k7 = 0,864
T2 K8= 1,501
T3 K9= 1,249
T4 K10= 0,386

Le calcul avec excel sont les suivants :
=B2/K7
=B3/K8
=B4/K9
=B5/K10

=B6/K7
=B7/K8
=B8/K9
=B9/K10

….


xi yi Chiffre d'affaires désaisonnalisé
1 240 278
2 420 280
3 370 296
4 110 285
5 250 289
6 440 293
7 360 288
8 115 298
9 270 312
10 480 320
11 400 320
12 130 337

Merci pour votre aide
Bien cordialement


Code:
Sub calCoeff()
 
    Dim i As Integer
    Dim DerLig As Long
    Dim Serie_Y As Variant, Serie_X As Variant

    With Worksheets("Moyenne_Mobile")
        DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
 
        For i = 2 To DerLig - 2
            .Cells(i + 1, 3).Value = Application.WorksheetFunction.Average(.Range(.Cells(i, 2), .Cells(i + 3, 2)))
        Next i
        For i = 2 To DerLig - 2
            .Cells(i + 2, 4).Value = Application.WorksheetFunction.Average(.Range(.Cells(i + 1, 3), .Cells(i + 2, 3)))
        Next i
         .Range(.Cells(DerLig - 1, 4), .Cells(DerLig, 4)).ClearContents
    End With
 'Traitement des données
Set Serie_Y = Range("D4:D11")
Set Serie_X = Range("E4:E11")
Range("J4:K4").Value = Application.WorksheetFunction.LinEst(Serie_Y, Serie_X)

'3eme boucle de traitement
For i = 2 To DerLig
    Cells(i, 6).Value = Range("j4").Value * Cells(i, 5).Value + Range("k4").Value
    If Cells(i, 6).Value <> 0 Then
        Cells(i, 7).Value = Cells(i, 2).Value / Cells(i, 6).Value
    End If
    'Cells(i, 8).Value = Cells(i, 2).Value / Cells(i, 7).Value
Next i
'calcul des Coefficients saisonniers trimestriels
Trim1 = (Range("g2").Value + Range("g6").Value + Range("g10").Value) / 3
Trim2 = (Range("g3").Value + Range("g7").Value + Range("g11").Value) / 3
Trim3 = (Range("g4").Value + Range("g8").Value + Range("g12").Value) / 3
Trim4 = (Range("g5").Value + Range("g9").Value + Range("g13").Value) / 3
' affichage des Coefficients saisonniers trimestriels
Cells(7, 11).Value = Trim1
Cells(8, 11).Value = Trim2
Cells(9, 11).Value = Trim3
Cells(10, 11).Value = Trim4


'4eme boucle de traitement
'For i = 2 To DerLig
   ' Cells(i, 8).Value = Cells(i, 1).Value.Value * Trim1   
'Next i
End Sub
 

Pièces jointes

  • Saisonnalisé.xls
    48 KB · Affichages: 46

HERBIN

XLDnaute Junior
Re : probleme de calcul en code VBA

BONJOUR
n'ayant pas eu de réponse je vais essayer d'être plus claire, je souhaite calculer en VBA les chiffres d’affaires désaisonnalisé colonne H en fonction des coefficients trimestriels, T1 T2 T3 et T4 afin d’obtenir les résultats suivants,
Chiffre d'affaires désaisonnalisé colonne H
278
280
296
285
289
293
288
298
312
320
320
337
Pour obtenir 278 = 240/ 0,864 T1

280= 420/ 1,501 T2
296 = 370/1,249 T3
285 = 110/0,386 T4

pour obtenir le chiffraires désaisonnalisé trimestiel de l'année N-2
formule = les ventes / coefficient moyen trimestriels

on refait ma même chose avec l'anné N-1 ET N
pour N-1

Pour obtenir 289 = 250/ 0,864 T1

293= 440/ 1,501 T2
288 = 360/1,249 T3
298 = 115/0,386 T4
etc

formalisé en VBA me semble difficile
merci pour votre aide
 

Odesta

XLDnaute Impliqué
Re : probleme de calcul en code VBA

Bonjour

Un petit 'patch' à votre code, j'espère que c'est la solution attendue :

VB:
'4eme boucle de traitement
For i = 2 To DerLig
   Select Case (i - 1) Mod 4
        Case 1
            Cells(i, 8).Value = CInt(Cells(i, 2).Value) / Trim1
        Case 2
            Cells(i, 8).Value = CInt(Cells(i, 2).Value) / Trim2
        Case 3
            Cells(i, 8).Value = CInt(Cells(i, 2).Value) / Trim3
        Case 0
            Cells(i, 8).Value = CInt(Cells(i, 2).Value) / Trim4
    End Select
Next i

Cdt
Olivier
 

Discussions similaires

Réponses
0
Affichages
153
Réponses
17
Affichages
836
  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
320

Statistiques des forums

Discussions
312 215
Messages
2 086 318
Membres
103 176
dernier inscrit
jean.yvesjean.yves