Je rencontre des probl=E8mes pour g=E9n=E9rer un graphique Excel =E0 partir
d'une macro sous Project.
(J'avais d=E9j=E0 pos=E9 une question =E0 ce sujet, mais la solution n'a
pas =E9t=E9 trouv=E9e, donc je relance, si quelqu'un a une id=E9e).
J'ai ouvert une session Excel =E0 partir de ma macro.
Set xlApp =3D CreateObject("Excel.Application")
Dim NewBook As Excel.Workbook
Set NewBook =3D xlApp.Workbooks.Add
Dim xlShDonnees, xlShGraphes As Excel.Worksheet
Set xlShDonnees =3D NewBook.Worksheets(1)
Set xlShGraphes =3D NewBook.Worksheets(2)
Pour la gestion des cellules (fonctions range, Cells, Columns,...) tout
se passe bien. Mais c'est la cr=E9ation du graphique qui pose probl=E8me.
J'ai remplac=E9 par leur num=E9ro les variables xlColumnClustered et
xlRows, qui n'=E9taient pas reconnues.
J'ai une erreur d'ex=E9cution 1004 qui se produit sur la ligne
ActiveChart.SetSourceData ....
Si quelqu'un peut m'aider =E0 trouver une solution! Merci d'avance
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
Vincent Isoz
Bonjour
Ce serait plus simple et plus rapide en ayant tout le code. Mais je vais voir ce je peux faire dans le temps que j'ai.
Cordialement
"Anne" wrote:
Bonjour,
Je rencontre des problèmes pour générer un graphique Excel à partir d'une macro sous Project. (J'avais déjà posé une question à ce sujet, mais la solution n'a pas été trouvée, donc je relance, si quelqu'un a une idée).
J'ai ouvert une session Excel à partir de ma macro.
Set xlApp = CreateObject("Excel.Application")
Dim NewBook As Excel.Workbook Set NewBook = xlApp.Workbooks.Add
Dim xlShDonnees, xlShGraphes As Excel.Worksheet Set xlShDonnees = NewBook.Worksheets(1) Set xlShGraphes = NewBook.Worksheets(2)
Pour la gestion des cellules (fonctions range, Cells, Columns,...) tout se passe bien. Mais c'est la création du graphique qui pose problème.
J'ai remplacé par leur numéro les variables xlColumnClustered et xlRows, qui n'étaient pas reconnues. J'ai une erreur d'exécution 1004 qui se produit sur la ligne ActiveChart.SetSourceData ....
Si quelqu'un peut m'aider à trouver une solution! Merci d'avance
Anne
Bonjour
Ce serait plus simple et plus rapide en ayant tout le code. Mais je vais
voir ce je peux faire dans le temps que j'ai.
Cordialement
"Anne" wrote:
Bonjour,
Je rencontre des problèmes pour générer un graphique Excel à partir
d'une macro sous Project.
(J'avais déjà posé une question à ce sujet, mais la solution n'a
pas été trouvée, donc je relance, si quelqu'un a une idée).
J'ai ouvert une session Excel à partir de ma macro.
Set xlApp = CreateObject("Excel.Application")
Dim NewBook As Excel.Workbook
Set NewBook = xlApp.Workbooks.Add
Dim xlShDonnees, xlShGraphes As Excel.Worksheet
Set xlShDonnees = NewBook.Worksheets(1)
Set xlShGraphes = NewBook.Worksheets(2)
Pour la gestion des cellules (fonctions range, Cells, Columns,...) tout
se passe bien. Mais c'est la création du graphique qui pose problème.
J'ai remplacé par leur numéro les variables xlColumnClustered et
xlRows, qui n'étaient pas reconnues.
J'ai une erreur d'exécution 1004 qui se produit sur la ligne
ActiveChart.SetSourceData ....
Si quelqu'un peut m'aider à trouver une solution! Merci d'avance
Ce serait plus simple et plus rapide en ayant tout le code. Mais je vais voir ce je peux faire dans le temps que j'ai.
Cordialement
"Anne" wrote:
Bonjour,
Je rencontre des problèmes pour générer un graphique Excel à partir d'une macro sous Project. (J'avais déjà posé une question à ce sujet, mais la solution n'a pas été trouvée, donc je relance, si quelqu'un a une idée).
J'ai ouvert une session Excel à partir de ma macro.
Set xlApp = CreateObject("Excel.Application")
Dim NewBook As Excel.Workbook Set NewBook = xlApp.Workbooks.Add
Dim xlShDonnees, xlShGraphes As Excel.Worksheet Set xlShDonnees = NewBook.Worksheets(1) Set xlShGraphes = NewBook.Worksheets(2)
Pour la gestion des cellules (fonctions range, Cells, Columns,...) tout se passe bien. Mais c'est la création du graphique qui pose problème.
J'ai remplacé par leur numéro les variables xlColumnClustered et xlRows, qui n'étaient pas reconnues. J'ai une erreur d'exécution 1004 qui se produit sur la ligne ActiveChart.SetSourceData ....
Si quelqu'un peut m'aider à trouver une solution! Merci d'avance
Anne
Vincent Isoz
Bon ben je me suis pas foulé
Je vous donne finalement l'exercice que je donne pendant mes cours VBA cela devrait vous donner une base de travail (n'oubliez pas d'aller voir mes PDFs sur le web tout y est déjà...).
Cette procédure exporte au fait la liste des ressources avec leur travail en heures et en fait un graphique (un classique quoi...)
Sub Total()
Dim Client As Resource Dim CT As Double Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim Proj As Project
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
For Each Client In ActiveProject.Resources xlSheet.Cells(1 + CT, 1) = Client.Name xlSheet.Cells(1 + CT, 2) = Client.Work / 60 CT = CT + 1 Next Client
xlApp.Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SeriesCollection.NewSeries 'attention selon la langue de l'interface de MS Excel de remplacer Feuil par le nom adéquat plagevaleursx = "=" & ActiveProject.Name & "!R2C1:R" & CT & "C1" ActiveChart.SeriesCollection(1).XValues = plagevaleursx plagevaleurs = "=" & ActiveProject.Name & "!R2C2:R" & CT & "C2" ActiveChart.SeriesCollection(1).Values = plagevaleurs 'Attention à la manière d'écrire cette ligne (sinon cela rajoute une série vide!) ActiveChart.SeriesCollection(1).Name = "=""Valeurs""" ActiveChart.Location Where:=xlLocationAsNewSheet With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Représentation Graphique" .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Temps]" End With
End Sub
"Vincent Isoz" wrote:
Bonjour
Ce serait plus simple et plus rapide en ayant tout le code. Mais je vais voir ce je peux faire dans le temps que j'ai.
Cordialement
"Anne" wrote:
Bonjour,
Je rencontre des problèmes pour générer un graphique Excel à partir d'une macro sous Project. (J'avais déjà posé une question à ce sujet, mais la solution n'a pas été trouvée, donc je relance, si quelqu'un a une idée).
J'ai ouvert une session Excel à partir de ma macro.
Set xlApp = CreateObject("Excel.Application")
Dim NewBook As Excel.Workbook Set NewBook = xlApp.Workbooks.Add
Dim xlShDonnees, xlShGraphes As Excel.Worksheet Set xlShDonnees = NewBook.Worksheets(1) Set xlShGraphes = NewBook.Worksheets(2)
Pour la gestion des cellules (fonctions range, Cells, Columns,...) tout se passe bien. Mais c'est la création du graphique qui pose problème.
J'ai remplacé par leur numéro les variables xlColumnClustered et xlRows, qui n'étaient pas reconnues. J'ai une erreur d'exécution 1004 qui se produit sur la ligne ActiveChart.SetSourceData ....
Si quelqu'un peut m'aider à trouver une solution! Merci d'avance
Anne
Bon ben je me suis pas foulé
Je vous donne finalement l'exercice que je donne pendant mes cours VBA cela
devrait vous donner une base de travail (n'oubliez pas d'aller voir mes PDFs
sur le web tout y est déjà...).
Cette procédure exporte au fait la liste des ressources avec leur travail en
heures et en fait un graphique (un classique quoi...)
Sub Total()
Dim Client As Resource
Dim CT As Double
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim Proj As Project
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
For Each Client In ActiveProject.Resources
xlSheet.Cells(1 + CT, 1) = Client.Name
xlSheet.Cells(1 + CT, 2) = Client.Work / 60
CT = CT + 1
Next Client
xlApp.Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SeriesCollection.NewSeries
'attention selon la langue de l'interface de MS Excel de remplacer Feuil
par le nom adéquat
plagevaleursx = "=" & ActiveProject.Name & "!R2C1:R" & CT & "C1"
ActiveChart.SeriesCollection(1).XValues = plagevaleursx
plagevaleurs = "=" & ActiveProject.Name & "!R2C2:R" & CT & "C2"
ActiveChart.SeriesCollection(1).Values = plagevaleurs
'Attention à la manière d'écrire cette ligne (sinon cela rajoute une
série vide!)
ActiveChart.SeriesCollection(1).Name = "=""Valeurs"""
ActiveChart.Location Where:=xlLocationAsNewSheet
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Représentation Graphique"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Temps]"
End With
End Sub
"Vincent Isoz" wrote:
Bonjour
Ce serait plus simple et plus rapide en ayant tout le code. Mais je vais
voir ce je peux faire dans le temps que j'ai.
Cordialement
"Anne" wrote:
Bonjour,
Je rencontre des problèmes pour générer un graphique Excel à partir
d'une macro sous Project.
(J'avais déjà posé une question à ce sujet, mais la solution n'a
pas été trouvée, donc je relance, si quelqu'un a une idée).
J'ai ouvert une session Excel à partir de ma macro.
Set xlApp = CreateObject("Excel.Application")
Dim NewBook As Excel.Workbook
Set NewBook = xlApp.Workbooks.Add
Dim xlShDonnees, xlShGraphes As Excel.Worksheet
Set xlShDonnees = NewBook.Worksheets(1)
Set xlShGraphes = NewBook.Worksheets(2)
Pour la gestion des cellules (fonctions range, Cells, Columns,...) tout
se passe bien. Mais c'est la création du graphique qui pose problème.
J'ai remplacé par leur numéro les variables xlColumnClustered et
xlRows, qui n'étaient pas reconnues.
J'ai une erreur d'exécution 1004 qui se produit sur la ligne
ActiveChart.SetSourceData ....
Si quelqu'un peut m'aider à trouver une solution! Merci d'avance
Je vous donne finalement l'exercice que je donne pendant mes cours VBA cela devrait vous donner une base de travail (n'oubliez pas d'aller voir mes PDFs sur le web tout y est déjà...).
Cette procédure exporte au fait la liste des ressources avec leur travail en heures et en fait un graphique (un classique quoi...)
Sub Total()
Dim Client As Resource Dim CT As Double Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim Proj As Project
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
For Each Client In ActiveProject.Resources xlSheet.Cells(1 + CT, 1) = Client.Name xlSheet.Cells(1 + CT, 2) = Client.Work / 60 CT = CT + 1 Next Client
xlApp.Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SeriesCollection.NewSeries 'attention selon la langue de l'interface de MS Excel de remplacer Feuil par le nom adéquat plagevaleursx = "=" & ActiveProject.Name & "!R2C1:R" & CT & "C1" ActiveChart.SeriesCollection(1).XValues = plagevaleursx plagevaleurs = "=" & ActiveProject.Name & "!R2C2:R" & CT & "C2" ActiveChart.SeriesCollection(1).Values = plagevaleurs 'Attention à la manière d'écrire cette ligne (sinon cela rajoute une série vide!) ActiveChart.SeriesCollection(1).Name = "=""Valeurs""" ActiveChart.Location Where:=xlLocationAsNewSheet With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Représentation Graphique" .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Temps]" End With
End Sub
"Vincent Isoz" wrote:
Bonjour
Ce serait plus simple et plus rapide en ayant tout le code. Mais je vais voir ce je peux faire dans le temps que j'ai.
Cordialement
"Anne" wrote:
Bonjour,
Je rencontre des problèmes pour générer un graphique Excel à partir d'une macro sous Project. (J'avais déjà posé une question à ce sujet, mais la solution n'a pas été trouvée, donc je relance, si quelqu'un a une idée).
J'ai ouvert une session Excel à partir de ma macro.
Set xlApp = CreateObject("Excel.Application")
Dim NewBook As Excel.Workbook Set NewBook = xlApp.Workbooks.Add
Dim xlShDonnees, xlShGraphes As Excel.Worksheet Set xlShDonnees = NewBook.Worksheets(1) Set xlShGraphes = NewBook.Worksheets(2)
Pour la gestion des cellules (fonctions range, Cells, Columns,...) tout se passe bien. Mais c'est la création du graphique qui pose problème.
J'ai remplacé par leur numéro les variables xlColumnClustered et xlRows, qui n'étaient pas reconnues. J'ai une erreur d'exécution 1004 qui se produit sur la ligne ActiveChart.SetSourceData ....
Si quelqu'un peut m'aider à trouver une solution! Merci d'avance
Anne
Anne
Le code est assez long et il fait intervenir bcp trop d'éléments qui n'ont pas de rapport avec la question. Je ne pense pas que ce soit plus simple de l'envoyer en entier... Pour plus d'explications : dans la feuille 1 sous Excel, j'entre en ligne 4 (à partir de la colonne B) des numéros de semaine, puis pour chaque semaine, une valeur de travail. Je cherche ensuite à créer en tant qu'objet sur la feuille 2 le graphique du "travail" en fonction du numéro de semaine. Merci.
Le code est assez long et il fait intervenir bcp trop d'éléments qui
n'ont pas de rapport avec la question. Je ne pense pas que ce soit plus
simple de l'envoyer en entier...
Pour plus d'explications : dans la feuille 1 sous Excel, j'entre en
ligne 4 (à partir de la colonne B) des numéros de semaine, puis pour
chaque semaine, une valeur de travail. Je cherche ensuite à créer en
tant qu'objet sur la feuille 2 le graphique du "travail" en fonction du
numéro de semaine.
Merci.
Le code est assez long et il fait intervenir bcp trop d'éléments qui n'ont pas de rapport avec la question. Je ne pense pas que ce soit plus simple de l'envoyer en entier... Pour plus d'explications : dans la feuille 1 sous Excel, j'entre en ligne 4 (à partir de la colonne B) des numéros de semaine, puis pour chaque semaine, une valeur de travail. Je cherche ensuite à créer en tant qu'objet sur la feuille 2 le graphique du "travail" en fonction du numéro de semaine. Merci.
Vincent Isoz
Ok mais comme je vous ai finalement donné le code cela ne pose maintenant plus de problèmes. C'est maintenant trivial.
Cordialement
"Anne" wrote:
Le code est assez long et il fait intervenir bcp trop d'éléments qui n'ont pas de rapport avec la question. Je ne pense pas que ce soit plus simple de l'envoyer en entier... Pour plus d'explications : dans la feuille 1 sous Excel, j'entre en ligne 4 (à partir de la colonne B) des numéros de semaine, puis pour chaque semaine, une valeur de travail. Je cherche ensuite à créer en tant qu'objet sur la feuille 2 le graphique du "travail" en fonction du numéro de semaine. Merci.
Ok mais comme je vous ai finalement donné le code cela ne pose maintenant
plus de problèmes. C'est maintenant trivial.
Cordialement
"Anne" wrote:
Le code est assez long et il fait intervenir bcp trop d'éléments qui
n'ont pas de rapport avec la question. Je ne pense pas que ce soit plus
simple de l'envoyer en entier...
Pour plus d'explications : dans la feuille 1 sous Excel, j'entre en
ligne 4 (à partir de la colonne B) des numéros de semaine, puis pour
chaque semaine, une valeur de travail. Je cherche ensuite à créer en
tant qu'objet sur la feuille 2 le graphique du "travail" en fonction du
numéro de semaine.
Merci.
Ok mais comme je vous ai finalement donné le code cela ne pose maintenant plus de problèmes. C'est maintenant trivial.
Cordialement
"Anne" wrote:
Le code est assez long et il fait intervenir bcp trop d'éléments qui n'ont pas de rapport avec la question. Je ne pense pas que ce soit plus simple de l'envoyer en entier... Pour plus d'explications : dans la feuille 1 sous Excel, j'entre en ligne 4 (à partir de la colonne B) des numéros de semaine, puis pour chaque semaine, une valeur de travail. Je cherche ensuite à créer en tant qu'objet sur la feuille 2 le graphique du "travail" en fonction du numéro de semaine. Merci.
Anne
En effet (nos messages précédents se sont croisés...). Merci pour ce bout de code. En utilisant les lignes utilisant les "seriescollection", et en ajoutant des noms à mes feuilles, j'ai enfin réussi à tracer mon graphique. En revanche, les variables telles que xlColumnClustered, ou xlLocationAsNewSheet, ne sont toujours pas reconnues... Je suis passée par les chiffres correspondants. Je ne comprends pas d'où cela peut venir. En tout cas, j'ai réussi à faire ce que je voulais. Merci encore.
En effet (nos messages précédents se sont croisés...).
Merci pour ce bout de code. En utilisant les lignes utilisant les
"seriescollection", et en ajoutant des noms à mes feuilles, j'ai enfin
réussi à tracer mon graphique.
En revanche, les variables telles que xlColumnClustered, ou
xlLocationAsNewSheet, ne sont toujours pas reconnues... Je suis passée
par les chiffres correspondants. Je ne comprends pas d'où cela peut
venir.
En tout cas, j'ai réussi à faire ce que je voulais.
Merci encore.
En effet (nos messages précédents se sont croisés...). Merci pour ce bout de code. En utilisant les lignes utilisant les "seriescollection", et en ajoutant des noms à mes feuilles, j'ai enfin réussi à tracer mon graphique. En revanche, les variables telles que xlColumnClustered, ou xlLocationAsNewSheet, ne sont toujours pas reconnues... Je suis passée par les chiffres correspondants. Je ne comprends pas d'où cela peut venir. En tout cas, j'ai réussi à faire ce que je voulais. Merci encore.
Vincent Isoz
C'est normal je sais d'où cela vient. Mais avant de vous dire ce que c'est... (échange de bons procédés) j'aimerais avoir plus de détails sur le développement que vous faites (qui peut intéresser la communauté).
Est-ce vous avez créé un code VBA qui exporte le travail par semaine de chaque ressource ou cela n'a rien à voir ?
Cordialement
En effet (nos messages précédents se sont croisés...). Merci pour ce bout de code. En utilisant les lignes utilisant les "seriescollection", et en ajoutant des noms à mes feuilles, j'ai enfin réussi à tracer mon graphique. En revanche, les variables telles que xlColumnClustered, ou xlLocationAsNewSheet, ne sont toujours pas reconnues... Je suis passée par les chiffres correspondants. Je ne comprends pas d'où cela peut venir. En tout cas, j'ai réussi à faire ce que je voulais. Merci encore.
C'est normal je sais d'où cela vient. Mais avant de vous dire ce que c'est...
(échange de bons procédés) j'aimerais avoir plus de détails sur le
développement que vous faites (qui peut intéresser la communauté).
Est-ce vous avez créé un code VBA qui exporte le travail par semaine de
chaque ressource ou cela n'a rien à voir ?
Cordialement
En effet (nos messages précédents se sont croisés...).
Merci pour ce bout de code. En utilisant les lignes utilisant les
"seriescollection", et en ajoutant des noms à mes feuilles, j'ai enfin
réussi à tracer mon graphique.
En revanche, les variables telles que xlColumnClustered, ou
xlLocationAsNewSheet, ne sont toujours pas reconnues... Je suis passée
par les chiffres correspondants. Je ne comprends pas d'où cela peut
venir.
En tout cas, j'ai réussi à faire ce que je voulais.
Merci encore.
C'est normal je sais d'où cela vient. Mais avant de vous dire ce que c'est... (échange de bons procédés) j'aimerais avoir plus de détails sur le développement que vous faites (qui peut intéresser la communauté).
Est-ce vous avez créé un code VBA qui exporte le travail par semaine de chaque ressource ou cela n'a rien à voir ?
Cordialement
En effet (nos messages précédents se sont croisés...). Merci pour ce bout de code. En utilisant les lignes utilisant les "seriescollection", et en ajoutant des noms à mes feuilles, j'ai enfin réussi à tracer mon graphique. En revanche, les variables telles que xlColumnClustered, ou xlLocationAsNewSheet, ne sont toujours pas reconnues... Je suis passée par les chiffres correspondants. Je ne comprends pas d'où cela peut venir. En tout cas, j'ai réussi à faire ce que je voulais. Merci encore.
Anne
Pas de problème pour expliquer le développement que j'essaie de faire. Je n'ai pas le temps de le faire maintenant, mais j'envoie ceci dès que possible, mardi.
Pas de problème pour expliquer le développement que j'essaie de
faire. Je n'ai pas le temps de le faire maintenant, mais j'envoie ceci
dès que possible, mardi.
Pas de problème pour expliquer le développement que j'essaie de faire. Je n'ai pas le temps de le faire maintenant, mais j'envoie ceci dès que possible, mardi.
Anne
Bonjour,
Voici donc les explications sur le code que je tente d'écrire: ce n'est pas un export du travail par semaine de chaque ressource, mais un export du travail par semaine d'un groupe de ressources sur certaines tâches. Je vais essayer d'expliquer un peu plus en détails : le groupe de ressources dont je parle sont des ressources matérielles (un ensemble de machines), que je déclare en ressources "travail" pour pouvoir gérer leur utilisation. A ces ressources sont affectées des blocs de tâches, créés par VBA. Les sous-tâches ont toujours la même structure, et la tâche récapitulative a un nom "standardisé" (issu de listes de choix). Le nom contient un paramètre qui m'intéresse, que j'appelerai la "procédure". Ce que j'exporte sous Excel est le travail de toutes les ressources du groupe, décomposé selon les "procédures". Ceci pour établir une prévision du plan de charge par "procédure".
Voici le code, encore à l'état "brouillon" :
Sub PlanChargeParProcedure()
'======================== ======== 'DEFINITION DES VARIABLES LOCALES '======================== ========
Dim TSV As TimeScaleValues Dim NbSem, NbPE, NbMois As Long Dim i, j As Integer Dim Val As Integer Dim Asg As Assignment Dim Tsk As Task Dim TableCharge() As Variant Dim ListeToutesPE() As String Dim C As Range Dim Col, DerCol As String Dim ListeRessourcesBancs() As Long 'liste des numéros des bancs dans les ressources ReDim ListeRessourcesBancs(0) Dim R As Resource Dim DateFin As Date Dim PourcentAvancement As Single
'Liste des numéros des ressources bancs
'Parcours des ressources For Each R In ActiveProject.Resources 'Si la ressource est dans le groupe "Banc" If R.Group = "Banc" Then 'On ajoute son numéro à la liste ListeRessourcesBancs(UBound(ListeRessourcesBancs)) = R.ID
ReDim Preserve ListeRessourcesBancs(UBound(ListeRessourcesBancs) + 1) End If Next R
'Ouverture d'une session excel Set xlApp = CreateObject("Excel.Application")
'Ouverture du classeur contenant les paramètres essais (en lecture seule) xlApp.Workbooks.Open ActiveProject.Path & "Paramètres_essais.xls", _ ReadOnly:=True
'Liste des procédures d'essais 'copiée dans le presse-papiers With xlApp.ActiveWorkbook.Worksheets("Organes") .Range("A4:" & .Range("A4").End(xlDown).Address).Copy End With
'Fermeture de ce fichier excel xlApp.ActiveWorkbook.Close 'Ouverture d'un nouveau classeur excel pour établir le plan de charge Dim NewBook As Excel.Workbook Set NewBook = xlApp.Workbooks.Add 'xlApp.Visible = True
Dim xlShDonnees, xlShGraphes As Excel.Worksheet Set xlShDonnees = NewBook.Worksheets(1) Set xlShGraphes = NewBook.Worksheets(2)
If Not (ActiveCell.Resource.Assignments Is Nothing) Then
'Parcours de toutes les PE existantes For Each C In xlShDonnees.Range("A5:" & xlShDonnees.Range("A5").End(xlDown).Address)
'Pour chaque tâche affectée au banc For Each Asg In ActiveCell.Resource.Assignments
'Si la tâche est rattachée à un essai correspondant à la PE considérée If Asg.TaskSummaryName Like "*" & C & "*" Then
'On évalue le travail du banc sur cette tâche, semaine par semaine, 'sur la plage de dates choisie Set TSV = Asg.TimeScaleData(Date, DateAdd("m", NbMois, Date), _ Type:=pjAssignmentTimescaledWork, TimescaleUnit:=pjTimescaleWeeks)
'Pour chaque semaine For j = 1 To TSV.Count
'Lettre correspondant à la colonne de la semaine considérée Col = Left$(xlShDonnees.Cells(1, j + 1).Address(0, 0), _ (xlShDonnees.Cells(1, j + 1).Column < 27) + 2)
'Si le travail est non nul sur cette semaine If Not TSV(j).Value = "" Then 'on l'ajoute dans la case correspondante du tableau excel '(i.e. ligne correspondant à la PE considérée, et colonne 'correspondant à la semaine considérée) xlShDonnees.Range(Col & C.Row) = _ xlShDonnees.Range(Col & C.Row) + TSV(j).Value / 60 / 7 / 7 End If Next j End If
Next Asg
Next C End If
Next i
xlApp.Visible = True
'lettre correspondant à la dernière colonne DerCol = Left$(xlShDonnees.Cells(1, NbSem + 1).Address(0, 0), _ (xlShDonnees.Cells(1, NbSem + 1).Column < 27) + 2)
Voici donc les explications sur le code que je tente d'écrire:
ce n'est pas un export du travail par semaine de chaque ressource, mais
un export du travail par semaine d'un groupe de ressources sur
certaines tâches.
Je vais essayer d'expliquer un peu plus en détails : le groupe de
ressources dont je parle sont des ressources matérielles (un ensemble
de machines), que je déclare en ressources "travail" pour pouvoir
gérer leur utilisation. A ces ressources sont affectées des blocs de
tâches, créés par VBA. Les sous-tâches ont toujours la même
structure, et la tâche récapitulative a un nom "standardisé" (issu
de listes de choix). Le nom contient un paramètre qui m'intéresse,
que j'appelerai la "procédure". Ce que j'exporte sous Excel est le
travail de toutes les ressources du groupe, décomposé selon les
"procédures". Ceci pour établir une prévision du plan de charge par
"procédure".
Voici le code, encore à l'état "brouillon" :
Sub PlanChargeParProcedure()
'======================== ========
'DEFINITION DES VARIABLES LOCALES
'======================== ========
Dim TSV As TimeScaleValues
Dim NbSem, NbPE, NbMois As Long
Dim i, j As Integer
Dim Val As Integer
Dim Asg As Assignment
Dim Tsk As Task
Dim TableCharge() As Variant
Dim ListeToutesPE() As String
Dim C As Range
Dim Col, DerCol As String
Dim ListeRessourcesBancs() As Long 'liste des numéros des bancs
dans les ressources
ReDim ListeRessourcesBancs(0)
Dim R As Resource
Dim DateFin As Date
Dim PourcentAvancement As Single
'Liste des numéros des ressources bancs
'Parcours des ressources
For Each R In ActiveProject.Resources
'Si la ressource est dans le groupe "Banc"
If R.Group = "Banc" Then
'On ajoute son numéro à la liste
ListeRessourcesBancs(UBound(ListeRessourcesBancs)) = R.ID
ReDim Preserve
ListeRessourcesBancs(UBound(ListeRessourcesBancs) + 1)
End If
Next R
'Ouverture d'une session excel
Set xlApp = CreateObject("Excel.Application")
'Ouverture du classeur contenant les paramètres essais (en lecture
seule)
xlApp.Workbooks.Open ActiveProject.Path &
"Paramètres_essais.xls", _
ReadOnly:=True
'Liste des procédures d'essais
'copiée dans le presse-papiers
With xlApp.ActiveWorkbook.Worksheets("Organes")
.Range("A4:" & .Range("A4").End(xlDown).Address).Copy
End With
'Fermeture de ce fichier excel
xlApp.ActiveWorkbook.Close
'Ouverture d'un nouveau classeur excel pour établir le plan de
charge
Dim NewBook As Excel.Workbook
Set NewBook = xlApp.Workbooks.Add
'xlApp.Visible = True
Dim xlShDonnees, xlShGraphes As Excel.Worksheet
Set xlShDonnees = NewBook.Worksheets(1)
Set xlShGraphes = NewBook.Worksheets(2)
If Not (ActiveCell.Resource.Assignments Is Nothing) Then
'Parcours de toutes les PE existantes
For Each C In xlShDonnees.Range("A5:" &
xlShDonnees.Range("A5").End(xlDown).Address)
'Pour chaque tâche affectée au banc
For Each Asg In ActiveCell.Resource.Assignments
'Si la tâche est rattachée à un essai
correspondant à la PE considérée
If Asg.TaskSummaryName Like "*" & C & "*" Then
'On évalue le travail du banc sur cette
tâche, semaine par semaine,
'sur la plage de dates choisie
Set TSV = Asg.TimeScaleData(Date, DateAdd("m",
NbMois, Date), _
Type:=pjAssignmentTimescaledWork,
TimescaleUnit:=pjTimescaleWeeks)
'Pour chaque semaine
For j = 1 To TSV.Count
'Lettre correspondant à la colonne de la
semaine considérée
Col = Left$(xlShDonnees.Cells(1, j +
1).Address(0, 0), _
(xlShDonnees.Cells(1, j + 1).Column < 27) +
2)
'Si le travail est non nul sur cette
semaine
If Not TSV(j).Value = "" Then
'on l'ajoute dans la case
correspondante du tableau excel
'(i.e. ligne correspondant à la PE
considérée, et colonne
'correspondant à la semaine
considérée)
xlShDonnees.Range(Col & C.Row) = _
xlShDonnees.Range(Col & C.Row) +
TSV(j).Value / 60 / 7 / 7
End If
Next j
End If
Next Asg
Next C
End If
Next i
xlApp.Visible = True
'lettre correspondant à la dernière colonne
DerCol = Left$(xlShDonnees.Cells(1, NbSem + 1).Address(0, 0), _
(xlShDonnees.Cells(1, NbSem + 1).Column < 27) + 2)
Voici donc les explications sur le code que je tente d'écrire: ce n'est pas un export du travail par semaine de chaque ressource, mais un export du travail par semaine d'un groupe de ressources sur certaines tâches. Je vais essayer d'expliquer un peu plus en détails : le groupe de ressources dont je parle sont des ressources matérielles (un ensemble de machines), que je déclare en ressources "travail" pour pouvoir gérer leur utilisation. A ces ressources sont affectées des blocs de tâches, créés par VBA. Les sous-tâches ont toujours la même structure, et la tâche récapitulative a un nom "standardisé" (issu de listes de choix). Le nom contient un paramètre qui m'intéresse, que j'appelerai la "procédure". Ce que j'exporte sous Excel est le travail de toutes les ressources du groupe, décomposé selon les "procédures". Ceci pour établir une prévision du plan de charge par "procédure".
Voici le code, encore à l'état "brouillon" :
Sub PlanChargeParProcedure()
'======================== ======== 'DEFINITION DES VARIABLES LOCALES '======================== ========
Dim TSV As TimeScaleValues Dim NbSem, NbPE, NbMois As Long Dim i, j As Integer Dim Val As Integer Dim Asg As Assignment Dim Tsk As Task Dim TableCharge() As Variant Dim ListeToutesPE() As String Dim C As Range Dim Col, DerCol As String Dim ListeRessourcesBancs() As Long 'liste des numéros des bancs dans les ressources ReDim ListeRessourcesBancs(0) Dim R As Resource Dim DateFin As Date Dim PourcentAvancement As Single
'Liste des numéros des ressources bancs
'Parcours des ressources For Each R In ActiveProject.Resources 'Si la ressource est dans le groupe "Banc" If R.Group = "Banc" Then 'On ajoute son numéro à la liste ListeRessourcesBancs(UBound(ListeRessourcesBancs)) = R.ID
ReDim Preserve ListeRessourcesBancs(UBound(ListeRessourcesBancs) + 1) End If Next R
'Ouverture d'une session excel Set xlApp = CreateObject("Excel.Application")
'Ouverture du classeur contenant les paramètres essais (en lecture seule) xlApp.Workbooks.Open ActiveProject.Path & "Paramètres_essais.xls", _ ReadOnly:=True
'Liste des procédures d'essais 'copiée dans le presse-papiers With xlApp.ActiveWorkbook.Worksheets("Organes") .Range("A4:" & .Range("A4").End(xlDown).Address).Copy End With
'Fermeture de ce fichier excel xlApp.ActiveWorkbook.Close 'Ouverture d'un nouveau classeur excel pour établir le plan de charge Dim NewBook As Excel.Workbook Set NewBook = xlApp.Workbooks.Add 'xlApp.Visible = True
Dim xlShDonnees, xlShGraphes As Excel.Worksheet Set xlShDonnees = NewBook.Worksheets(1) Set xlShGraphes = NewBook.Worksheets(2)
If Not (ActiveCell.Resource.Assignments Is Nothing) Then
'Parcours de toutes les PE existantes For Each C In xlShDonnees.Range("A5:" & xlShDonnees.Range("A5").End(xlDown).Address)
'Pour chaque tâche affectée au banc For Each Asg In ActiveCell.Resource.Assignments
'Si la tâche est rattachée à un essai correspondant à la PE considérée If Asg.TaskSummaryName Like "*" & C & "*" Then
'On évalue le travail du banc sur cette tâche, semaine par semaine, 'sur la plage de dates choisie Set TSV = Asg.TimeScaleData(Date, DateAdd("m", NbMois, Date), _ Type:=pjAssignmentTimescaledWork, TimescaleUnit:=pjTimescaleWeeks)
'Pour chaque semaine For j = 1 To TSV.Count
'Lettre correspondant à la colonne de la semaine considérée Col = Left$(xlShDonnees.Cells(1, j + 1).Address(0, 0), _ (xlShDonnees.Cells(1, j + 1).Column < 27) + 2)
'Si le travail est non nul sur cette semaine If Not TSV(j).Value = "" Then 'on l'ajoute dans la case correspondante du tableau excel '(i.e. ligne correspondant à la PE considérée, et colonne 'correspondant à la semaine considérée) xlShDonnees.Range(Col & C.Row) = _ xlShDonnees.Range(Col & C.Row) + TSV(j).Value / 60 / 7 / 7 End If Next j End If
Next Asg
Next C End If
Next i
xlApp.Visible = True
'lettre correspondant à la dernière colonne DerCol = Left$(xlShDonnees.Cells(1, NbSem + 1).Address(0, 0), _ (xlShDonnees.Cells(1, NbSem + 1).Column < 27) + 2)
Avez-vous toujours une idée d'où peut venir mon problème? J'ai toujours des erreurs de variables non reconnues dans les lignes de code concernant les graphiques... Et je ne trouve pas la solution.
Merci d'avance.
Vincent,
Avez-vous toujours une idée d'où peut venir mon problème?
J'ai toujours des erreurs de variables non reconnues dans les lignes de
code concernant les graphiques... Et je ne trouve pas la solution.
Avez-vous toujours une idée d'où peut venir mon problème? J'ai toujours des erreurs de variables non reconnues dans les lignes de code concernant les graphiques... Et je ne trouve pas la solution.