Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Apprenez le langage VBA
  3. Gestion des employés
Extrait - Apprenez le langage VBA et devenez un expert sur Excel (versions 2019, 2021 et Microsoft 365)
Extraits du livre
Apprenez le langage VBA et devenez un expert sur Excel (versions 2019, 2021 et Microsoft 365) Revenir à la page d'achat du livre

Gestion des employés

Calcul de la durée et du planning : description de l’exemple

Présentation de l’exemple

L’objectif de cet exemple est de réaliser le planning du projet informatique de portail client de la société SacEni avec les ressources en main d’œuvre à disposition. Un ensemble de tâches doit être réalisé pour délivrer le projet.

Les ressources

Chaque ressource a un poste : manager, concepteur, développeur ou testeur.

Chaque ressource a indiqué sa disponibilité sur la période allant du 01/04/2022 au 30/06/2022.

Les tâches

Chaque tâche est considérée comme exécutée lorsque le nombre de jours par poste a été consommé. Elles débutent lorsque les tâches précédentes ont été réalisées et se terminent lorsque les ressources nécessaires ont été affectées.

Objectif

L’objectif est de déterminer la date au plus tôt pour finir le projet en fonction de la disponibilité des ressources. Il sera demandé également d’avoir une représentation graphique de cette date de fin.

Présentation du fichier

Le fichier Enoncé_5-ABC.xlsm se compose de deux feuilles : Planning et Taches.

