Automatisation des tableaux de bord avec Excel
Chapitre 1. Introduction
Chapitre 2. Prérequis
Chapitre 3. Etude de cas : gestion des absences
Chapitre 4. Etude de cas : accidents
4.1. Introduction
4.2. Moyennes mobiles
4.3. Graphique et formulaire
4.4. Alimentation en données agrégées
4.4.1. Stockage
4.4.2. Consultation
4.4.3. Automatisation
4.5. Alimentation en données brutes
4.6. Exercices
Page d'accueil Table des matières Niveau supérieur Page précédente Bas de la page Page suivante Webographie du module Glossaire du module

4.4.3. Automatisation

La feuille "parametres" du classeur blesses.xlsm contient la liste des années disponibles ainsi que deux boutons automatisant l'importation des classeurs annuels :

Deux automatisations sont proposées :

  • le bouton "Importer classeur" permet d'importer un classeur annuel.
  • le bouton "Importer dossier" (voir exercice 3) permet d'importer tous les classeurs du dossier dont le nom est fixé dans la cellule D1 de la feuille "parametres".

Les macros associés à ces deux boutons, nommées respectivement importerClasseur et importerDossier, sont disponibles dans le module Module2 du classeur. Nous allons commenter la première des deux, qui est une adaptation d'un programme créé par l'enregistreur macro (voir question 3 de l'exercice 3) :

Sub importerClasseur()
    ' choix de l'annee (et donc du fichier)
    annee = InputBox("annee à ajouter")
    dossier = Worksheets("parametres").Range("D1") & "\"
    fichier = "annee" & annee & ".xlsx"
    If (Dir(dossier & fichier) = "") Then
        MsgBox (fichier & " est inexistant")
        Exit Sub
    End If
    ' attention, à faire avant l'ouverture du classeur annuel
    Set f = Worksheets("stockage")
    ' ouverture du classeur annuel
    Workbooks.Open Filename:=dossier & fichier
    ' transfert des donnees
    n = WorksheetFunction.CountA(f.Columns("A")) + 1 ' position d'insertion
    Worksheets("Feuil1").Range("A2:D13").Copy f.Cells(n, 2)
    ' ajout des clés (colonne 1) et des totaux de blessés (colonne 6)
    For lig = n To n + 11
        f.Cells(lig, 1) = f.Cells(lig, 3) & "/" & f.Cells(lig, 2)
        f.Cells(lig, 6) = f.Cells(lig, 4) + f.Cells(lig, 5)
    Next lig
    ' fermeture du classeur annuel
    ActiveWorkbook.Close
End Sub

L'utilisateur doit tout d'abord saisir l'année dans une boîte de dialogue, à partir de laquelle est déterminé le nom du fichier : s'il entre 1991, le fichier à importer se nommera "D:\accidents\donnees\annee1991.xlsx". Si le fichier n'est pas trouvé, un message d'erreur est affiché et le programme est interrompu.

L'instruction Set f = Worksheets("stockage") doit impérativement être effectuée avant l'ouverture du classeur annuel, car sinon f désignerait la feuille "stockage" de ce classeur annuel et non la feuille "stockage" du classeur blesses.xlsm (contenant le tableau de bord et la macro).

Pour obtenir la position d'insertion (B86 dans la macro enregistrée) dans la feuille stockage, on calcule le nombre de valeurs de la colonne A auquel on ajoute 1.

Page d'accueil Table des matières Niveau supérieur Page précédente Haut de la page Page suivante Webographie du module Glossaire du module