Générer un parcours en VBA

Bonjour,

J'essaie de construire un parcours de formation en fonction de tâches ou activités réalisées par un individu.

Mon fichier de base est disponible ici : https://www.cjoint.com/c/CGspOmIxpYm

Les tâches (A1, A2, A3, B1...) sont listées et peuvent être sélectionnées par un double-clic, la tâche concernée apparaît alors en couleur bleue.

A une tâche correspond un ou plusieurs modules de formation (Mod1, Mod2, Mod3....). La matrice permettant de définir le ou les modules en fonction de la tâche est définie dans un tableau.

Dans l'utilisation, l'individu :

1. sélectionne les tâches qui lui correspondent (double-clic)

2. clique sur "Générer le parcours" : les modules de la colonne "Votre parcours" sont grisés (ou affichent une "X") en fonction de la matrice.

3. La colonne C16 = "Total" affiche le nombre total de jours du parcours.

Après avoir trouvé comment changer la couleur d'une tâche par double-clic, je bloque sur la manière de gérer la matrice et d'afficher le parcours.

Pouvez-vous m'aider ?

Merci !

Bonjour

A tester

Merci Banzai64 pour cette contribution !

J'ai testé, cela fonctionne bien hormis le cas où je sélectionne des tâches ayant des modules communs, et dans ce cas, le calcul du nombre de jours est erroné (il cumule les jours).

Exemple : Tache A1 + Taches B2 sélectionnées --> modules 1, 3 et 6 intégrés au parcours = 2 + 3+ 1 = 6 jours et non 12 (il prends 2 x le nombre de jours) !

Sinon, c'est exactement ce que je voulais!

un MERCI bien mérité !

Bonjour

Si tu ne veux pas le cumul rajoutes les 2 lignes surlignées

            Set Cel = Columns("A").Find(what:=Cells(5, I), LookIn:=xlValues, lookat:=xlWhole)
            If Not Cel Is Nothing Then
              If Cel.Offset(0, 2).Interior.ColorIndex <> 15 Then
                Cel.Offset(0, 2).Interior.ColorIndex = 15
                Total = Total + Val(Cel.Offset(0, 2))
             End If
            Else

Merci beaucoup, ça fonctionne parfaitement !

Rechercher des sujets similaires à "generer parcours vba"