Bonjour à tous !
Alors voici mon problème:
Je travaille sur MSproject et je souhaite exporter mes données vers Excel.
Voici le code utilisé:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Sub ExportversExcel()
Dim xlSheet As Excel.Worksheet
Dim Proj As Project
Dim t As Task
Dim asgn As Assignment
Dim columncount, columns, Tcount As Integer
Set xlApp = New Excel.Application
xlApp.Visible = True
AppActivate "Microsoft Excel"
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.worksheets.Add
xlSheet.name = ActiveProject.name
'besoin du nombres de colonnes dans Excel (égal à la plus grande valeur du code hiérarchique
columncount = 0
For Each t In ActiveProject.Tasks
If Not t Is Nothing Then
If t.OutlineLevel > columncount Then
columncount = t.OutlineLevel
End If
End If
Next t
'Défini la zone de cellule pour écrire la première cellule
Set xlRow = xlApp.ActiveCell
xlRow = "Filename: " & ActiveProject.name
dwn 1
xlRow = "OutlineLevel"
dwn 1
'Création des labels de colonnes
For columns = 1 To (columncount + 1)
Set xlCol = xlRow.Offset(0, columns - 1)
xlCol = columns - 1
Next columns
rgt 2 'utilise la routine rgr définie plus bas
xlCol = "Resource Name"
rgt 1
xlCol = "work"
rgt 1
xlCol = "actual work"
Tcount = 0
For Each t In ActiveProject.Tasks
If Not t Is Nothing Then
dwn 1
Set xlCol = xlRow.Offset(0, t.OutlineLevel)
xlCol = t.name
If t.Summary Then
xlCol.Font.Bold = True
End If
For Each asgn In t.Assignments
dwn 1
Set xl.Col = xlRow.Offset(0, columns)
xlCol = asgn.ResourceName
rgt 1
xlCol = (asgn.Work / 480) & "Days"
rgt 1
xlCol = (asgn.ActualWork / 480) & "Days"
Next asgn
Tcount = Tcount + 1
End If
Next t
AppActivate "Microsoft Project"
MsgBox ("Macro Complete with " & Tcounrt & " Tasks Written")
End Sub
Sub dwn(I As Integer)
Set xlRow = xlRow.Offset(I, 0)
End Sub
Sub rgt(I As Integer)
Set xlCol = xlCol.Offset(0, I)
End Sub |
Cependant, le déboggueur m'annonce une erreur ici:
Set xlRow = xlRow.Offset(I, 0)
Pourriez vous m'éclairer s'il vous plait ?
Merci à tous !!
Partager