Mettre en Place une Procédure VBA pour les Tâches Automatiques

Vérifier le Mode Tâche
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

Apprendre à créer une procédure VBA pour vérifier et basculer des tâches en mode automatique.
Comprendre l'interaction utilisateur via des msgbox.
Gérer des lignes vides qui peuvent perturber l'exécution de la procédure.

Résumé de la procédure pour s'assurer que toutes les tâches sont en mode automatique en VBA.

Cette leçon vous guide à travers la création d'une procédure VBA permettant de vérifier si les tâches d'un projet sont en mode automatique, et de les basculer si nécessaire. La procédure implique la définition de variables, une boucle for each, une msgbox pour l'interaction utilisateur, et la manipulation des propriétés des tâches. Vous apprendrez également à gérer des lignes vides qui pourraient perturber le script, en les supprimant avant l'exécution. Les explications détaillées et les étapes de débogage sont également abordées, vous permettant de comprendre et de résoudre les erreurs courantes.

Voir plus
Questions réponses
Pourquoi est-il important de vérifier si une tâche est en mode manuel ou automatique?
Cela permet de s'assurer que toutes les tâches sont gérées de manière cohérente et conforme aux besoins du projet.
Que fait la msgbox dans cette procédure?
La msgbox interagit avec l'utilisateur pour lui demander s'il souhaite basculer une tâche de mode manuel à automatique.
Pourquoi est-il nécessaire de gérer les lignes vides?
Les lignes vides peuvent perturber la boucle for each et entraîner des erreurs d'exécution.
Nous allons maintenant mettre au point une procédure destinée à vérifier si les tâches sont bien toutes en mode automatique. Je vais créer un nouveau sub que j'appellerai mode manuel. Je crée deux variables dim t as task, donc on aura toujours une boucle for each, et une deuxième variable choix. Je poserai une question à l'utilisateur, il faudra qu'il fasse un choix, est-ce qu'il bascule en mode automatique ou non. Il y aura quand même un choix de l'utilisateur à prévoir. Le choix est un integer, un nombre entier. Ensuite j'attaque une boucle for each, for each t in ActiveProject.tasks, la collection de toutes les tâches. If t, donc je prends la tâche, manuel, si t manuel égale true, donc si c'est vrai, si elle est en manuel, zen, une msgbox. Voulez-vous passer la tâche, alors attention c'est du texte entre guillemets. Voulez-vous passer la tâche, un espace, je ferme le guillemets parce que là il faut que je donne le numéro de la tâche, sinon on ne saura pas où on en est. Et, donc et commercial, je concatène avec t.name, à nouveau une concaténation, je rouvre une chaîne de texte, un espace en mode automatique. Point d'interrogation, je ferme la chaîne de texte, virgule, je voudrais que ma msgbox comporte une icône, vb question, vbq et la liste me positionne sur vb question. Plus, je voudrais deux boutons, vb yes no, un bouton oui, un bouton non. Et, j'ai oublié quelque chose, cette msgbox c'est gentil, mais comme j'ai demandé deux boutons au lieu d'un, la msgbox devient une fonction qui va me renvoyer une réponse, soit yes, soit no. Alors, cette réponse, il faut que je la récupère dans une variable, donc devant la msgbox, je dois dire choix égal, ensuite la msgbox, comme la msgbox devient une fonction, il faut ouvrir une parenthèse, voulez-vous passer la tâche, etc. et je ferme la parenthèse. Il me reste maintenant à dire, si l'utilisateur a choisi vb yes, if choix égal vb yes, vb yes, vb no sont des valeurs numériques, mais comme on ne les retiendra jamais, elles sont mémorisées dans des constantes. If choix égal vb yes, then t.manual égal false, elle repassera en mode automatique. Je pense qu'il faut que je ferme le premier if, end if. Voilà, ça devrait nous suffire, mais il faut bien sûr boucler le for, j'aurais dû le faire plus tôt, ça m'apparaît tout à fait correct. Un petit détail, if t.manual égal true, en réalité, le égal true n'est pas nécessaire, il suffit de dire, comme t.manual est booléen, ne peut prendre que les valeurs true ou false, on a tout à fait le droit de dire if t.manual then, sous-entendu true. J'ai le droit de ne pas saisir le égal true. Débuggage compilé, je teste. Voulez-vous passer la tâche b en mode automatique ? Je dis oui. Ah, alors débuggage. Ouais, je pense que le problème vient du fait que nous avions une ligne vide, ça, ça a perturbé mon for each. Ça veut dire que la suppression des lignes vides est nécessaire avant d'exécuter ma tâche. C'est ce qu'on verra dans la prochaine étape pour enchaîner nos différents subs.

Programme détaillé de la formation

Nos dernières formations Microsoft Project