Macro ms project: suivre l'avancement des taches par ressource
1 réponse
Cosmocat
Bonjour =E0 tous,
Voici une macro bien pratique pour suivre l'avancement des taches par
ressource.
La proc prend en entr=E9e la plage de date =E0 exporter. le fichier
g=E9n=E9r=E9 fait apparaitre:par ressource
-Toutes les taches non termin=E9es meme si elles sont en amont de la
plage
-Toutes les taches qui sont en cours dans la plage
L'export est fait en format texte avec la virgule comme s=E9parateur
pour l'utiliser dans excel: fichier/ouvrir: type de fichier txt, type
de donn=E9es d=E9limit=E9, s=E9parateur virgule.
Il propose le nom de la tache, la date de d=E9but, la date de fin et
l'avancement de la tache en pourcentage....Tres pratique pour les
r=E9unions de suivi....
En cadeau, il y a une fonction qui permet de convertir un num=E9ro de
semaine en date du lundi corresponant
Private Function FirstDateOfWeek(ByRef iYear As Integer, ByRef iWeek As
Integer, Optional ByRef FirstDayOfWeek As VbDayOfWeek =3D
VbDayOfWeek.vbSunday) As Date
'Cette fonction permet de convertir un num=E9ro de semaine en jour de la
semaine
FirstDateOfWeek =3D DateSerial(iYear, 1, 1)
If Weekday(FirstDateOfWeek, FirstDayOfWeek) <> 1 Then
FirstDateOfWeek =3D FirstDateOfWeek + (8 - Weekday(FirstDateOfWeek,
FirstDayOfWeek))
End If
If (iWeek > 1) Then
FirstDateOfWeek =3D FirstDateOfWeek + (7 * (iWeek - 1))
End If
End Function
Sub export_suivi_excel(d1 As Date, d2 As Date)
Open "c:\temp\exportproject.txt" For Output As #1
Dim aux1 As ligne_info
Dim indice_table As Integer
Dim indice_tache As Integer
Dim r As Resource
Dim t As Task
Dim ddt As Date
Dim dft As Date
For Each r In ActiveProject.Resources
ReDim tab_taches(100) As ligne_info
'Initialisations
indice_tache =3D 1
Print #1, r.name
' Recherche des taches pour cette ressource
For Each t In ActiveProject.Tasks
' collecte de l'ensemble des taches
If Not t Is Nothing Then
If InStr(1, Trim(t.ResourceNames), Trim(r.name)) <> 0 Then
Debug.Print t.name
ddt =3D t.Start
dft =3D t.Finish
avancement =3D t.PercentComplete
ok =3D False
If avancement <> 100 And dft <=3D d2 Then ok =3D True
If ddt <=3D d1 And dft <=3D d2 And avancement <> 100 Then
ok =3D True
If ddt >=3D d1 And ddt <=3D d2 Then ok =3D True
If ok Then
tab_taches(indice_tache).nom =3D t.name
tab_taches(indice_tache).debut =3D t.Start
tab_taches(indice_tache).fin =3D t.Finish
tab_taches(indice_tache).avancement =3D
t=2EPercentComplete
indice_tache =3D indice_tache + 1
Debug.Print t.name
End If
End If
End If
Next t
' tri des taches par date
For j =3D 1 To indice_tache
For i =3D indice_tache - 1 To j Step -1
If tab_taches(i).debut < tab_taches(i - 1).debut Then
aux1 =3D tab_taches(i)
tab_taches(i) =3D tab_taches(i - 1)
tab_taches(i - 1) =3D aux1
End If
Debug.Print tab_taches(1).nom
Next i
Next j
' ecriture des taches dans le fichier
For i =3D 1 To indice_tache - 1
chaine =3D ","
chaine =3D chaine + tab_taches(i).nom + ","
chaine =3D chaine + Format(tab_taches(i).debut, "dd/mm/yy") + ","
chaine =3D chaine + Format(tab_taches(i).fin, "dd/mm/yy") + ","
chaine =3D chaine + tab_taches(i).avancement + "%,"
Print #1, chaine
Next i
Next r
Close 1
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jinroh
Bonjour
effectivement cela à l'air intéressant. Je vais le regarder de plus près et si tout est correct je l'adapterai aux normes standards d'échanges de données, soit : en XML.
Je posterai le résultat dès que je pourrai (j'ai peu de temps pour moi ces temps-ci).
Cordialement
"Cosmocat" wrote:
Bonjour à tous, Voici une macro bien pratique pour suivre l'avancement des taches par ressource. La proc prend en entrée la plage de date à exporter. le fichier généré fait apparaitre:par ressource -Toutes les taches non terminées meme si elles sont en amont de la plage -Toutes les taches qui sont en cours dans la plage L'export est fait en format texte avec la virgule comme séparateur pour l'utiliser dans excel: fichier/ouvrir: type de fichier txt, type de données délimité, séparateur virgule. Il propose le nom de la tache, la date de début, la date de fin et l'avancement de la tache en pourcentage....Tres pratique pour les réunions de suivi.... En cadeau, il y a une fonction qui permet de convertir un numéro de semaine en date du lundi corresponant
Private Function FirstDateOfWeek(ByRef iYear As Integer, ByRef iWeek As
Integer, Optional ByRef FirstDayOfWeek As VbDayOfWeek > VbDayOfWeek.vbSunday) As Date 'Cette fonction permet de convertir un numéro de semaine en jour de la semaine
FirstDateOfWeek = DateSerial(iYear, 1, 1) If Weekday(FirstDateOfWeek, FirstDayOfWeek) <> 1 Then FirstDateOfWeek = FirstDateOfWeek + (8 - Weekday(FirstDateOfWeek, FirstDayOfWeek)) End If If (iWeek > 1) Then FirstDateOfWeek = FirstDateOfWeek + (7 * (iWeek - 1)) End If End Function
Sub export_suivi_excel(d1 As Date, d2 As Date) Open "c:tempexportproject.txt" For Output As #1
Dim aux1 As ligne_info Dim indice_table As Integer Dim indice_tache As Integer Dim r As Resource Dim t As Task Dim ddt As Date Dim dft As Date For Each r In ActiveProject.Resources ReDim tab_taches(100) As ligne_info 'Initialisations indice_tache = 1 Print #1, r.name ' Recherche des taches pour cette ressource For Each t In ActiveProject.Tasks ' collecte de l'ensemble des taches If Not t Is Nothing Then If InStr(1, Trim(t.ResourceNames), Trim(r.name)) <> 0 Then Debug.Print t.name ddt = t.Start dft = t.Finish avancement = t.PercentComplete ok = False If avancement <> 100 And dft <= d2 Then ok = True If ddt <= d1 And dft <= d2 And avancement <> 100 Then ok = True If ddt >= d1 And ddt <= d2 Then ok = True
If ok Then tab_taches(indice_tache).nom = t.name tab_taches(indice_tache).debut = t.Start tab_taches(indice_tache).fin = t.Finish tab_taches(indice_tache).avancement > t.PercentComplete indice_tache = indice_tache + 1 Debug.Print t.name End If End If End If Next t ' tri des taches par date For j = 1 To indice_tache For i = indice_tache - 1 To j Step -1 If tab_taches(i).debut < tab_taches(i - 1).debut Then aux1 = tab_taches(i) tab_taches(i) = tab_taches(i - 1) tab_taches(i - 1) = aux1 End If Debug.Print tab_taches(1).nom Next i Next j ' ecriture des taches dans le fichier For i = 1 To indice_tache - 1 chaine = "," chaine = chaine + tab_taches(i).nom + "," chaine = chaine + Format(tab_taches(i).debut, "dd/mm/yy") + "," chaine = chaine + Format(tab_taches(i).fin, "dd/mm/yy") + "," chaine = chaine + tab_taches(i).avancement + "%," Print #1, chaine Next i Next r Close 1 End Sub
Bonjour
effectivement cela à l'air intéressant. Je vais le regarder de plus près et
si tout est correct je l'adapterai aux normes standards d'échanges de
données, soit : en XML.
Je posterai le résultat dès que je pourrai (j'ai peu de temps pour moi ces
temps-ci).
Cordialement
"Cosmocat" wrote:
Bonjour à tous,
Voici une macro bien pratique pour suivre l'avancement des taches par
ressource.
La proc prend en entrée la plage de date à exporter. le fichier
généré fait apparaitre:par ressource
-Toutes les taches non terminées meme si elles sont en amont de la
plage
-Toutes les taches qui sont en cours dans la plage
L'export est fait en format texte avec la virgule comme séparateur
pour l'utiliser dans excel: fichier/ouvrir: type de fichier txt, type
de données délimité, séparateur virgule.
Il propose le nom de la tache, la date de début, la date de fin et
l'avancement de la tache en pourcentage....Tres pratique pour les
réunions de suivi....
En cadeau, il y a une fonction qui permet de convertir un numéro de
semaine en date du lundi corresponant
Private Function FirstDateOfWeek(ByRef iYear As Integer, ByRef iWeek As
Integer, Optional ByRef FirstDayOfWeek As VbDayOfWeek > VbDayOfWeek.vbSunday) As Date
'Cette fonction permet de convertir un numéro de semaine en jour de la
semaine
FirstDateOfWeek = DateSerial(iYear, 1, 1)
If Weekday(FirstDateOfWeek, FirstDayOfWeek) <> 1 Then
FirstDateOfWeek = FirstDateOfWeek + (8 - Weekday(FirstDateOfWeek,
FirstDayOfWeek))
End If
If (iWeek > 1) Then
FirstDateOfWeek = FirstDateOfWeek + (7 * (iWeek - 1))
End If
End Function
Sub export_suivi_excel(d1 As Date, d2 As Date)
Open "c:tempexportproject.txt" For Output As #1
Dim aux1 As ligne_info
Dim indice_table As Integer
Dim indice_tache As Integer
Dim r As Resource
Dim t As Task
Dim ddt As Date
Dim dft As Date
For Each r In ActiveProject.Resources
ReDim tab_taches(100) As ligne_info
'Initialisations
indice_tache = 1
Print #1, r.name
' Recherche des taches pour cette ressource
For Each t In ActiveProject.Tasks
' collecte de l'ensemble des taches
If Not t Is Nothing Then
If InStr(1, Trim(t.ResourceNames), Trim(r.name)) <> 0 Then
Debug.Print t.name
ddt = t.Start
dft = t.Finish
avancement = t.PercentComplete
ok = False
If avancement <> 100 And dft <= d2 Then ok = True
If ddt <= d1 And dft <= d2 And avancement <> 100 Then
ok = True
If ddt >= d1 And ddt <= d2 Then ok = True
If ok Then
tab_taches(indice_tache).nom = t.name
tab_taches(indice_tache).debut = t.Start
tab_taches(indice_tache).fin = t.Finish
tab_taches(indice_tache).avancement > t.PercentComplete
indice_tache = indice_tache + 1
Debug.Print t.name
End If
End If
End If
Next t
' tri des taches par date
For j = 1 To indice_tache
For i = indice_tache - 1 To j Step -1
If tab_taches(i).debut < tab_taches(i - 1).debut Then
aux1 = tab_taches(i)
tab_taches(i) = tab_taches(i - 1)
tab_taches(i - 1) = aux1
End If
Debug.Print tab_taches(1).nom
Next i
Next j
' ecriture des taches dans le fichier
For i = 1 To indice_tache - 1
chaine = ","
chaine = chaine + tab_taches(i).nom + ","
chaine = chaine + Format(tab_taches(i).debut, "dd/mm/yy") + ","
chaine = chaine + Format(tab_taches(i).fin, "dd/mm/yy") + ","
chaine = chaine + tab_taches(i).avancement + "%,"
Print #1, chaine
Next i
Next r
Close 1
End Sub
effectivement cela à l'air intéressant. Je vais le regarder de plus près et si tout est correct je l'adapterai aux normes standards d'échanges de données, soit : en XML.
Je posterai le résultat dès que je pourrai (j'ai peu de temps pour moi ces temps-ci).
Cordialement
"Cosmocat" wrote:
Bonjour à tous, Voici une macro bien pratique pour suivre l'avancement des taches par ressource. La proc prend en entrée la plage de date à exporter. le fichier généré fait apparaitre:par ressource -Toutes les taches non terminées meme si elles sont en amont de la plage -Toutes les taches qui sont en cours dans la plage L'export est fait en format texte avec la virgule comme séparateur pour l'utiliser dans excel: fichier/ouvrir: type de fichier txt, type de données délimité, séparateur virgule. Il propose le nom de la tache, la date de début, la date de fin et l'avancement de la tache en pourcentage....Tres pratique pour les réunions de suivi.... En cadeau, il y a une fonction qui permet de convertir un numéro de semaine en date du lundi corresponant
Private Function FirstDateOfWeek(ByRef iYear As Integer, ByRef iWeek As
Integer, Optional ByRef FirstDayOfWeek As VbDayOfWeek > VbDayOfWeek.vbSunday) As Date 'Cette fonction permet de convertir un numéro de semaine en jour de la semaine
FirstDateOfWeek = DateSerial(iYear, 1, 1) If Weekday(FirstDateOfWeek, FirstDayOfWeek) <> 1 Then FirstDateOfWeek = FirstDateOfWeek + (8 - Weekday(FirstDateOfWeek, FirstDayOfWeek)) End If If (iWeek > 1) Then FirstDateOfWeek = FirstDateOfWeek + (7 * (iWeek - 1)) End If End Function
Sub export_suivi_excel(d1 As Date, d2 As Date) Open "c:tempexportproject.txt" For Output As #1
Dim aux1 As ligne_info Dim indice_table As Integer Dim indice_tache As Integer Dim r As Resource Dim t As Task Dim ddt As Date Dim dft As Date For Each r In ActiveProject.Resources ReDim tab_taches(100) As ligne_info 'Initialisations indice_tache = 1 Print #1, r.name ' Recherche des taches pour cette ressource For Each t In ActiveProject.Tasks ' collecte de l'ensemble des taches If Not t Is Nothing Then If InStr(1, Trim(t.ResourceNames), Trim(r.name)) <> 0 Then Debug.Print t.name ddt = t.Start dft = t.Finish avancement = t.PercentComplete ok = False If avancement <> 100 And dft <= d2 Then ok = True If ddt <= d1 And dft <= d2 And avancement <> 100 Then ok = True If ddt >= d1 And ddt <= d2 Then ok = True
If ok Then tab_taches(indice_tache).nom = t.name tab_taches(indice_tache).debut = t.Start tab_taches(indice_tache).fin = t.Finish tab_taches(indice_tache).avancement > t.PercentComplete indice_tache = indice_tache + 1 Debug.Print t.name End If End If End If Next t ' tri des taches par date For j = 1 To indice_tache For i = indice_tache - 1 To j Step -1 If tab_taches(i).debut < tab_taches(i - 1).debut Then aux1 = tab_taches(i) tab_taches(i) = tab_taches(i - 1) tab_taches(i - 1) = aux1 End If Debug.Print tab_taches(1).nom Next i Next j ' ecriture des taches dans le fichier For i = 1 To indice_tache - 1 chaine = "," chaine = chaine + tab_taches(i).nom + "," chaine = chaine + Format(tab_taches(i).debut, "dd/mm/yy") + "," chaine = chaine + Format(tab_taches(i).fin, "dd/mm/yy") + "," chaine = chaine + tab_taches(i).avancement + "%," Print #1, chaine Next i Next r Close 1 End Sub