Corrections VBA - Consommation de Spaghetti à Dschang
Corrections VBA - Consommation de Spaghetti à Dschang
Correction de l'Exercice 1 : Calcul de la consommation moyenne de spaghetti par habitant
Sub CalculConsommationMoyenne()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Consommation")
Dim i As Integer
Dim lastRow As Long
Dim population As Double
Dim quantiteTotale As Double
Dim consommationMoyenne As Double
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For i = 2 To lastRow ' Supposons que la première ligne est l'en-tête
population = ws.Cells(i, 2).Value
quantiteTotale = ws.Cells(i, 3).Value
If population > 0 Then
consommationMoyenne = quantiteTotale / population
ws.Cells(i, 4).Value = consommationMoyenne
End If
Next i
' Trouver le mois avec la consommation moyenne la plus élevée
Dim maxMoyenne As Double
Dim moisMax As String
maxMoyenne = Application.WorksheetFunction.Max(ws.Range("D2:D" & lastRow))
moisMax = ws.Cells(Application.WorksheetFunction.Match(maxMoyenne, ws.Range("D2:D" & lastRow), 0) + 1, 1).Value
MsgBox "Le mois avec la consommation moyenne la plus élevée est : " & moisMax
End Sub
Correction de l'Exercice 2 : Analyse de la variation mensuelle de consommation
Sub AnalyseVariationMensuelle()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Consommation")
Dim i As Integer
Dim lastRow As Long
Dim quantitePrecedente As Double
Dim variation As Double
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For i = 3 To lastRow ' Commencer à la troisième ligne
quantitePrecedente = ws.Cells(i - 1, 3).Value
variation = ws.Cells(i, 3).Value - quantitePrecedente
ws.Cells(i, 5).Value = variation
Next i
' Trouver le mois avec la variation la plus importante
Dim maxVariation As Double
Dim moisMaxVariation As String
maxVariation = Application.WorksheetFunction.Max(ws.Range("E3:E" & lastRow))
moisMaxVariation = ws.Cells(Application.WorksheetFunction.Match(maxVariation, ws.Range("E3:E" & lastRow), 0) + 2, 1).Value
MsgBox "Le mois avec la variation la plus importante est : " & moisMaxVariation
End Sub
Correction de l'Exercice 3 : Visualisation de la consommation annuelle
Sub VisualisationConsommation()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Consommation")
Dim chartObj As ChartObject
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Créer un graphique à barres
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)
With chartObj.Chart
.SetSourceData Source:=ws.Range("A1:C" & lastRow)
.ChartType = xlColumnClustered
.HasTitle = True
.ChartTitle.Text = "Consommation Totale de Spaghetti par Mois"
.Axes(xlCategory, xlPrimary).CategoryNames = ws.Range("A2:A" & lastRow)
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Text = "Quantité Totale (kg)"
End With
End Sub
Correction de l'Exercice 4 : Prévision de la consommation de spaghetti
Sub PrevisionConsommation()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Consommation")
Dim i As Integer
Dim lastRow As Long
Dim moyenneMobile As Double
Dim n As Integer
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
n = 3 ' Nombre de mois pour la moyenne mobile
For i = n To lastRow
moyenneMobile = Application.WorksheetFunction.Average(ws.Range(ws.Cells(i - n + 1, 3), ws.Cells(i, 3)))
ws.Cells(i, 6).Value = moyenneMobile
Next i
MsgBox "Prévision pour le mois suivant est : " & ws.Cells(lastRow, 6).Value
End Sub
Correction de l'Exercice 5 : Identification des anomalies de consommation
Sub IdentifierAnomalies()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Consommation")
Dim i As Integer
Dim lastRow As Long
Dim moyenneAnnuelle As Double
Dim seuil As Double
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
moyenneAnnuelle = Application.WorksheetFunction.Average(ws.Range("C2:C" & lastRow))
seuil = moyenneAnnuelle * 1.2 ' 20% au-dessus de la moyenne annuelle
For i = 2 To lastRow
If ws.Cells(i, 3).Value > seuil Then
ws.Cells(i, 3).Interior.Color = RGB(255, 0, 0) ' Rouge
End If
Next i
MsgBox "Les anomalies ont été identifiées et colorées en rouge."
End Sub
Correction de l'Exercice 6 : Comparaison de la consommation de spaghetti entre différents quartiers
Sub ComparaisonConsommationQuartiers()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Quartiers")
Dim i As Integer
Dim lastRow As Long
Dim consommationMoyenne As Double
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For i = 2 To lastRow
consommationMoyenne = ws.Cells(i, 3).Value / ws.Cells(i, 2).Value
ws.Cells(i, 4).Value = consommationMoyenne
Next i
' Créer un graphique comparatif
Dim chartObj As ChartObject
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)
With chartObj.Chart
.SetSourceData Source:=ws.Range("A1:D" & lastRow)
.ChartType = xlColumnClustered
.HasTitle = True
.ChartTitle.Text = "Consommation Moyenne de Spaghetti par Quartier"
.Axes(xlCategory, xlPrimary).CategoryNames = ws.Range("A2:A" & lastRow)
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Text = "Consommation Moyenne (kg/habitant)"
End With
End Sub