Solution de Prévision des Ventes Personnalisée, Excel VBA

Solution de Prévision des Ventes Personnalisée, Excel VBA
Objectif :
Nous voulons créer une solution VBA qui peut :
1. Prendre des données de ventes historiques (par exemple, les ventes mensuelles).
2. Appliquer des méthodes de prévision personnalisables (par exemple, régression linéaire, moyennes mobiles).
3. Permettre aux utilisateurs d’ajuster certains paramètres de prévision (par exemple, taux de croissance, ajustements saisonniers).
4. Fournir un modèle de prévision dynamique qui peut être mis à jour avec de nouvelles données.
1. Mise en place de la feuille de données de ventes
Avant d’écrire le code, supposons que les données de ventes soient organisées comme suit dans Excel :

Mois Ventes
Jan-2023 1000
Fév-2023 1200
Mar-2023 1100
Déc-2023 1500

Nous allons utiliser ces données historiques pour générer des prévisions pour les prochains mois (par exemple, prévisions sur 12 mois).
2. Écriture du Code VBA pour la Prévision des Ventes
Explication détaillée du code :
Le code suivant permettra de :

  • Calculer des moyennes mobiles pour la prévision.
  • Utiliser une régression linéaire pour une prévision basée sur une tendance.
  • Permettre des ajustements basés sur l’entrée de l’utilisateur (par exemple, nombre de mois de prévision, taux de croissance).
  • Mettre à jour les prévisions de manière dynamique.

Code VBA :

Sub PrevisionVentes()
    ' Déclarer les variables
    Dim ws As Worksheet
    Dim DerniereLigne As Long
    Dim i As Long
    Dim MoisPrevision As Integer
    Dim TauxCroissance As Double
    Dim PlageMoyenneMobile As Integer
    Dim VentesHistoriques As Range
    Dim PlagePrevision As Range
    Dim DonneesX As Range, DonneesY As Range
    Dim Pente As Double, Intercept As Double
    Dim VentesPrevisionnees As Double
    Dim MoisDebutPrevision As Long
    ' Définir la feuille de calcul et la plage des données de ventes
    Set ws = ThisWorkbook.Sheets("VentesData")
    ' Trouver la dernière ligne de données dans la colonne des Ventes
    DerniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    ' Demander à l'utilisateur le nombre de mois de prévision et le taux de croissance
    MoisPrevision = InputBox("Entrez le nombre de mois à prévoir :")
    TauxCroissance = InputBox("Entrez le taux de croissance annuel en pourcentage (par exemple, 5 pour 5%) :") / 100
    PlageMoyenneMobile = InputBox("Entrez le nombre de mois pour le calcul de la moyenne mobile (par exemple, 3 pour une moyenne mobile sur 3 mois) :")
    ' Déterminer le mois de début pour les prévisions
    MoisDebutPrevision = DerniereLigne + 1
    ' Créer une plage pour les ventes historiques (colonne des ventes)
    Set VentesHistoriques = ws.Range("B2:B" & DerniereLigne)
    ' Boucle pour calculer la moyenne mobile pour la période de prévision
    For i = 1 To MoisPrevision
        ' Calculer la moyenne mobile pour les 'PlageMoyenneMobile' derniers mois
        If i <= PlageMoyenneMobile Then ws.Cells(MoisDebutPrevision + i - 1, 2).Value = WorksheetFunction.Average(VentesHistoriques.Cells(DerniereLigne - PlageMoyenneMobile + i + 1, 1)) Else ws.Cells(MoisDebutPrevision + i - 1, 2).Value = WorksheetFunction.Average(VentesHistoriques.Cells(DerniereLigne - PlageMoyenneMobile + i, 1)) End If Next i ' Maintenant, calculer la régression linéaire pour la prévision de la tendance ' Définir les données X (mois) et Y (ventes) Set DonneesX = ws.Range("A2:A" & DerniereLigne) Set DonneesY = ws.Range("B2:B" & DerniereLigne) ' Calculer la pente et l'ordonnée à l'origine de la régression linéaire Pente = Application.WorksheetFunction.Slope(DonneesY, DonneesX) Intercept = Application.WorksheetFunction.Intercept(DonneesY, DonneesX) ' Créer la prévision en utilisant la régression linéaire For i = 1 To MoisPrevision ' Ventes prévisionnées = Pente * Mois + Intercept VentesPrevisionnees = Pente * (DerniereLigne + i) + Intercept ws.Cells(MoisDebutPrevision + i - 1, 3).Value = VentesPrevisionnees Next i ' Appliquer l'ajustement du taux de croissance aux valeurs prévisionnelles (si l'utilisateur a fourni un taux de croissance) If TauxCroissance > 0 Then
        For i = 1 To MoisPrevision
            ws.Cells(MoisDebutPrevision + i - 1, 3).Value = ws.Cells(MoisDebutPrevision + i - 1, 3).Value * (1 + TauxCroissance)
        Next i
    End If
    MsgBox "La prévision des ventes est terminée !"
