J'ai un fichier Project dans lequel je saisie l'ensemble des
informations concernant le projet.
J'ai un fichier Excel dans lequelle, jusqu'=E0 aujourd'hui je copie les
taches de mon Project, et les colle dans Excel pour r=E9aliser ensuite
automatique tout un tas d'indicateurs.
Pour =E9viter les erreurs de manipulation, je souhaiterai pouvoir
importer dans mon Excel, =E0 partir d'Excel, toutes les lignes de mon
project, et pour chaque ligne, n'importer que les colonnes qui sont
visibles.
Je n'ai pas de probl=E8me pour l'ouverture du projet =E0 la lecture taches
par taches.
Par contre, comment savoir quelle colonne est visible ou non ?, et
comment r=E9cup=E9rer pour chacune de ces colonnes, leur contenu par
ligne.
Je pourrais passer par la lecture des attributs de chaque tachen mais
cela rendrait mon syst=E8me hyper rigide.
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
Gérard Ducouret
Bonjour,
Vous pouvez effectivement échanger des données entre Project et Excel (dans les deux sens) via un mappage : corespondance colonne à colonne. Cette manip peut facilement s'automatiser par une procedure VBA d'autant plus facile à écrire q'elle peut s'écrire en mode auto-apprentissage. Pour créer un mamppage (à l'exportation, mais il fonctionnera aussi à l'importation): Dans Project: Fichier / Enregistrer sous... / Type de fichier : Classeur Microsoft Excel. Ensuite il n'y a plus qu'à se laisser conduire par l'assistant -- Gérard Ducouret
[Project MVP], Certifié Project 70632, Certifié ITIL www.pragmasoft.fr Un livre sur Project Server 2007 pour le Chef de projet: http://www.lmet.fr/advsearch.cgi?_EXPRESSION=ducouret&_DISTANCE&_PAGE=1
"Fdecourt" a écrit dans le message de news:
Bonjour,
J'ai un fichier Project dans lequel je saisie l'ensemble des informations concernant le projet. J'ai un fichier Excel dans lequelle, jusqu'à aujourd'hui je copie les taches de mon Project, et les colle dans Excel pour réaliser ensuite automatique tout un tas d'indicateurs.
Pour éviter les erreurs de manipulation, je souhaiterai pouvoir importer dans mon Excel, à partir d'Excel, toutes les lignes de mon project, et pour chaque ligne, n'importer que les colonnes qui sont visibles.
Je n'ai pas de problème pour l'ouverture du projet à la lecture taches par taches. Par contre, comment savoir quelle colonne est visible ou non ?, et comment récupérer pour chacune de ces colonnes, leur contenu par ligne.
Je pourrais passer par la lecture des attributs de chaque tachen mais cela rendrait mon système hyper rigide.
Merci pour votre aide
Cordialement,
F.
Bonjour,
Vous pouvez effectivement échanger des données entre Project et Excel (dans
les deux sens) via un mappage : corespondance colonne à colonne.
Cette manip peut facilement s'automatiser par une procedure VBA d'autant
plus facile à écrire q'elle peut s'écrire en mode auto-apprentissage.
Pour créer un mamppage (à l'exportation, mais il fonctionnera aussi à
l'importation):
Dans Project:
Fichier / Enregistrer sous... / Type de fichier : Classeur Microsoft Excel.
Ensuite il n'y a plus qu'à se laisser conduire par l'assistant
--
Gérard Ducouret
[Project MVP], Certifié Project 70632, Certifié ITIL
www.pragmasoft.fr
Un livre sur Project Server 2007 pour le Chef de projet:
http://www.lmet.fr/advsearch.cgi?_EXPRESSION=ducouret&_DISTANCE&_PAGE=1
"Fdecourt" <fdecourt@gmail.com> a écrit dans le message de news:
bbd7521e-6462-4eaf-9514-f074c8cbc801@g11g2000yqe.googlegroups.com...
Bonjour,
J'ai un fichier Project dans lequel je saisie l'ensemble des
informations concernant le projet.
J'ai un fichier Excel dans lequelle, jusqu'à aujourd'hui je copie les
taches de mon Project, et les colle dans Excel pour réaliser ensuite
automatique tout un tas d'indicateurs.
Pour éviter les erreurs de manipulation, je souhaiterai pouvoir
importer dans mon Excel, à partir d'Excel, toutes les lignes de mon
project, et pour chaque ligne, n'importer que les colonnes qui sont
visibles.
Je n'ai pas de problème pour l'ouverture du projet à la lecture taches
par taches.
Par contre, comment savoir quelle colonne est visible ou non ?, et
comment récupérer pour chacune de ces colonnes, leur contenu par
ligne.
Je pourrais passer par la lecture des attributs de chaque tachen mais
cela rendrait mon système hyper rigide.
Vous pouvez effectivement échanger des données entre Project et Excel (dans les deux sens) via un mappage : corespondance colonne à colonne. Cette manip peut facilement s'automatiser par une procedure VBA d'autant plus facile à écrire q'elle peut s'écrire en mode auto-apprentissage. Pour créer un mamppage (à l'exportation, mais il fonctionnera aussi à l'importation): Dans Project: Fichier / Enregistrer sous... / Type de fichier : Classeur Microsoft Excel. Ensuite il n'y a plus qu'à se laisser conduire par l'assistant -- Gérard Ducouret
[Project MVP], Certifié Project 70632, Certifié ITIL www.pragmasoft.fr Un livre sur Project Server 2007 pour le Chef de projet: http://www.lmet.fr/advsearch.cgi?_EXPRESSION=ducouret&_DISTANCE&_PAGE=1
"Fdecourt" a écrit dans le message de news:
Bonjour,
J'ai un fichier Project dans lequel je saisie l'ensemble des informations concernant le projet. J'ai un fichier Excel dans lequelle, jusqu'à aujourd'hui je copie les taches de mon Project, et les colle dans Excel pour réaliser ensuite automatique tout un tas d'indicateurs.
Pour éviter les erreurs de manipulation, je souhaiterai pouvoir importer dans mon Excel, à partir d'Excel, toutes les lignes de mon project, et pour chaque ligne, n'importer que les colonnes qui sont visibles.
Je n'ai pas de problème pour l'ouverture du projet à la lecture taches par taches. Par contre, comment savoir quelle colonne est visible ou non ?, et comment récupérer pour chacune de ces colonnes, leur contenu par ligne.
Je pourrais passer par la lecture des attributs de chaque tachen mais cela rendrait mon système hyper rigide.
Merci pour votre aide
Cordialement,
F.
Gérard Ducouret
<et comment récupérer pour chacune de ces colonnes, leur contenu par ligne.> Lors de l'importation des données Excel vers Project, il faudra demander une "fusion" avec comme clé de fusion le champ "N° Unique" que vous aurez bien soin d'inclure dans votre mappage lors de l'exportation.
<et comment récupérer pour chacune de ces colonnes, leur contenu par ligne.>
Lors de l'importation des données Excel vers Project, il faudra demander une
"fusion" avec comme clé de fusion le champ "N° Unique" que vous aurez bien
soin d'inclure dans votre mappage lors de l'exportation.
<et comment récupérer pour chacune de ces colonnes, leur contenu par ligne.> Lors de l'importation des données Excel vers Project, il faudra demander une "fusion" avec comme clé de fusion le champ "N° Unique" que vous aurez bien soin d'inclure dans votre mappage lors de l'exportation.
Fdecourt
Merci Gérard pour ta réponse.
Cependant je souhaite passer par une version 100% macro. Mon fichier Excel contient déjà pas mal de formules et de macros qui à partir d'une feuille dans laquelle je colle mon planning (ctrl + a puis ctrl + C sous project, que je colle au format texte à un endroit précis de ma feuille) me calcul et me créer un tas de graphiques et d'indicateurs, pour ensuite créer une présentation PowerPoint. Tout fonctionne très bien, mais je voudrais éviter d'avoir à faire la copie puis le collage dans Excel, en automatisant tout.
Malheureusement, sur mon poste, je n'ai pas accès à l'aide d'Office.
Donc je voudrais une boucle de ce genre (celle-ce ne fonctionne absolument pas, c'est pour illustrer ce que je souhaiterai) : For Each t In ActiveProject.Tasks For Each tf In t.Fields If tf.Visible = True Then ReDim Preserve tmp(0 To 100, 0 To y) tmp(x, y) = Tasks(t).Fields(tf).Value x = x + 1 End If Next y = y + 1 Next
Ou Fields, qui en l'occurence ne correspond pas à ce que je souhaite, est une colonne de projet.
puis je n'ai plus qu'à coller mon tableau tmp la ou je le souhaite dans Excel
Ceci me permet de n'avoir qu'un bouton dans Excel pour créer l'ensemble de mes indicateurs, ce qui m'arrangera car cela éviterait les erreurs de manipulations
Merci pour votre aide
Cordialement,
F.
Merci Gérard pour ta réponse.
Cependant je souhaite passer par une version 100% macro.
Mon fichier Excel contient déjà pas mal de formules et de macros qui à
partir d'une feuille dans laquelle je colle mon planning (ctrl + a
puis ctrl + C sous project, que je colle au format texte à un endroit
précis de ma feuille) me calcul et me créer un tas de graphiques et
d'indicateurs, pour ensuite créer une présentation PowerPoint.
Tout fonctionne très bien, mais je voudrais éviter d'avoir à faire la
copie puis le collage dans Excel, en automatisant tout.
Malheureusement, sur mon poste, je n'ai pas accès à l'aide d'Office.
Donc je voudrais une boucle de ce genre (celle-ce ne fonctionne
absolument pas, c'est pour illustrer ce que je souhaiterai) :
For Each t In ActiveProject.Tasks
For Each tf In t.Fields
If tf.Visible = True Then
ReDim Preserve tmp(0 To 100, 0 To y)
tmp(x, y) = Tasks(t).Fields(tf).Value
x = x + 1
End If
Next
y = y + 1
Next
Ou Fields, qui en l'occurence ne correspond pas à ce que je souhaite,
est une colonne de projet.
puis je n'ai plus qu'à coller mon tableau tmp la ou je le souhaite
dans Excel
Ceci me permet de n'avoir qu'un bouton dans Excel pour créer
l'ensemble de mes indicateurs, ce qui m'arrangera car cela éviterait
les erreurs de manipulations
Cependant je souhaite passer par une version 100% macro. Mon fichier Excel contient déjà pas mal de formules et de macros qui à partir d'une feuille dans laquelle je colle mon planning (ctrl + a puis ctrl + C sous project, que je colle au format texte à un endroit précis de ma feuille) me calcul et me créer un tas de graphiques et d'indicateurs, pour ensuite créer une présentation PowerPoint. Tout fonctionne très bien, mais je voudrais éviter d'avoir à faire la copie puis le collage dans Excel, en automatisant tout.
Malheureusement, sur mon poste, je n'ai pas accès à l'aide d'Office.
Donc je voudrais une boucle de ce genre (celle-ce ne fonctionne absolument pas, c'est pour illustrer ce que je souhaiterai) : For Each t In ActiveProject.Tasks For Each tf In t.Fields If tf.Visible = True Then ReDim Preserve tmp(0 To 100, 0 To y) tmp(x, y) = Tasks(t).Fields(tf).Value x = x + 1 End If Next y = y + 1 Next
Ou Fields, qui en l'occurence ne correspond pas à ce que je souhaite, est une colonne de projet.
puis je n'ai plus qu'à coller mon tableau tmp la ou je le souhaite dans Excel
Ceci me permet de n'avoir qu'un bouton dans Excel pour créer l'ensemble de mes indicateurs, ce qui m'arrangera car cela éviterait les erreurs de manipulations
Merci pour votre aide
Cordialement,
F.
Gérard Ducouret
Si vous savez quels champs vous voulez exporter vers Excel, pourquoi ne pas les référencer par leur nom plutot que par le fait qu'ils sont affichés ou pas ? -- Gérard Ducouret
[Project MVP], Certifié Project 70632, Certifié ITIL www.pragmasoft.fr Un livre sur Project Server 2007 pour le Chef de projet: http://www.lmet.fr/advsearch.cgi?_EXPRESSION=ducouret&_DISTANCE&_PAGE=1
"Fdecourt" a écrit dans le message de news:
Merci Gérard pour ta réponse.
Cependant je souhaite passer par une version 100% macro. Mon fichier Excel contient déjà pas mal de formules et de macros qui à partir d'une feuille dans laquelle je colle mon planning (ctrl + a puis ctrl + C sous project, que je colle au format texte à un endroit précis de ma feuille) me calcul et me créer un tas de graphiques et d'indicateurs, pour ensuite créer une présentation PowerPoint. Tout fonctionne très bien, mais je voudrais éviter d'avoir à faire la copie puis le collage dans Excel, en automatisant tout.
Malheureusement, sur mon poste, je n'ai pas accès à l'aide d'Office.
Donc je voudrais une boucle de ce genre (celle-ce ne fonctionne absolument pas, c'est pour illustrer ce que je souhaiterai) : For Each t In ActiveProject.Tasks For Each tf In t.Fields If tf.Visible = True Then ReDim Preserve tmp(0 To 100, 0 To y) tmp(x, y) = Tasks(t).Fields(tf).Value x = x + 1 End If Next y = y + 1 Next
Ou Fields, qui en l'occurence ne correspond pas à ce que je souhaite, est une colonne de projet.
puis je n'ai plus qu'à coller mon tableau tmp la ou je le souhaite dans Excel
Ceci me permet de n'avoir qu'un bouton dans Excel pour créer l'ensemble de mes indicateurs, ce qui m'arrangera car cela éviterait les erreurs de manipulations
Merci pour votre aide
Cordialement,
F.
Si vous savez quels champs vous voulez exporter vers Excel, pourquoi ne pas
les référencer par leur nom plutot que par le fait qu'ils sont affichés ou
pas ?
--
Gérard Ducouret
[Project MVP], Certifié Project 70632, Certifié ITIL
www.pragmasoft.fr
Un livre sur Project Server 2007 pour le Chef de projet:
http://www.lmet.fr/advsearch.cgi?_EXPRESSION=ducouret&_DISTANCE&_PAGE=1
"Fdecourt" <fdecourt@gmail.com> a écrit dans le message de news:
a9267630-34bd-40e8-a989-3524a90bfc76@19g2000yqu.googlegroups.com...
Merci Gérard pour ta réponse.
Cependant je souhaite passer par une version 100% macro.
Mon fichier Excel contient déjà pas mal de formules et de macros qui à
partir d'une feuille dans laquelle je colle mon planning (ctrl + a
puis ctrl + C sous project, que je colle au format texte à un endroit
précis de ma feuille) me calcul et me créer un tas de graphiques et
d'indicateurs, pour ensuite créer une présentation PowerPoint.
Tout fonctionne très bien, mais je voudrais éviter d'avoir à faire la
copie puis le collage dans Excel, en automatisant tout.
Malheureusement, sur mon poste, je n'ai pas accès à l'aide d'Office.
Donc je voudrais une boucle de ce genre (celle-ce ne fonctionne
absolument pas, c'est pour illustrer ce que je souhaiterai) :
For Each t In ActiveProject.Tasks
For Each tf In t.Fields
If tf.Visible = True Then
ReDim Preserve tmp(0 To 100, 0 To y)
tmp(x, y) = Tasks(t).Fields(tf).Value
x = x + 1
End If
Next
y = y + 1
Next
Ou Fields, qui en l'occurence ne correspond pas à ce que je souhaite,
est une colonne de projet.
puis je n'ai plus qu'à coller mon tableau tmp la ou je le souhaite
dans Excel
Ceci me permet de n'avoir qu'un bouton dans Excel pour créer
l'ensemble de mes indicateurs, ce qui m'arrangera car cela éviterait
les erreurs de manipulations
Si vous savez quels champs vous voulez exporter vers Excel, pourquoi ne pas les référencer par leur nom plutot que par le fait qu'ils sont affichés ou pas ? -- Gérard Ducouret
[Project MVP], Certifié Project 70632, Certifié ITIL www.pragmasoft.fr Un livre sur Project Server 2007 pour le Chef de projet: http://www.lmet.fr/advsearch.cgi?_EXPRESSION=ducouret&_DISTANCE&_PAGE=1
"Fdecourt" a écrit dans le message de news:
Merci Gérard pour ta réponse.
Cependant je souhaite passer par une version 100% macro. Mon fichier Excel contient déjà pas mal de formules et de macros qui à partir d'une feuille dans laquelle je colle mon planning (ctrl + a puis ctrl + C sous project, que je colle au format texte à un endroit précis de ma feuille) me calcul et me créer un tas de graphiques et d'indicateurs, pour ensuite créer une présentation PowerPoint. Tout fonctionne très bien, mais je voudrais éviter d'avoir à faire la copie puis le collage dans Excel, en automatisant tout.
Malheureusement, sur mon poste, je n'ai pas accès à l'aide d'Office.
Donc je voudrais une boucle de ce genre (celle-ce ne fonctionne absolument pas, c'est pour illustrer ce que je souhaiterai) : For Each t In ActiveProject.Tasks For Each tf In t.Fields If tf.Visible = True Then ReDim Preserve tmp(0 To 100, 0 To y) tmp(x, y) = Tasks(t).Fields(tf).Value x = x + 1 End If Next y = y + 1 Next
Ou Fields, qui en l'occurence ne correspond pas à ce que je souhaite, est une colonne de projet.
puis je n'ai plus qu'à coller mon tableau tmp la ou je le souhaite dans Excel
Ceci me permet de n'avoir qu'un bouton dans Excel pour créer l'ensemble de mes indicateurs, ce qui m'arrangera car cela éviterait les erreurs de manipulations
Merci pour votre aide
Cordialement,
F.
Fdecourt
Parceque je veux pouvoir autoriser les utilisateurs à ajouter des champs à leur convenance, sans avior à modifier le code à chaque fois .
J'ai une macro qui fonctionne avec la liste des champs, mais je voudrais me débarrasser de cette contrainte :
Dim prjApp As MSProject.Application Dim k As Integer, lgn As Integer, col As Integer Set prjApp = CreateObject("MsProject.Application") Dim monProjet() prjApp.FileOpen ThisWorkbook.Path & "DEP - Planning détaillé ECM - V1.2.mpp", ReadOnly:=True Dim tmp() tmp = Array(188743703, 188743765, 188743694, 188743709, 188743715, 188743716, 188743708, 188743721, 188743722, 188743699, 188743712, 188743752, 188743767, 188743768, 188743769, 188743729, 188743731, 188743753, 188743754, 188743755, 188743727) For Each t In prjApp.Projects(1).Tasks ReDim Preserve monProjet(0 To 20, 0 To k) For x = 0 To UBound(tmp) monProjet(x, k) = t.GetField(tmp(x)) Next k = k + 1 Next lgn = 2 col = 6 With Feuil1 .Range(.Cells(lgn, col), .Cells(.Cells(65536, col).End(xlUp).Row, .Cells(lgn, 256).End(xlToLeft).Column)).ClearContents .Range(.Cells(lgn, col), .Cells(UBound(monProjet, 2) + lgn, UBound(monProjet, 1) + col)).Value = Application.Transpose(monProjet) End With
Parceque je veux pouvoir autoriser les utilisateurs à ajouter des
champs à leur convenance, sans avior à modifier le code à chaque fois .
J'ai une macro qui fonctionne avec la liste des champs, mais je
voudrais me débarrasser de cette contrainte :
Dim prjApp As MSProject.Application
Dim k As Integer, lgn As Integer, col As Integer
Set prjApp = CreateObject("MsProject.Application")
Dim monProjet()
prjApp.FileOpen ThisWorkbook.Path & "DEP - Planning détaillé ECM
- V1.2.mpp", ReadOnly:=True
Dim tmp()
tmp = Array(188743703, 188743765, 188743694, 188743709, 188743715,
188743716, 188743708, 188743721, 188743722, 188743699, 188743712,
188743752, 188743767, 188743768, 188743769, 188743729, 188743731,
188743753, 188743754, 188743755, 188743727)
For Each t In prjApp.Projects(1).Tasks
ReDim Preserve monProjet(0 To 20, 0 To k)
For x = 0 To UBound(tmp)
monProjet(x, k) = t.GetField(tmp(x))
Next
k = k + 1
Next
lgn = 2
col = 6
With Feuil1
.Range(.Cells(lgn, col), .Cells(.Cells(65536,
col).End(xlUp).Row, .Cells(lgn,
256).End(xlToLeft).Column)).ClearContents
.Range(.Cells(lgn, col), .Cells(UBound(monProjet, 2) + lgn,
UBound(monProjet, 1) + col)).Value = Application.Transpose(monProjet)
End With
Parceque je veux pouvoir autoriser les utilisateurs à ajouter des champs à leur convenance, sans avior à modifier le code à chaque fois .
J'ai une macro qui fonctionne avec la liste des champs, mais je voudrais me débarrasser de cette contrainte :
Dim prjApp As MSProject.Application Dim k As Integer, lgn As Integer, col As Integer Set prjApp = CreateObject("MsProject.Application") Dim monProjet() prjApp.FileOpen ThisWorkbook.Path & "DEP - Planning détaillé ECM - V1.2.mpp", ReadOnly:=True Dim tmp() tmp = Array(188743703, 188743765, 188743694, 188743709, 188743715, 188743716, 188743708, 188743721, 188743722, 188743699, 188743712, 188743752, 188743767, 188743768, 188743769, 188743729, 188743731, 188743753, 188743754, 188743755, 188743727) For Each t In prjApp.Projects(1).Tasks ReDim Preserve monProjet(0 To 20, 0 To k) For x = 0 To UBound(tmp) monProjet(x, k) = t.GetField(tmp(x)) Next k = k + 1 Next lgn = 2 col = 6 With Feuil1 .Range(.Cells(lgn, col), .Cells(.Cells(65536, col).End(xlUp).Row, .Cells(lgn, 256).End(xlToLeft).Column)).ClearContents .Range(.Cells(lgn, col), .Cells(UBound(monProjet, 2) + lgn, UBound(monProjet, 1) + col)).Value = Application.Transpose(monProjet) End With
Gérard Ducouret
Bonjour,
Voici une macro (due à Jan de Messmaeker ) qui liste tous les champs de la table active: Sub Fieldlist() Dim TB As Table Dim CTR As Integer For Each TB In ActiveProject.TaskTables If TB.Name = ActiveProject.CurrentTable Then Exit For End If Next For CTR = 1 To TB.TableFields.Count Debug.Print FieldConstantToFieldName(TB.TableFields(CTR).Field) Next CTR End Sub
-- Gérard Ducouret
[Project MVP], Certifié Project 70632, Certifié ITIL www.pragmasoft.fr Un livre sur Project Server 2007 pour le Chef de projet: http://www.lmet.fr/advsearch.cgi?_EXPRESSION=ducouret&_DISTANCE&_PAGE=1
"Fdecourt" a écrit dans le message de news:
Parceque je veux pouvoir autoriser les utilisateurs à ajouter des champs à leur convenance, sans avior à modifier le code à chaque fois.
J'ai une macro qui fonctionne avec la liste des champs, mais je voudrais me débarrasser de cette contrainte :
Dim prjApp As MSProject.Application Dim k As Integer, lgn As Integer, col As Integer Set prjApp = CreateObject("MsProject.Application") Dim monProjet() prjApp.FileOpen ThisWorkbook.Path & "DEP - Planning détaillé ECM - V1.2.mpp", ReadOnly:=True Dim tmp() tmp = Array(188743703, 188743765, 188743694, 188743709, 188743715, 188743716, 188743708, 188743721, 188743722, 188743699, 188743712, 188743752, 188743767, 188743768, 188743769, 188743729, 188743731, 188743753, 188743754, 188743755, 188743727) For Each t In prjApp.Projects(1).Tasks ReDim Preserve monProjet(0 To 20, 0 To k) For x = 0 To UBound(tmp) monProjet(x, k) = t.GetField(tmp(x)) Next k = k + 1 Next lgn = 2 col = 6 With Feuil1 .Range(.Cells(lgn, col), .Cells(.Cells(65536, col).End(xlUp).Row, .Cells(lgn, 256).End(xlToLeft).Column)).ClearContents .Range(.Cells(lgn, col), .Cells(UBound(monProjet, 2) + lgn, UBound(monProjet, 1) + col)).Value = Application.Transpose(monProjet) End With
Bonjour,
Voici une macro (due à Jan de Messmaeker ) qui liste tous les champs de la
table active:
Sub Fieldlist()
Dim TB As Table
Dim CTR As Integer
For Each TB In ActiveProject.TaskTables
If TB.Name = ActiveProject.CurrentTable Then
Exit For
End If
Next
For CTR = 1 To TB.TableFields.Count
Debug.Print FieldConstantToFieldName(TB.TableFields(CTR).Field)
Next CTR
End Sub
--
Gérard Ducouret
[Project MVP], Certifié Project 70632, Certifié ITIL
www.pragmasoft.fr
Un livre sur Project Server 2007 pour le Chef de projet:
http://www.lmet.fr/advsearch.cgi?_EXPRESSION=ducouret&_DISTANCE&_PAGE=1
"Fdecourt" <fdecourt@gmail.com> a écrit dans le message de news:
843d11aa-6ea0-4996-acfc-8eea6ce31843@g26g2000yqn.googlegroups.com...
Parceque je veux pouvoir autoriser les utilisateurs à ajouter des
champs à leur convenance, sans avior à modifier le code à chaque fois.
J'ai une macro qui fonctionne avec la liste des champs, mais je
voudrais me débarrasser de cette contrainte :
Dim prjApp As MSProject.Application
Dim k As Integer, lgn As Integer, col As Integer
Set prjApp = CreateObject("MsProject.Application")
Dim monProjet()
prjApp.FileOpen ThisWorkbook.Path & "DEP - Planning détaillé ECM
- V1.2.mpp", ReadOnly:=True
Dim tmp()
tmp = Array(188743703, 188743765, 188743694, 188743709, 188743715,
188743716, 188743708, 188743721, 188743722, 188743699, 188743712,
188743752, 188743767, 188743768, 188743769, 188743729, 188743731,
188743753, 188743754, 188743755, 188743727)
For Each t In prjApp.Projects(1).Tasks
ReDim Preserve monProjet(0 To 20, 0 To k)
For x = 0 To UBound(tmp)
monProjet(x, k) = t.GetField(tmp(x))
Next
k = k + 1
Next
lgn = 2
col = 6
With Feuil1
.Range(.Cells(lgn, col), .Cells(.Cells(65536,
col).End(xlUp).Row, .Cells(lgn,
256).End(xlToLeft).Column)).ClearContents
.Range(.Cells(lgn, col), .Cells(UBound(monProjet, 2) + lgn,
UBound(monProjet, 1) + col)).Value = Application.Transpose(monProjet)
End With
Voici une macro (due à Jan de Messmaeker ) qui liste tous les champs de la table active: Sub Fieldlist() Dim TB As Table Dim CTR As Integer For Each TB In ActiveProject.TaskTables If TB.Name = ActiveProject.CurrentTable Then Exit For End If Next For CTR = 1 To TB.TableFields.Count Debug.Print FieldConstantToFieldName(TB.TableFields(CTR).Field) Next CTR End Sub
-- Gérard Ducouret
[Project MVP], Certifié Project 70632, Certifié ITIL www.pragmasoft.fr Un livre sur Project Server 2007 pour le Chef de projet: http://www.lmet.fr/advsearch.cgi?_EXPRESSION=ducouret&_DISTANCE&_PAGE=1
"Fdecourt" a écrit dans le message de news:
Parceque je veux pouvoir autoriser les utilisateurs à ajouter des champs à leur convenance, sans avior à modifier le code à chaque fois.
J'ai une macro qui fonctionne avec la liste des champs, mais je voudrais me débarrasser de cette contrainte :
Dim prjApp As MSProject.Application Dim k As Integer, lgn As Integer, col As Integer Set prjApp = CreateObject("MsProject.Application") Dim monProjet() prjApp.FileOpen ThisWorkbook.Path & "DEP - Planning détaillé ECM - V1.2.mpp", ReadOnly:=True Dim tmp() tmp = Array(188743703, 188743765, 188743694, 188743709, 188743715, 188743716, 188743708, 188743721, 188743722, 188743699, 188743712, 188743752, 188743767, 188743768, 188743769, 188743729, 188743731, 188743753, 188743754, 188743755, 188743727) For Each t In prjApp.Projects(1).Tasks ReDim Preserve monProjet(0 To 20, 0 To k) For x = 0 To UBound(tmp) monProjet(x, k) = t.GetField(tmp(x)) Next k = k + 1 Next lgn = 2 col = 6 With Feuil1 .Range(.Cells(lgn, col), .Cells(.Cells(65536, col).End(xlUp).Row, .Cells(lgn, 256).End(xlToLeft).Column)).ClearContents .Range(.Cells(lgn, col), .Cells(UBound(monProjet, 2) + lgn, UBound(monProjet, 1) + col)).Value = Application.Transpose(monProjet) End With