Creer un gantt chart a partir d'excel

Soyez le premier à donner votre avis sur cette source.

Snippet vu 31 780 fois - Téléchargée 21 fois

Contenu du snippet

Pour creer un Gantt Chart a partir d'un tableau excel de la forme:

;Start Date; progress; Due Date
phase 1; 01/01/2004; 150; 360;
phase 2; 01/01/2005; 150; 360;
phase 3; 01/01/2006; 150; 360;

progress et due date sont en nombre de jours

en argument: les donnees sources (ex: Sheets("mySheet").Range("A1:D10"))

Source / Exemple :


Sub createGanttChartType(data As Range)
   
    Charts.Add
    ActiveChart.ChartType = xlBarStacked
    ActiveChart.SetSourceData Source:=data, PlotBy:=xlColumns
    ActiveChart.Location Where:=xlLocationAsObject, Name:="GanttChartData"
    ActiveChart.PlotArea.Select
    With Selection.Border
        .Weight = xlThin
        .LineStyle = xlNone
    End With
    Selection.Interior.ColorIndex = xlNone
    ActiveChart.SeriesCollection(1).Select
    With Selection.Border
        .Weight = xlThin
        .LineStyle = xlNone
    End With
    Selection.Shadow = False
    Selection.InvertIfNegative = False
    Selection.Interior.ColorIndex = xlNone
        ActiveChart.SeriesCollection(2).Select
    With Selection.Interior
        .ColorIndex = 32
    End With
    ActiveChart.SeriesCollection(3).Select
    With Selection.Interior
        .ColorIndex = 34
    End With
    ActiveChart.Axes(xlCategory).Select
    With Selection
        .CrossesAt = 1
        .TickLabelSpacing = 1
        .TickMarkSpacing = 1
        .AxisBetweenCategories = True
        .ReversePlotOrder = True
    End With
    Selection.TickLabels.AutoScaleFont = True
    With Selection.TickLabels.Font
        .Name = "Arial"
        .FontStyle = "Regular"
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .Background = xlAutomatic
    End With
    ActiveChart.Axes(xlValue).Select
    With Selection
        .MinimumScale = data.Cells(2, 2).value
        .MaximumScale = data.Cells(data.Rows.Count, 2) + data.Cells(data.Rows.Count, 3) + _
                                                         data.Cells(data.Rows.Count, 4)
        .MinorUnitIsAuto = True
        .MajorUnitIsAuto = True
        .Crosses = xlMaximum
        .ReversePlotOrder = False
        .ScaleType = xlLinear
        .DisplayUnit = xlNone
    End With
    Selection.TickLabels.AutoScaleFont = True
    With Selection.TickLabels.Font
        .Name = "Arial"
        .FontStyle = "Bold"
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .Background = xlAutomatic
    End With
    With Selection.TickLabels
        .ReadingOrder = xlContext
        .Orientation = 45
    End With
    ActiveChart.Legend.Select
    Selection.Position = xlBottom
    ActiveChart.Legend.LegendEntries(1).Select
    Selection.Delete
End Sub

A voir également

Ajouter un commentaire Commentaires
Bonsoir , Qu'est ce que je dois changer pour qu'il fonctionne avec plus de 3 phases ? Merci
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
540 > Marc
Bonjour, dans sa description, il est écrit
en argument: les donnees sources (ex: Sheets("mySheet").Range("A1:D10"))
, sans avoir regardé plus loin, je pense qu'avec une ligne de plus, il faut faire
Sheets("mySheet").Range("A1:E10")

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.