1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
Function cout_mois(nomFichier As String, numMois As Range)
'nomFichier : variable de type texte qui est le nom du fichier dans lequel il y a les données (fichier avec 1 onglet/ mois)
'numMois : objet de type cellule qui est la cellule dans laquelle il y a le numéro correspondant au mois voulu
Application.ScreenUpdating = False 'application qui permet de figer l'écran pendant que la macro s'exécute (n'a aucun impacte sur la macro, c'est juste pour que ça tourne plus vite)
Dim fichier As Workbook 'objet correspondant au classeur avec les données (fichier avec 1 onglet/ mois)
Dim feuille As Worksheet ' objet correspondant à une feuille de classeur
Dim somme As Long 'variable de type nombre réel qui nous permettra de faire la somme des données voulues.
somme = 0 'pour l'instant on met la somme = 0
Set fichier = Workbooks(nomFichier & ".xlsx") 'on suppose que le fichier avec les données est déjà ouvert. Ici on attribut à l'objet "fichier" ce fameux fichier avec les données.
'Boucle pour aller chercher les sommes de chaque jour et faire le total
For Each feuille In fichier.Sheets 'Pour chaque feuille de l'ensemble des feuilles du fichier avec les données
If numMois.Value = feuille.Range("E50") Then 'on vérifier que dans cette feuille en E50, on a le numéro du mois qu'on veut
If Right(feuille.Name, 4) = Cstr(Sheets("coût mensuel des tris").Range("A6").Value) Then somme = somme + feuille.Range("E48").Value 'on vérifie que la feuille correspond bien à une feuille quotidienne, puis on ajoute à la somme la cellule E48 (dans laquelle on a fait un sous-total pour un jour donné).
End If
Next feuille
cout_mois = somme 'ici on fait en sorte que notre fonction renvoie la somme calculée précédemment.
Application.ScreenUpdating = True
End Function |