End Sub

3. Explication détaillée du code
1. Configuration de la feuille de calcul :

  • On commence par définir la feuille de calcul (VentesData) et déterminer la dernière ligne des données de ventes. Cela nous aide à identifier la plage de données historiques.

2. Entrées de l’utilisateur :

  • Nous utilisons la fonction InputBox pour collecter les entrées de l’utilisateur concernant le nombre de mois à prévoir (MoisPrevision), le taux de croissance (TauxCroissance) et la fenêtre de la moyenne mobile (PlageMoyenneMobile).

3. Prévision par moyenne mobile :

  • Le code calcule une moyenne mobile simple des PlageMoyenneMobile derniers mois pour la période de prévision.
  • Si les données disponibles sont insuffisantes pour calculer la moyenne mobile (par exemple, si la période de prévision est plus courte que la fenêtre de la moyenne mobile), il utilise autant de mois que possible.

4. Prévision par régression linéaire :

  • Nous utilisons les fonctions Excel PENTE et ORDONNEE.A.L’ORIGINE pour calculer l’équation de régression linéaire basée sur les données historiques de ventes.
  • Cette équation est ensuite utilisée pour prévoir les ventes futures en fonction de la tendance.

5. Ajustement du taux de croissance :

  • Si l’utilisateur a spécifié un taux de croissance, les valeurs prévisionnelles sont ajustées en fonction de ce taux, simulant ainsi une croissance générale des ventes.

6. Sortie finale :

  • Les ventes prévisionnelles sont affichées dans la feuille de calcul, à partir de la ligne suivante après les dernières données historiques.

4. Options de personnalisation
Ce modèle de prévision peut être personnalisé de plusieurs manières :
1. Modèles de prévision alternatifs :

  • Vous pouvez intégrer d’autres modèles de prévision, comme le lissage exponentiel ou les modèles ARIMA, si vous avez besoin de méthodes plus avancées.

2. Ajustements saisonniers :

  • Vous pouvez modifier le code pour inclure des ajustements saisonniers. Par exemple, si certains mois ont systématiquement des ventes plus élevées ou plus faibles, vous pouvez créer un facteur saisonnier basé sur les données historiques et ajuster vos prévisions en conséquence.

3. Plages de données dynamiques :

  • Au lieu de coder en dur les plages de colonnes, vous pouvez sélectionner dynamiquement les données en fonction de l’entrée de l’utilisateur ou d’une feuille de configuration pour rendre la solution plus flexible.

4. Génération de graphiques :

  • Vous pouvez ajouter des fonctionnalités pour générer des graphiques afin de visualiser les données prévisionnelles aux côtés des données historiques.

5. Conclusion
Cette solution VBA dans Excel permet de générer des prévisions de ventes simples basées sur des données historiques, une régression linéaire et des moyennes mobiles. Elle peut être étendue ou personnalisée pour répondre à des besoins plus complexes, y compris des modèles statistiques plus avancés ou des ajustements saisonniers. En permettant à l’utilisateur d’ajuster facilement les paramètres de prévision, cette solution est flexible et adaptable à divers contextes d’affaires.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x