![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Project Forum d'entraide sur Microsoft Project (planification et gestion de projet) |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Invité de passage
![]() Date d'inscription: février 2008
Messages: 1
|
Débutant, je ne sais pas si dans le bon forum.
Je souhaite générer un rapport word à partir des infos contenu dans MS Project. Tableau de charge ressources Tableau d'avancement /Tache Est-ce une macro project ou word? Quelqu'un aurai-t-il une aide pour formaliser le macro ? ou une source d'exemple que j'aurai à réadapter pour mes besoins? si quqlqu'un peut m'aider merci par avance mozart95 |
|
|
|
|
|
#2 (permalink) |
![]() Date d'inscription: février 2006
Localisation: Morlanwelz (Carnières)
Âge: 44
Messages: 10 067
|
Peu importe.
On peut utiliser les données Project au départ de Word, ou faire un transfert de Project vers Word. C'est juste une question de goût.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Ne posez pas de question par MP, c'est inutile. Les rubriques Office recrutent. Ma page d'accueil Consultez nos FAQ !! Word ; Access ; Outlook ; Excel ; PowerPoint ; SharePoint Si vous pensez que certains sujets manquent dans la FAQ, aidez nous ! Des images |
|
|
|
|
|
#3 (permalink) |
|
Invité de passage
![]() |
Voici une procédure VBA écrite dans MS Project 2003, qui ouvre Word et y dépose des stats dans un tableau word
Cordialement, Code :
Sub BuildWordReference() Dim Ref As String Dim R As Object On Error Resume Next 'No need to carry on if the Word Object Library is already there: '--------------------------------------------------- For Each R In ThisProject.VBProject.References If R.GUID = "{00020905-0000-0000-C000-000000000046}" Then Exit Sub End If Next ThisProject.VBProject.References.AddFromGuid _ GUID:="{00020905-0000-0000-C000-000000000046}", Major:=0, Minor:=0 On Error GoTo 0 End Sub Sub AppelleWord() Dim wrdApp As Word.Application Dim wrdDoc As Word.document Dim FichePilotage As String, Clic As Integer, Service As Variant, Chemin As String Dim Deb As Date Dim Fin As Date FichePilotage = ActiveProject.BuiltinDocumentProperties("Category") If FichePilotage = "" Then MsgBox "Vous devez indiquer le nom de la Fiche de pilotage : " & Chr(13) & "document Word sans l'extension "".doc""" & Chr(13) & "dans la zone ""Catégorie"" de Fichier / Propriétés", vbCritical, "Arrêt de la procédure" Exit Sub End If If ActiveProject.ProjectSummaryTask.BaselineWork = 0 Then MsgBox "Le projet " & ActiveProject.Name & " n'a pas été planifié : " & Chr(13) & "Outils / Suivi / Enregistrer la planification initiale", vbCritical, "Export des données vers Excel interrompu" Exit Sub End If Set wrdApp = CreateObject("Word.Application") '=/= New Word.Application (Late Binding) On Error Resume Next With wrdApp Chemin = CreateObject("wscript.shell").SpecialFolders("mydocuments") & "\Pilotage\" 'Retrouve dynamiquement le répertoire "Mes documents" On Error Resume Next '========================================= 'Late Binding = Référence Tardive (Pas de référence sur Word dans Outils / Références Set wrdDoc = wrdApp.Documents.Open(FileName:=Chemin & FichePilotage & ".doc") If Err.Number = 5174 Then MsgBox "Vous devez préciser le nom correct de la Fiche de pilotage : " & Chr(13) & "document Word sans l'extension "".doc""" & Chr(13) & "dans la zone ""catégorie"" de Fichier / Propriétés", vbCritical, "Arrêt de la procédure : Fiche de pilotage non trouvée" Exit Sub End If wrdDoc.Activate 'wrdDoc.GoTo what:=wdGoToBookmark, Name:="MonTablo" 'Va sur le signet. Pas de () sinon exige '= valeur' .Visible = False 'Nom du projet : wrdDoc.Tables(2).Cell(Row:=2, Column:=4).Range.Text = Left(ActiveProject.Name, Len(ActiveProject.Name) - 7) 'Nom du projet sans l'extension ".publié" 'Nom du CdP : wrdDoc.Tables(2).Cell(Row:=1, Column:=4).Range.Text = ActiveProject.ProjectSummaryTask.EnterpriseProjectOutlineCode3 'Nom du CdP 'Vérifie date de dernier export : Dim DateMaJ As Date, LundiPrec As Date, VendSuivant As Date, Cloc As Integer If ActiveProject.ProjectSummaryTask.EnterpriseProjectDate1 = "NC" Or ActiveProject.ProjectSummaryTask.EnterpriseProjectDate1 = "NA" Then ActiveProject.ProjectSummaryTask.EnterpriseProjectDate1 = Date End If DateMaJ = ActiveProject.ProjectSummaryTask.EnterpriseProjectDate1 LundiPrec = Date - (Weekday(Date, 2) - 1) VendSuivant = LundiPrec + 5 'Debug.Print DateMaJ, LundiPrec, VendSuivant If DateMaJ > LundiPrec And DateMaJ < VendSuivant Then Cloc = MsgBox("La mise à jour de la Fiche de Pilotage du projet a déja été effectuée le : " & Format(DateMaJ, "dd/mm/yyyy") & Chr(13) & "Voulez vous la remplacer ?", vbYesNo + vbDefaultButton2, "Mise à jour hebdomadaire de la Fiche de pilotage du planning " & ActiveProject.Name) If Cloc = vbNo Then 'vbNo = 7, vbYes = 8 wrdDoc.Close SaveChanges:=False 'Ferme le document sans sauvegarde ! wrdApp.Quit Set wrdApp = Nothing Set wrdDoc = Nothing Exit Sub End If End If ActiveProject.ProjectSummaryTask.EnterpriseProjectDate1 = Date MsgBox "Le travail d'export va commencer" & Chr(13) & "Vous patienterez 30 secondes" 'Si pas de période définie : If Left(wrdDoc.Tables(1).Cell(Row:=1, Column:=4).Range.Text, Len(wrdDoc.Tables(1).Cell(Row:=1, Column:=4).Range.Text) - 2) = "" Then 'Pas de date de période Deb = Date - (Weekday(Date, 2) + 6) '-1 Fin = Deb + 4 Else 'Incrémentation systématique des dates de période: Deb = Left(wrdDoc.Tables(1).Cell(Row:=1, Column:=4).Range.Text, Len(wrdDoc.Tables(1).Cell(Row:=1, Column:=4).Range.Text) - 2) Deb = Deb + 3 Fin = Deb + 4 End If Clic = MsgBox("Confirmez-vous les dates de début et de fin de la période : " & Chr(13) & _ " - Début : " & Format(Deb, "dd/mm/yyyy") & Chr(13) & _ " - Fin : " & Format(Fin, "dd/mm/yyyy") & Chr(13) & "sinon redéfinissez les dates de la période précédante dans la Fiche de Pilotage", vbOKCancel, "Définition de la semaine du rapport") If Clic = vbCancel Then wrdDoc.Close SaveChanges:=False 'Ferme le document sans sauvegarde ! wrdApp.Quit Set wrdApp = Nothing Set wrdDoc = Nothing Exit Sub End If wrdDoc.Tables(1).Cell(Row:=1, Column:=2).Range.Text = Deb wrdDoc.Tables(1).Cell(Row:=1, Column:=4).Range.Text = Fin 'Date de mise à jour : "Charges arrêtées le :" wrdDoc.Tables(3).Cell(Row:=1, Column:=2).Range.Text = Format(Date, "dd/mm/yyyy") 'Si la cellule "Service" est vide... If Left(wrdDoc.Tables(2).Cell(Row:=1, Column:=2).Range.Text, Len(wrdDoc.Tables(2).Cell(Row:=1, Column:=2).Range.Text) - 1) = Chr(13) Then Service = InputBox("Saisissez le code Service : " & Chr(13) & "Entité / Direction / Pôle / Domaine", "Définition de la fiche de Pilotage du projet " & ActiveProject.Name) If Service = vbCancel Then Exit Sub wrdDoc.Tables(2).Cell(Row:=1, Column:=2).Range.Text = Service End If Call CelluleTablo Call JalonsPérimètre End With wrdDoc.Close SaveChanges:=True 'Ferme le document avec sauvegarde ! wrdApp.Quit Set wrdApp = Nothing Set wrdDoc = Nothing Call RemoveWordReference MsgBox "Export des données Project vers " & FichePilotage & Chr(13) & "Terminé", , "Fiche de pilotage de " & ActiveProject.Name End Sub Dernière modification par Heureux-oli ; 17/02/2008 à 13h04 |
|
|
|
![]() |
![]() |
||
Macro VBA depuis project vers word
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|