Feuille Planning

  • La feuille Planning contient la liste des ressources (colonne...

Calcul de la durée et du planning : notions de cours

Formules de date

Les formules de date permettent de faire des opérations sur les dates : ajouter/compter des jours, trouver la fin de mois…

Calculer le nombre de jours ouvrés entre deux dates

La fonction NB.JOURS.OUVRES permet de calculer le nombre de jours ouvrés entre deux dates.

La syntaxe est la suivante :

=NB.JOURS.OUVRES(date_debut ; date_fin ; [jours_feries])

  • Date_debut : correspond à la date de début de la série.

  • Date_Fin : correspond à la date de fin de la série.

  • Jours_Feries : correspond soit à un nombre de jours fériés, soit à une plage contenant les jours fériés. L’argument est facultatif.

Exemple :

Calcul du nombre de jours ouvrés entre le 15 décembre 2021 et le 31 décembre 2021. L’argument est le jour férié du 25 décembre 2021.

Résultat : le nombre de jours ouvrés est 13.

images/05SOB01N.PNG

Additionner un nombre de jours ouvrés à une date

La fonction SERIE.JOUR.OUVRE permet de renvoyer un nombre qui représente une date correspondant à une date (date de début) à laquelle est ajouté ou soustrait le nombre de jours ouvrés spécifiés.

La syntaxe est la suivante :

=SERIE.JOUR.OUVRE(date_debut ; nb_jours ; [jours_feries])...

Calcul de la durée et du planning : réalisation de l’exemple

 Ouvrez le fichier Enoncé_5-ABC.xlsm.

Calcul de la durée de chaque tâche

Date de début et date de fin

Sur la feuille Taches, la durée sera calculée dans la colonne H pour chaque tâche, toutefois il est déjà possible de définir la structure du diagramme de Gantt.

  • Colonne : la date de début minimal correspond à la date de fin de la tâche antérieure + 1.

  • Colonne : la date de fin correspond à la date de début à laquelle la durée est ajoutée.

images/r05SOB01N.PNG

Pour la colonne G, il n’y a pas de formule particulière, vous devez traiter individuellement chaque ligne :

  • Pour la date de début des tâches 2 et 3, vous prenez la date de fin de la tâche 1 à laquelle vous ajoutez 1.

  • La date de début de la tâche 4 correspond à la date de fin de la tâche 3 plus 1 jour.

  • La date de début des tâches 5 et 6 correspondent à la date de fin de la tâche 4 plus 1 jour.

  • La date de début de la tâche 7 correspond à la date de fin la plus élevée entre les tâches 5 et 6.

  • Enfin, la date de début de la tâche 8 correspond à la date de fin de la tâche 7 plus 1 jour.

 Saisissez les formules suivantes :

images/r05SOB02N.PNG

Pour la date de fin, il faut ajouter la durée à la date de début et utiliser la formule SERIE.JOUR.OUVRE :

 Sélectionnez la plage I4:I11.

 Appuyez sur la touche F2 pour éditer la formule de la cellule I4.

 Saisissez dans la cellule =SERIE.JOUR.OUVRE(G4;H4;Férié) puis appuyez simultanément sur les touches CtrlEntrée pour appliquer la formule à l’ensemble de la plage.

images/r05SOB03N.PNG

Calculer la durée nécessaire

Tout d’abord, il est nécessaire de récupérer le nombre de ressources disponibles par métier et par jour. La formule NB.SI.ENS permettra de compter le nombre de ressources ayant indiqué leur disponibilité par poste.

 Dans la feuille Planning, saisissez les différents postes en dessous du tableau (plage B27:B30) :

images/r05SOB07N.PNG

 Sélectionnez la plage entière C27:CO30.

 La formule va être un NB.SI.ENS avec deux critères :...

Gestion des présences - Outil d’administration : description de l’exemple

Présentation de l’exemple

L’objectif de cette seconde partie est de reprendre le fichier de disponibilité des ressources et d’y ajouter certaines fonctionnalités pour faciliter son utilisation.

En l’état, n’importe quel utilisateur du fichier peut modifier les présences/absences de toutes les ressources. La suite de cet exemple permettra de restreindre par un mot de passe la modification des disponibilités.

L’autre objectif de cet exemple est aussi de calculer le coût de chaque tâche et du projet au total. Le coût d’une tâche correspond au coût de chaque ressource requise pour une tâche. Il est demandé également d’optimiser le coût de chaque tâche en prenant la ressource la moins coûteuse pour une tâche.

Une contrainte très importante est à intégrer : le calendrier n’est pas fixe et il peut s’étendre bien au-delà de juin. Le fichier doit être en capacité de s’adapter à cette contrainte et générer autant de mois que nécessaire dans le calendrier.

Présentation du fichier

Le fichier Enoncé_5-DEF.xlsm est basé sur la première partie de ce chapitre puisqu’il s’agit de la même structure avec les deux feuilles Planning et Taches. La feuille Planning contient les données sur les ressources alors que la feuille Taches contient le planning de chaque...

Gestion des présences - Outil d’administration : notions de cours

Création dynamique de contrôle

Qu’est-ce que c’est ?

Ajouter des contrôles dynamiquement signifie que de nouveaux contrôles sont créés sur le formulaire durant l’exécution.

L’ajout du contrôle est déclenché par une procédure que ce soit automatiquement ou par action de l’utilisateur.

Ajouter un contrôle se fait dans un contrôle conteneur, c’est-à-dire capable de contenir d’autres contrôles : Form, Frame, Page...

Comment ça fonctionne ?

Il faut créer un objet de type Control, puis l’ajouter sur un contrôle conteneur.

Dim MonControle As Control 'instanciation d'une variable de type  
Control 

Ajout du contrôle dans un contrôle conteneur :

Set MonControle =  
Form.ControleConteneur.Controls.Add("forms.Textbox.1")  
' ajout d'une nouvelle Textbox dans le contrôle conteneur. 

Pour les autres contrôles, voici la syntaxe à utiliser :

Contrôle

Syntaxe

ComboBox (zone de liste modifiable)

Forms.CheckBox.1

CommandButton (bouton de commande)

Forms.ComboBox.1

Frame (cadre)

Forms.CommandButton.1

Image

Forms.Frame.1

Label (étiquette)

Forms.Image.1

ListBox (zone de liste)

Forms.Label.1

MultiPage

Forms.ListBox.1

OptionButton (bouton d’option)

Forms.MultiPage.1

ScrollBar (barre de défilement)

Forms.OptionButton.1

SpinButton...

Gestion des présences - Outil d’administration : réalisation de l’exemple

 Ouvrez le fichier Enoncé_5-DEF.xlsm.

Initialisation du formulaire

La ressource voulant effectuer une modification de ses disponibilités ouvrira le fichier et sera positionnée sur la feuille Taches. Elle cliquera alors sur le bouton Editer la disponibilité par personne pour s’identifier.

L’identification passera par une fenêtre de type InputBox qui demandera le matricule de la ressource puis elle accédera au formulaire.

Connexion pour une ressource

L’ensemble de ce code doit être écrit au sein de la procédure AfficherFormulairePersonne puisque c’est ce formulaire qui est appelé lorsque la personne clique sur le bouton. Cette procédure est présente dans le Module2.

 Au début du Module2, écrivez l’instruction Option Explicit.

images/p301.PNG

Voici la manipulation à réaliser :

 Tout d’abord, créez les variables :

  • Une variable de type chaîne de caractères pour stocker le matricule saisi par la personne. 

  • Une variable de type nombre entier pour parcourir les lignes du tableau contenant les ressources.

  • Une variable publique contenant la ligne de la ressource trouvée. Celle-ci doit être définie avant la procédure et doit être initialisée à 0. L’intérêt d’avoir une variable publique est de connaître à tout moment durant l’exécution la ligne où se situe la ressource dans la feuille Planning. Cela sera particulièrement utile lors de la sauvegarde ;

  • D’autres variables seront créées plus loin dans le code.

 Écrivez le code suivant :

Option Explicit 
Public LigneRessource As Integer 
Sub AfficherFormulairePersonne() 
Dim Matricule As String 
Dim Ligne As Integer 
LigneRessource = 0 

 Créez ensuite une invite de dialogue de type InputBox associée à la variable Matricule

L’invite de dialogue Inputbox se décrit avec la méthode Inputbox(intitulé, [titre], [valeur_par_defaut]....) et renvoie une valeur de type String correspondant au texte saisi par l’utilisateur.

Dans ce cas, vous utiliserez uniquement les arguments intitulé (obligatoire)...