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.