moyenne sur période choisie par utilisateur

  • Initiateur de la discussion Initiateur de la discussion doudo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

doudo

XLDnaute Nouveau
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
 
Re : moyenne sur période choisie par utilisateur

Bonjour,

peut être mettre en pièce jointe un tout petit fichier, représentant uniquement le problème posé, avec modèle de donnée de départ et résultat attendu... car en l'état a part te dire que certaines déclarations de variables semblent erronées... difficile de t'aider..

bon après midi
@+
 
Re : moyenne sur période choisie par utilisateur

Bonjour,

une autre approche avec ceci :
Code:
Dim d1 As Range, d2 As Range, i As Long
Set d1 = Range("C5:N5").Find(Range("E1"), , xlValues, xlWhole, , , False)
Set d2 = Range("C5:N5").Find(Range("I1"), , xlValues, xlWhole, , , False)
For i = 6 To Range("C65536").End(xlUp).Row
    Cells(i, 15).Value = WorksheetFunction.Average(Range(Cells(i, d1.Column), Cells(i, d2.Column)))
Next i

l'orthographe des mois doit être respectée....
 
Re : moyenne sur période choisie par utilisateur

Re,

en faisant des tests sur les champs "date" :
Code:
Option Explicit
Sub test()
Dim d1 As Range, d2 As Range, i As Long
Set d1 = Range("C5:N5").Find(Range("E1"), , xlValues, xlWhole, , , False)
Set d2 = Range("C5:N5").Find(Range("I1"), , xlValues, xlWhole, , , False)
If d1 Is Nothing Or d2 Is Nothing Then Exit Sub
If d2.Column <= d1.Column Then Exit Sub
For i = 6 To Range("C65536").End(xlUp).Row
    Cells(i, 15).Value = WorksheetFunction.Average(Range(Cells(i, d1.Column), Cells(i, d2.Column)))
Next i
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
220
Réponses
2
Affichages
223
Réponses
10
Affichages
304
Réponses
5
Affichages
303
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
548
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
666
Réponses
4
Affichages
485
Retour