Diagramme de Gantt automatique ss VBA

Bonjour,

Ayant essayé sans réussite avec une MFC à faire un diagramme de Gantt sous excel automatisé, j'essaye de le faire sous vba avec une boucle For avec deux variables.

Mon besoin, j'essaye de construire un diagramme de Gantt avec un remplissage de la couleur de fond des cellules en automatiques.

Je dispose d'un intitulé d'action en colonne A, d'une date de début en colonne B et d'une date de fin en colonne C.

Sur la première ligne de mon classeur à partir de la colonne D j'ai reporté jour par jour la plage temporelle dont j'ai besoin pour faire mon Gantt du 01/09/2019 au 09/09/2019.

Si je prend un exemple : l' "Action 1" commençant le 03/09/2019 et se finissant le 06/09/2019, je souhaiterai que les cellules de la ligne de l' "Action 1" se colore en une couleur qqconque pour les dates allant du 03/09/2019 au 06/09/2019, une fois la ligne de l' "Action 1" traitée je souhaiterai que la macro procède de même pour la ligne de l' "Action 2" et ainsi de suite....

J'ai essayé ceci comme code mais ça ne marche pas. Il fonctionne pour une seule variable si je travaille sur une seule ligne mais ça ne marche pas en faisant intervenir la seconde variable (g) comme numéro de ligne.

Sub test()

Dim i As Integer
Dim g As Integer

    For g = 2 To 3                   'boucle sur les lignes 2 à 3

        For i = 4 To 12             'boucle sur les colonnes D à L
            If Cells(g, i).Value < Cells(g, 2).Value And Cells(g, i).Value > Cells(g, 3).Value Then              'si la date de début est supérieure à la valeur de la cellule cible et que la date de fin est inférieure à la valeur de cette même cellule cible
            Cells(g, i).Select
               With Selection.Interior               'alors on remplis la cellule cible avec une couleur
                    .ColorIndex = 35
                    .Pattern = xlSolid
               End With
            End If
        Next i           'on passe à une autre colonne (autre date) de la même ligne (sous entendu la même "Action")

    Next g              'une fois toutes les colonnes (jusqu'à la colonne L) de la même ligne (même "Action") traitées, on passe à la colonne suivante et on refait de même

 End Sub

Dans l'attente d'une solution je vous remercie par avance.

Charly,

265test-gantt.xlsm (21.48 Ko)

Salut,

Si j'ai bien compris, les dates représentant la période de ton diagramme sont indiquées en ligne 1.

Donc dans ta comparaison, il faut que tu remplaces g par 1 (quand tu fais référence au date de la ligne 1).

If Cells(1, i).Value >= Cells(g, 2).Value And Cells(1, i).Value <= Cells(g, 3).Value Then
Jers19 a écrit :

Salut,

Si j'ai bien compris, les dates représentant la période de ton diagramme sont indiquées en ligne 1.

Donc dans ta comparaison, il faut que tu remplaces g par 1 (quand tu fais référence au date de la ligne 1).

If Cells(1, i).Value >= Cells(g, 2).Value And Cells(1, i).Value <= Cells(g, 3).Value Then

Bonjour,

Merci pour votre aide.

En réalité, j'avais fais une faute grossière en plus et vous m'avez mis sur la bonne piste, j'avais écris :

If Cells(g, i).Value <= Cells(g, 2).Value And Cells(g, i).Value >= Cells(g, 3).Value Then

au lieu de ,

If Cells(g, i).Value >= Cells(g, 2).Value And Cells(g, i).Value <= Cells(g, 3).Value Then

En effet les dates représentant la période de mon diagramme sont indiquées en ligne 1, par contre je les avais recopiées sur les lignes des "Actions" car je ne savais pas comment tourner mon code pour faire un remplissage de la cellule sans avoir de valeur à l’intérieur. Mais dans l'idéal vous avez raison seul la ligne 1 doit faire apparaître les dates représentant la période de mon diagramme et votre correction fonctionne parfaitement.

Encore merci.

Charly

Rechercher des sujets similaires à "diagramme gantt automatique vba"