IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Diagramme de Gantt via VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 2
    Par défaut Diagramme de Gantt via VBA
    Bonjour,

    Je suis nouveau sur Excel et je cherche à créer un diagramme de Gantt. Or, dans ce type de diagramme chaque tâche correspond à une ligne.
    De mon côté j'ai plusieurs groupe de tâches et j'aimerais que chaque groupe de tâche n'apparaisse que sur une seule ligne. Imaginons que j'ai un groupe avec 5 tâches, j'aimerais que ces 5 tâches apparaissent sur la même ligne (y'a pas d'overlap au niveau des tâches donc pas de soucis à ce niveau là).

    Je vous donne une tentative de code VBA de ma part (pour 1 groupe de tâche) mais qui ne donne pas le résultat escompté.
    Dans ce code :
    La cellule i,3 (avec i allant de 12 à 18) correspond à la plage C12:C18 dans laquelle il y a la catégorie de la tâche ("risque faible", "risque élevé"...).
    La cellule 7,j (j allant de 9 à 64) correspond à la plage I7:BL7 sur laquelle il y a la date du 24 novembre 2021 au 18 janvier 2022.
    La cellule k, 6 (k allant de 12 à 18) correspond à la plage F12:F18 dans laquelle il y a la date du début de la tâche.
    La cellule k, 7 correspond à la plage G12:G18 dans laquelle il y a la durée de la tâche.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub Gantt()
     
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
     
    j = 9
    Do Until j = 64
        i = 12
        Do Until i = 18
        k = 12
            Do Until k = 18
    If InStr(Cells(i, 3).Value, "Risque faible") And Cells(7, j).Value >= Cells(k, 6).Value And Cells(7, j).Value <= Cells(k, 6).Value + Cells(k, 7).Value - 1 Then Cells(12, j).Interior.ColorIndex = 10
     
            k = k + 1
            Loop
        i = i + 1
        Loop
    j = j + 1
    Loop
    End Sub

    J'ai essayé ce code en ajoutant des If pour chaque catégories ("risque élevé", "en bonne voie", etc). Or quand je lance ce code, les cellules I12, N12:AL12 et AZ12:BK12 se colorent. Et elles se colorent toutes de la même couleur (lorsque j'ajoute des If, ces mêmes cellules se colorent de la couleur de la dernière condition).
    Or ça n'est pas le résultat escompté puisque sur la plage i que j'ai donné, seule 1 tâche est en "risque faible", commençant le 29 novembre et s'achevant 3 jours plus tard. Je devrais donc n'avoir que 3 cases qui se colorent.

    En espérant avoir été clair, je peux fournir plus d'informations/explications si besoin.

    Merci d'avance pour vos réponses !

    Gudule2

  2. #2
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 022
    Par défaut
    Bonjour.
    J'avoue ne pas comprendre votre énoncé ni où est votre problème.
    Je ne peux que vous conseiller de suivre votre traitement pas à pas (touche F8 dans le code) pour mieux comprendre où cela pèche.

    Un code plus simple à lire :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub Gantt()
     
    Dim i As Integer, j As Integer, k As Integer
     
    For j = 9 To 64
        For i = 12 To 18
            For k = 12 To 18
                If InStr(1, Cells(i, 3).Value, "Risque faible") > 0 _
                And Cells(7, j).Value >= Cells(k, 6).Value _
                And Cells(7, j).Value <= Cells(k, 6).Value + Cells(k, 7).Value - 1 Then
                    Cells(12, j).Interior.ColorIndex = 10
                End If
            Next k
        Next i
    Next j
    End Sub
    Sur Internet on trouve une méthode pour faire une présentation graphique type modèle de Gantt sans programmation : https://www.excel-exercice.com/diagramme-de-gantt/

    Bonne continuation.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 2
    Par défaut
    Bonjour,

    Merci pour votre réponse.
    Pour être plus clair, j ai déjà un diagramme de Gantt classique. Or ma n+2 m'a demandé de réaliser ce même diagramme sauf qu'au lieu d'avoir une ligne par tâche elle me demande de faire une ligne par groupe de tâche (j'ai par exemple Les tâches 1 à 7 qui correspondent au même projet, 8 à 10 à un autre projet et j'aimerais que les tâches 1 à 7 soient représentées sur une seule et même ligne). Typiquement, que l'on voit sur la même ligne que la tâche 1 doit être réalisée du 4 au 7 décembre, la tâche 2 du 9 au 11 etc.

    J'avais essayé le code que vous me suggérez et ni le vôtre ni le mien n'a donné le résultat escompté.

    En espérant avoir été plus clair,
    Bonne journée à vous.

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 414
    Par défaut
    Bonjour,

    En attaché un exemple qui pourrait vous donner quelques idées.

    Cordialement.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2010] Faire un gantt via VBA
    Par augur6 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 09/10/2018, 15h27
  2. Réponses: 2
    Dernier message: 24/11/2005, 11h46
  3. Faire des modifs sur une sheet excel Read Only via VBA
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/11/2005, 18h02
  4. Manipulation du carnet d'adresse outlook via VBA Excel?
    Par Dragon Tours dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/11/2005, 12h16
  5. algo de diagramme de Gantt
    Par nanarr dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 25/05/2005, 09h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo