Creer un gantt chart a partir d'excel

Soyez le premier à donner votre avis sur cette source.

Snippet vu 31 417 fois - Téléchargée 20 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
Whismeril
Messages postés
13730
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 septembre 2019
302 > 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.