Bonjour à tous et merci d'avance pour votre aide,
Je suis débutant en VBA et je rencontre un petit souci de code.
Le souci apparait au niveau de la ligne :
moyenne = (Range("i,j").Value + moyenne * k) / k
Je sais aussi qu'il y a certaines imperfections de codage, vos remarques constructives seront les bienvenues.
Le but de ce code est de générer au bout (colonne O) des lignes 6 à 29, la moyenne d'une période choisie par l'utilisateur en E1 (mois de début de période) et I1 (mois de fin de période) à partir de listes déroulantes composées des mois de janvier à décembre...
Le tableau est composé de cette façon :
C [...] N (--> n° de colonnes)
janvier [...] décembre (ligne n°5)
21 [...] 54 (ligne n°6)
[........]
14 [...] 21 (ligne n°29)
J'espère avoir été clair, voici le code :
Sub fichier_moyen()
Dim mois1 As String
Dim mois2 As String
Dim numero1 As Integer
Dim numéro2 As Integer
Dim moyenne As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
moyenne = 0
mois1 = Range("E1").Value
mois2 = Range("I1").Value
If mois1 = janvier Then numero1 = 3
If mois1 = février Then numero1 = 4
If mois1 = mars Then numero1 = 5
If mois1 = avril Then numero1 = 6
If mois1 = mai Then numero1 = 7
If mois1 = juin Then numero1 = 8
If mois1 = juillet Then numero1 = 9
If mois1 = août Then numero1 = 10
If mois1 = septembre Then numero1 = 11
If mois1 = octobre Then numero1 = 12
If mois1 = novembre Then numero1 = 13
If mois1 = décembre Then numero1 = 14
If mois2 = janvier Then numero1 = 3
If mois2 = février Then numero1 = 4
If mois2 = mars Then numero1 = 5
If mois2 = avril Then numero1 = 6
If mois2 = mai Then numero1 = 7
If mois2 = juin Then numero1 = 8
If mois2 = juillet Then numero1 = 9
If mois2 = août Then numero1 = 10
If mois2 = septembre Then numero1 = 11
If mois2 = octobre Then numero1 = 12
If mois2 = novembre Then numero1 = 13
If mois2 = décembre Then numero1 = 14
For i = 6 To 29
For j = numero1 To numero2
For k = 1 To ((numero2 - numero1) + 1)
If k = 1 Then
moyenne = (Range("i,j").Value + moyenne * k) / k
Else
moyenne = (Range("i,j").Value + moyenne * k) / (k + 1)
End If
Range("O,i").Value = moyenne
Next k
Next j
Next i
End Sub
Je suis débutant en VBA et je rencontre un petit souci de code.
Le souci apparait au niveau de la ligne :
moyenne = (Range("i,j").Value + moyenne * k) / k
Je sais aussi qu'il y a certaines imperfections de codage, vos remarques constructives seront les bienvenues.
Le but de ce code est de générer au bout (colonne O) des lignes 6 à 29, la moyenne d'une période choisie par l'utilisateur en E1 (mois de début de période) et I1 (mois de fin de période) à partir de listes déroulantes composées des mois de janvier à décembre...
Le tableau est composé de cette façon :
C [...] N (--> n° de colonnes)
janvier [...] décembre (ligne n°5)
21 [...] 54 (ligne n°6)
[........]
14 [...] 21 (ligne n°29)
J'espère avoir été clair, voici le code :
Sub fichier_moyen()
Dim mois1 As String
Dim mois2 As String
Dim numero1 As Integer
Dim numéro2 As Integer
Dim moyenne As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
moyenne = 0
mois1 = Range("E1").Value
mois2 = Range("I1").Value
If mois1 = janvier Then numero1 = 3
If mois1 = février Then numero1 = 4
If mois1 = mars Then numero1 = 5
If mois1 = avril Then numero1 = 6
If mois1 = mai Then numero1 = 7
If mois1 = juin Then numero1 = 8
If mois1 = juillet Then numero1 = 9
If mois1 = août Then numero1 = 10
If mois1 = septembre Then numero1 = 11
If mois1 = octobre Then numero1 = 12
If mois1 = novembre Then numero1 = 13
If mois1 = décembre Then numero1 = 14
If mois2 = janvier Then numero1 = 3
If mois2 = février Then numero1 = 4
If mois2 = mars Then numero1 = 5
If mois2 = avril Then numero1 = 6
If mois2 = mai Then numero1 = 7
If mois2 = juin Then numero1 = 8
If mois2 = juillet Then numero1 = 9
If mois2 = août Then numero1 = 10
If mois2 = septembre Then numero1 = 11
If mois2 = octobre Then numero1 = 12
If mois2 = novembre Then numero1 = 13
If mois2 = décembre Then numero1 = 14
For i = 6 To 29
For j = numero1 To numero2
For k = 1 To ((numero2 - numero1) + 1)
If k = 1 Then
moyenne = (Range("i,j").Value + moyenne * k) / k
Else
moyenne = (Range("i,j").Value + moyenne * k) / (k + 1)
End If
Range("O,i").Value = moyenne
Next k
Next j
Next i
End Sub