Utilisation de la boucle FOR EACH dans Visual Basic pour Project

La boucle For Each
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 :
- Comprendre le fonctionnement de la boucle FOR EACH.
- Apprendre à manipuler les tâches dans Microsoft Project par le biais de Visual Basic.

Découvrez comment utiliser la boucle FOR EACH dans Visual Basic pour parcourir les tâches d'un projet dans Microsoft Project.

Testons maintenant le cas particulier de la boucle FOR EACH. Jusqu'à présent, dans nos boucles précédentes, nous savions à l'avance combien de fois la boucle devait tourner. Dans ce nouvel exemple, nous ne connaissons pas le nombre de boucles à effectuer. Par contre, Visual Basic et Project, eux, le savent.

Mon objectif est de regarder toutes les tâches du projet et d'imprimer dans la fenêtre d'exécution une liste avec le nom de la tâche et son mode de planification, manuel ou automatique. Je ne sais pas combien il y a de tâches dans le projet, mais lui, Project, contient une collection TASKS au pluriel qui a une propriété COUNT. Donc Project sait combien il y a de tâches.

Alors, nous pourrions régler notre compteur à l'aide de la propriété COUNT de la collection, mais il existe une solution plus propre : utiliser une variable OBJECT. Cela nous permet d'utiliser une boucle spécifique appelée FOR EACH. Ainsi, pour chaque tâche du projet, nous imprimerons son nom et son mode de tâche. La démonstration inclut la vérification des tâches dans Project et la mise en place de la boucle en Visual Basic.

Voir plus
Questions réponses
Pourquoi utiliser la boucle FOR EACH dans Visual Basic pour Project ?
La boucle FOR EACH permet de parcourir chaque élément d'une collection sans connaître à l'avance le nombre total d'éléments, ce qui est idéal pour manipuler dynamiquement les tâches dans Microsoft Project.
Comment la variable OBJECT est-elle utilisée dans cet exemple ?
La variable OBJECT est utilisée pour représenter chaque tâche dans la collection TASKS. Elle permet d'accéder aux propriétés et méthodes de chaque tâche, facilitant ainsi la manipulation des données.
Quelle est l'importance de la propriété COUNT de la collection TASKS ?
La propriété COUNT de la collection TASKS indique le nombre total de tâches dans le projet. Elle est essentielle pour itérer correctement à travers toutes les tâches sans erreurs.
Testons maintenant le cas particulier de la boucle FOR EACH. Jusqu'à présent, dans nos boucles précédentes, nous savions à l'avance combien de fois la boucle devait tourner. Dans ce nouvel exemple, nous ne connaissons pas le nombre de boucles à effectuer. Par contre, Visual Basic et Project, eux, le savent. Mon objectif, il est de regarder toutes les tâches du projet et d'imprimer dans la fenêtre d'exécution une liste avec le nom de la tâche et son mode de planification, manuel ou automatique. Je ne sais pas combien il y a de tâches dans le projet, mais lui, Project, il contient une collection TASKS au pluriel qui a une propriété COUNT, donc Project sait combien il y a de tâches. Alors, on pourrait régler notre compteur i à l'aide de la propriété COUNT de la collection, c'est une solution. Mais il y a une autre solution plus propre, plus technique, qui serait d'utiliser une variable OBJECT. Et avec cette variable OBJECT, qui représenterait les tâches de notre projet, nous pouvons utiliser un type de boucle particulier qui s'appelle FOR EACH. On va tout simplement dire, pour chaque tâche du projet, nous imprimons son nom et son mode tâche. Alors pour ça, je vais rester dans le même projet, mais petite préparation préalable, je vérifie dans Project que j'ai bien un certain nombre de tâches, je prends celle de l'exemple précédent, je prends l'une d'entre elles, par exemple ici la deuxième, et pour bien vérifier, je passe au mode tâche en planifié manuellement. Je vous rappelle que dès qu'une tâche est en mode manuel dans votre projet, elle pollue en quelque sorte tous les calculs des tâches qui lui succèdent et vos dates pour les tâches suivantes ne sont pas fiables. Donc méfiez-vous du mode tâche manuel. Je vais retourner dans l'éditeur visuel basique, je suis dans le même module, et je vais créer un nouveau sub, je vais l'appeler imprime nom tâche. Toujours pas d'accent sur le A de tâche. Quelques lignes vides. Je vais commencer par créer une variable. Cette variable est un petit peu particulière, elle va s'appeler t, tout simplement. On peut lui donner le nom qu'on veut, moi je l'appelle t pour tâche. Dim t, un espace, as. Et là cette variable, elle ne va pas représenter une chaîne de caractère, ce n'est pas une string, ce n'est pas un nombre, ce n'est pas un integer ou un long, c'est tout simplement une tâche, c'est un objet. Elle est capable de représenter la totalité d'une tâche, y compris l'ensemble de ses propriétés et méthodes. Donc on pourra demander sur la variable t, t.name par exemple. Me donner le nom de la tâche. On va la typer, on pourrait la typer object, vous voyez qu'il y a un type object qui existe, ça sera un peu plus compliqué à utiliser. On va plutôt directement la typer task, tout de suite. On lui dit non seulement que c'est un objet, mais un objet capable de représenter une tâche. Il ne me reste plus qu'à faire ma boucle for each, pour chaque t, pour chaque tâche, in active project, projet actif, point tasks au pluriel. Prendre la collection de toutes les tâches dans le projet actif. Pour chaque tâche à l'intérieur de la collection des tâches du projet. Et là, je fais mon impression. Debug print. Pardon, il y a une faute d'orthographe. Debug.print, voilà. T, donc attention, si je laissais t, j'aurais sans doute un message d'erreur, parce que t est un objet complexe, qui représente la totalité de la tâche. Il a besoin de savoir qu'est-ce qu'il doit imprimer. Qu'est-ce qu'il doit imprimer ? Je vais lui dire t.name, le nom, virgule, nous avons vu précédemment que quand il y a plusieurs éléments sur la même ligne, on les sépare par des virgules, plutôt que de faire une concaténation. Deuxième élément, t.manual. Je vous rappelle que manual sera à vrai si on est en mode tâche manuel, et à faux si on est en mode automatique. Que me reste-t-il ? Je vais tout simplement boucler mon fort par un next. Je pense que nous avons tout ce qu'il nous faut. Je vais dans débogage, compiler, j'enregistre et j'exécute. Vérifions dans la fenêtre d'exécution, j'ai bien la liste de mes tâches, la première en planif automatique, faux, la deuxième en planif manuel, etc.

Programme détaillé de la formation

Nos dernières formations Microsoft Project