Utilisation des InputBox pour les dates d'échéance en VBA

Utiliser une Inputbox
Vidéo non disponible ! Réessayez plus tard
Cette vidéo fait partie de la formation
Programmez Microsoft Project 2016 avec les macros et VBA
Revoir le teaser Je m'abonne
Transcription

49,90€ Je commande

À partir de
27€ /mois
Je m'abonne à Elephorm

Description Programme Avis

49,90€ Je commande

À partir de
27€ /mois
Je m'abonne à Elephorm

Les objectifs de cette vidéo sont de vous apprendre à :

- Utiliser des InputBox pour la saisie de dates.
- Gérer les dates d'échéance dans Microsoft Project.
- Manipuler les variables et les interactions utilisateur en VBA.

Découvrez comment utiliser une InputBox pour saisir des dates d'échéance directement dans une tâche sous VBA.

Dans ce tutoriel, nous vous montrons comment combiner l'utilisation de variables avec une boîte de dialogue InputBox pour recueillir la saisie de dates par l'utilisateur. Contrairement à une MSGBox qui ne permet que des choix de boutons standard (oui, non, annuler), une InputBox permet une saisie personnalisée. L'objectif est de permettre à un utilisateur positionné sur une tâche dans Project de saisir une date d'échéance via une macro. Vous apprendrez à :

- Déclarer et initialiser des variables.
- Utiliser une InputBox pour recueillir des données.
- Définir une valeur par défaut pour l'InputBox.
- Mettre à jour la date d'échéance de la tâche sélectionnée.

Le tutoriel couvre également la gestion des erreurs lors de la saisie et propose différents scénarios de test pour valider le bon fonctionnement du code.

Voir plus
Questions réponses
Quelle est la différence entre InputBox et MSGBox?
L'InputBox permet de recueillir la saisie de texte par l'utilisateur tandis que la MSGBox ne permet que des choix de boutons standard comme oui, non, et annuler.
Comment définir une valeur par défaut dans une InputBox?
Pour définir une valeur par défaut, vous pouvez utiliser le quatrième argument de la fonction InputBox, par exemple en utilisant la date du jour plus un certain nombre de jours.
Que faire si un utilisateur saisit du texte au lieu d'une date dans l'InputBox?
S'il saisit du texte, cela provoquera une erreur d'exécution. Il est possible de gérer cette erreur en utilisant des structures de contrôle comme On Error dans VBA.
Nous allons maintenant examiner un autre exemple d'utilisation de variables combiné avec une boîte de dialogue de type InputBox. La différence, c'est qu'une InputBox permet de recueillir la saisie d'un texte par l'utilisateur, alors que la MSGBox ne permet que le choix de bouton standard. Oui, non, annuler, recommencer. Pour cela, mon objectif est de permettre à l'utilisateur qui sera dans Project, positionné sur une tâche, de saisir directement une date d'échéance, de deadline, sur cette tâche lorsqu'il lancera la macro. Je vais construire un nouveau sub, je vais l'appeler InputBox underscore échéance, et j'ai besoin dans ce sub tout d'abord de déclarer une variable, je vais dire dim d, parce que ça sera typé date, date, échéance, as, date. Ensuite, je vais lancer l'InputBox, donc pour ça, il faut que je rappelle la variable dédateéchéance, je vais même le faire par un copier-coller, dédateéchéance égale, et bien égale le résultat d'une InputBox, j'ouvre une parenthèse, on a besoin d'un prompt, c'est à dire un message, j'ouvre un guillemet, veuillez saisir la date de livraison, ou entrer la date de livraison, cette date de livraison obligatoire deviendra la date d'échéance, virgule, je peux aussi, mais c'est facultatif, l'argument title est entre crochets, donc éventuellement je pourrais le sauter, le titre ça sera saisie de la date de livraison, je ferme le guillemet, virgule, comme ma ligne devient un peu longue, je vais la fractionner en deux lignes différentes, ça sera la même ligne de code, mais saisie sur deux lignes de mon éditeur de texte, après la virgule, je fais un espace, un underscore, espace underscore, ça veut dire, je passe à la ligne dans l'éditeur de texte, mais ça reste la même ligne de code, je fais une tabulation parce que ça sera mieux présenté si la suite est un peu en retrait, je vais maintenant donner une valeur par défaut, valeur par défaut ça sera tout simplement la date du jour, la date du jour plus 14 jours, alors je vais appeler la fonction VBA date, si j'ai un doute, je reviens un petit peu en arrière, je peux appeler VBA point, c'est à dire la bibliothèque des fonctions VBA, c'est pas obligatoire, mais ça peut m'aider parce que j'ai une liste d'aide VBA point, à la lettre D, je trouve la fonction date, un espace plus 14, la fonction VBA date me renvoie la date d'aujourd'hui et ajoute 14 jours, je ferme la parenthèse de mon input box et je fais entrer, backspace, comme ça je reviens à l'aplomb du DIM et du D date échéance, et maintenant il me reste à modifier avec ce résultat, la date d'échéance de la tâche concernée, la tâche concernée ce sera tout simplement la tâche active, malheureusement on ne peut pas dire active task, la tâche sélectionnée par l'utilisateur, je suis obligé de dire active cell, je vais prendre la cellule active, comme dans Excel, point task, c'est à dire la tâche qui correspond à la cellule sélectionnée par l'utilisateur, point DE deadline, l'échéance égale D date échéance, alors D date échéance, je vais copier-coller, donc avec ctrl-clic je déplace, je fais entrer, donc je vérifie la ligne, conséquence quand on lancera la macro, l'input box demandera la saisie d'une date, par défaut il proposera la date du jour plus 14 jours, ensuite la cellule, la tâche qui correspond à la cellule active, verra sa deadline positionnée sur la date d'échéance, alors débogage compilé, apparemment ça lui plaît, j'enregistre et je reviens dans project, je me positionne par exemple sur la tâche A, et je vais dans l'onglet développeur, afficher la liste des macros, je sélectionne l'input box échéance et je l'exécute, date de livraison, il me propose la date d'aujourd'hui plus 14 jours, je vais la remplacer par exemple par le 10 octobre 2017, je valide par ok, je regarde ma tâche A, sur mon diagramme de Gantt, j'ai bien une flèche verte, qui s'est positionnée sur cette date d'échéance, qui pour l'instant est respectée, refaisons le test, je vais mettre l'échéance par exemple au vendredi 14 septembre, testons, je relance ma macro, affiché les macros, exécuté et je saisis le 14 septembre 2017, je valide par ok, c'était le jeudi, il y a un petit bug dans project, quand je passe ma souris dans l'échelle de temps sur la lettre V du vendredi, il me donne en réalité la date du jeudi, ce qui m'a bien sûr induit en erreur, l'échéance s'est positionnée sur le jeudi, bien sûr elle n'est pas respectée, et dans la colonne indicateur, le voyant rouge s'est allumé, pour me signaler qu'il y a une échéance non respectée, je fais un autre test, affiché les macros, j'exécute, et là, c'est malheureux mais je ne suis pas très habile, je vais saisir une nouvelle date, mais je me trompe, au lieu de saisir une date, je saisis du texte, ou une date non valide, je valide par ok, et là, bien sûr, ça provoque une erreur, je tente de charger une variable de type date avec du texte, donc ce n'est pas possible, ça provoque une erreur d'exécution, erreur numéro 13, nous apprendrons plus tard à gérer de façon automatique cette erreur, ici, ma seule solution c'est de dire fin pour arrêter l'exécution.

Programme détaillé de la formation

Nos dernières formations Microsoft Project