Développer des solutions personnalisées de modélisation de données, Excel VBA

Développer des solutions personnalisées de modélisation de données, Excel VBA

Pour développer des solutions personnalisées de modélisation de données dans Excel VBA, il est important de créer des structures flexibles et évolutives qui permettent de traiter différents types de données (par exemple, numériques, catégorielles ou temporelles). Je vais vous guider à travers un exemple de code VBA pour construire une solution de modélisation de données de base, qui inclut des éléments comme la validation des données, la création dynamique de tableaux, et la génération des résultats du modèle.
Étape 1 : Entrée des données
La première étape consiste à créer une interface pour l’entrée des données. Cela peut être fait via un formulaire utilisateur ou directement dans une feuille de calcul Excel.
Code pour la validation des données d’entrée :

Sub ValidationDonneesEntree()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Data") ' Supposons que les données sont sur la feuille "Data"
    ' Exemple de validation pour les entrées numériques
    With ws.Range("A2:A100") ' Validation des valeurs numériques dans la colonne A
        .Validation.Delete
        .Validation.Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="1", Formula2:="100"
        .Validation.IgnoreBlank = True
        .Validation.ShowInput = True
        .Validation.ShowError = True
    End With
End Sub

Ce code valide les entrées numériques (nombres entiers entre 1 et 100) dans la colonne A de la feuille « Data ».
Étape 2 : Prétraitement des données
Une fois que les données sont saisies, il est nécessaire de les prétraiter (par exemple, gérer les valeurs manquantes, normaliser les caractéristiques ou supprimer les valeurs aberrantes). Vous pouvez utiliser VBA pour automatiser ce prétraitement.
Exemple : Gestion des valeurs manquantes

Sub GestionValeursManquantes()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Data")
    Dim i As Long
    Dim derniereLigne As Long
    derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Dernière ligne des données
    ' Calculer la somme et le nombre de cellules non vides dans la colonne A
    Dim sommeValeurs As Double
    Dim compteValeurs As Long
    sommeValeurs = 0
    compteValeurs = 0
    For i = 2 To derniereLigne
        If IsNumeric(ws.Cells(i, 1).Value) Then
            sommeValeurs = sommeValeurs + ws.Cells(i, 1).Value
            compteValeurs = compteValeurs + 1
        End If
    Next i
    ' Calculer la moyenne et remplir les valeurs manquantes avec cette moyenne
    Dim moyenne As Double
    If compteValeurs > 0 Then
        moyenne = sommeValeurs / compteValeurs
    Else
        moyenne = 0 ' Valeur par défaut si aucune donnée valide
    End If
    ' Remplacer les valeurs manquantes par la moyenne
    For i = 2 To derniereLigne
        If Not IsNumeric(ws.Cells(i, 1).Value) Then
            ws.Cells(i, 1).Value = moyenne
        End If
    Next i
End Sub

Cette procédure vérifie les valeurs manquantes dans la colonne A et les remplit avec la valeur moyenne de cette colonne.
Étape 3 : Transformation des données
En fonction des besoins de votre modèle, vous devrez peut-être transformer les données (par exemple, appliquer des transformations logarithmiques, normaliser, etc.).
Exemple : Normalisation des données

Sub NormalisationDonnees()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Data")
    Dim i As Long
    Dim derniereLigne As Long
    derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Dernière ligne des données
    ' Trouver la valeur minimale et maximale dans la colonne A
    Dim minVal As Double
    Dim maxVal As Double
    minVal = Application.Min(ws.Range("A2:A" & derniereLigne))
    maxVal = Application.Max(ws.Range("A2:A" & derniereLigne))
    ' Normaliser les données dans la colonne A
    For i = 2 To derniereLigne
        If IsNumeric(ws.Cells(i, 1).Value) Then
            ws.Cells(i, 1).Value = (ws.Cells(i, 1).Value - minVal) / (maxVal - minVal)
        End If
    Next i
End Sub

Cette procédure normalise les valeurs de la colonne A, les mettant à l’échelle entre 0 et 1.
Étape 4 : Construction du modèle
Une fois les données préparées, vous pouvez maintenant construire un modèle prédictif simple (par exemple, une régression linéaire) en utilisant des formules Excel ou de la logique VBA.
Exemple : Régression linéaire simple

Sub ModeleRegressionLineaire()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Data")
    Dim plageX As Range
    Dim plageY As Range
    Set plageX = ws.Range("A2:A100") ' Variable indépendante
    Set plageY = ws.Range("B2:B100") ' Variable dépendante
    ' Utiliser la fonction LINEST d'Excel pour la régression linéaire (retourne la pente et l'intercept)
    Dim resultatsRegression As Variant
    resultatsRegression = Application.WorksheetFunction.LinEst(plageY, plageX)
    ' Afficher les résultats
    Dim pente As Double
    Dim intercept As Double
    pente = resultatsRegression(1, 1)
    intercept = resultatsRegression(1, 2)
    ws.Range("D2").Value = "Pente : " & pente
    ws.Range("D3").Value = "Intercept : " & intercept
    ' Prédire les valeurs en fonction du modèle
    Dim i As Long
    For i = 2 To 100
        ws.Cells(i, 4).Value = pente * ws.Cells(i, 1).Value + intercept ' Valeurs prédites dans la colonne D
    Next i
End Sub

Ce code applique un modèle de régression linéaire simple pour prédire y en fonction de x en utilisant la fonction LINEST d’Excel. La pente et l’intercept sont affichés, et les valeurs prédites sont écrites dans la colonne D.
Étape 5 : Sortie des résultats du modèle
Enfin, une fois que le modèle est construit, nous pouvons présenter les résultats. Cela pourrait inclure la génération de visualisations ou l’écriture des prédictions du modèle dans une feuille séparée.
Exemple : Création d’un graphique des prédictions

Sub CreerGraphiquePredictions()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Data")
    ' Créer un graphique pour visualiser les valeurs prédites
    Dim graphiqueObj As ChartObject
    Set graphiqueObj = ws.ChartObjects.Add
    graphiqueObj.Chart.ChartType = xlXYScatterLines
    ' Définir la source de données pour le graphique
    graphiqueObj.Chart.SetSourceData Source:=ws.Range("A2:A100, D2:D100")
    ' Personnaliser le graphique
    graphiqueObj.Chart.HasTitle = True
    graphiqueObj.Chart.ChartTitle.Text = "Prédictions de Régression Linéaire"
End Sub

Cette procédure génère un graphique de dispersion avec des lignes pour visualiser les prédictions du modèle de régression linéaire.
Conclusion :
Ceci est un cadre de base pour développer des solutions personnalisées de modélisation de données dans Excel VBA. Il inclut la gestion des données d’entrée, la validation, le prétraitement, la transformation, ainsi que la création de modèles prédictifs simples. L’avantage de cette approche est sa flexibilité — vous pouvez l’étendre pour inclure des modèles plus sophistiqués, traiter des structures de données plus complexes et intégrer d’autres techniques statistiques.

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