Développer un modèle de prévision de données personnalisé, Excel VBA
Voici un guide détaillé pour développer un modèle de prévision de données personnalisé en utilisant Excel VBA. Ce modèle utilise la régression linéaire pour prédire les valeurs futures basées sur des données historiques.
Étape 1 : Préparation des données
-
- Disposition des données : Vous devez préparer un ensemble de données dans Excel avec deux colonnes : une pour la période de temps (par exemple, Date ou Temps) et une autre pour les valeurs observées (par exemple, les ventes, les prix des actions, etc.).
- Assurez-vous que les données sont propres : aucune valeur manquante ni format incohérent.
- Exemple de disposition :
| Date | Ventes |
|------------|---------|
| 01/01/2020 | 150 |
| 01/02/2020 | 180 |
| 01/03/2020 | 200 |
| ... | ... |
Étape 2 : Ouvrir Excel et lancer l’éditeur VBA
- Ouvrez votre fichier Excel.
- Appuyez sur
Alt + F11pour ouvrir l’éditeur VBA. - Dans l’éditeur VBA, insérez un nouveau module en cliquant avec le bouton droit sur un élément du Project Explorer, en sélectionnant
InsertpuisModule.
Étape 3 : Écrire le code VBA
Nous allons maintenant écrire un macro VBA qui :
1. Prend les données de la feuille Excel.
2. Utilise la régression linéaire (un modèle simple de prévision) pour prédire les valeurs futures.
3. Affiche les valeurs prédites dans Excel.
Sub ForecastData()
Dim lastRow As Long
Dim i As Long
Dim X As Double, Y As Double
Dim sumX As Double, sumY As Double
Dim sumXY As Double, sumXX As Double
Dim slope As Double, intercept As Double
Dim forecastDate As Date
Dim forecastValue As Double
' Définir la plage de données
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' Initialiser les sommes
sumX = 0
sumY = 0
sumXY = 0
sumXX = 0
' Parcourir les données pour calculer les sommes
For i = 2 To lastRow
X = i - 1 ' La valeur de X (périodes de temps : 1, 2, 3, ...)
Y = Cells(i, 2).Value ' La valeur de Y (données de ventes)
sumX = sumX + X
sumY = sumY + Y
sumXY = sumXY + X * Y
sumXX = sumXX + X * X
Next i
' Calculer la pente (b) et l'interception (a) pour la droite de régression linéaire : Y = a + bX
slope = (lastRow * sumXY - sumX * sumY) / (lastRow * sumXX - sumX * sumX)
intercept = (sumY - slope * sumX) / lastRow
' Afficher l'équation de la droite pour le débogage ou la compréhension
MsgBox "Équation de la droite : Y = " & intercept & " + " & slope & "X"
' Prévoir la prochaine valeur
forecastDate = Cells(lastRow + 1, 1).Value ' Récupérer la prochaine date (ou période)
forecastValue = intercept + slope * (lastRow) ' Valeur prédite
' Afficher la valeur prédit dans la prochaine ligne
Cells(lastRow + 1, 2).Value = forecastValue
' Optionnel : Vous pouvez mettre en surbrillance ou formater la valeur prédit
Cells(lastRow + 1, 2).Interior.Color = RGB(255, 255, 0) ' Couleur jaune pour la prévision
' Optionnel : Afficher un graphique des données prédites (y compris le point prédit)
Dim chartObj As ChartObject
Set chartObj = ActiveSheet.ChartObjects.Add
chartObj.Chart.ChartType = xlLine
chartObj.Chart.SetSourceData Source:=Range("A1:B" & lastRow + 1)
chartObj.Chart.HasTitle = True
chartObj.Chart.ChartTitle.Text = "Données Prévisionnelles"
End Sub
Explication du code :
1. Traitement des données :
- Le code commence par calculer le nombre de lignes (
lastRow) contenant des données. - Il calcule ensuite les sommes nécessaires à la régression linéaire : la somme de
X(période de temps), la somme deY(valeurs observées), la somme deXY(multiplication de X et Y) et la somme deXX(carré de X).
2. Régression linéaire :
-
- En utilisant la formule de régression linéaire, on calcule la pente (
b) et l’interception (a). - La formule utilisée est
Y = a + bXoù :aest l’interception.best la pente.Xest la période de temps.Yest la valeur observée.
- En utilisant la formule de régression linéaire, on calcule la pente (
3. Prévision :
- Après avoir créé le modèle de régression, la prévision pour la prochaine donnée est calculée.
- La valeur prédite est obtenue en remplaçant la dernière période de temps (
X = lastRow) dans l’équation. - La valeur prédite est affichée dans la prochaine ligne du jeu de données.
4. Visualisation :
- Optionnellement, un graphique est généré pour visualiser à la fois les données historiques et les données prévisionnelles.
Étape 4 : Exécuter la macro
- Fermez l’éditeur VBA.
- De retour dans Excel, appuyez sur
Alt + F8, sélectionnez la macroForecastData, puis cliquez surExécuter. - Le code prévoira la prochaine donnée en fonction du modèle de régression linéaire et affichera la valeur prédite dans la ligne suivante.
- Un graphique sera également affiché montrant les données historiques et la prévision.
Résultat attendu :
- Une nouvelle ligne sera ajoutée au jeu de données avec la valeur prédit.
- La valeur prédit sera mise en surbrillance en jaune.
- Un graphique en ligne sera généré pour afficher les données historiques et les données prévisionnelles.
Cette approche utilise la régression linéaire simple pour la prévision. Vous pouvez l’améliorer en ajoutant des modèles plus sophistiqués, tels que la régression polynomiale ou l lissage exponentiel, en fonction de la complexité de vos données et de vos besoins.