Je relance un peu le sujet d'un pr=E9c=E9dent post, avec des infos plus
pr=E9cises.
Il s'agit d'une macro qui effectue un couper/coller entre deux projets.
La macro fonctionne toujours bien en mode pas =E0 pas d=E9taill=E9. Mais
elle fait planter tout MS Project lorsque je l'ex=E9cute.
Voici la macro :
FileOpen Name:=3DActiveProject.Path & "\fichier2.mpp",
FormatID:=3D"MSProject.MPP"
Projects("fichier1").Activate
SelectRow Row:=3D1, rowrelative:=3DFalse
EditCut
Projects("fichier2").Activate
SelectEnd
SelectRow Row:=3D1
EditPaste
En mode ex=E9cution "classique", elle plante au niveau de EditCut.
Si maintenant je remplace EditCut par EditCopy, la macro plante au
niveau du EditPaste.
La macro s'ex=E9cute bien en mode pas =E0 pas d=E9taill=E9.
Elle s'ex=E9cute aussi si je mets un point d'arr=EAt qur l'instruction
qui pose apparemment probl=E8me et que je relance la suite de
l'ex=E9cution.
(d'autre part, sur certains ficheirs test, la macro fonctionne sans pb)
C'est un casse-t=EAte, je ne comprends pas pourquoi =E7a plante!!!
(je pr=E9cise aussi que cela fonctionnait tr=E8s bien il y a quelques
jours)
Et je ne vois pas non plus comment je pourrais contourner le probl=E8me
en essayant de construire mon code autrement...
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
Bonsoir Anne,
<<construire mon code autrement...>> Une idée, c'est d'ailleurs un principe général en VBA : éviter au maximum de simuler à l'identique une manip manuelle avec ses sélections, déplacement de curseur, copier/coller. Dans le meilleur des cas cela ralentit l'éxécution de la procédure, dans les moins bons cas cela plante... Voir l'instruction que je vous indiquait hier :
SetTaskField Field:="Remarques", Value:="Note dans tache 3", TaskID:=3
Elle écrit une valeur dans un champ tâche, sans le sélectionner. Etudiez ainsi les méthodes GetField, SetField... dans l'aide en ligne.
Gérard Ducouret [Project MVP]
"Anne" a écrit dans le message de news: Bonjour,
Je relance un peu le sujet d'un précédent post, avec des infos plus précises. Il s'agit d'une macro qui effectue un couper/coller entre deux projets.
La macro fonctionne toujours bien en mode pas à pas détaillé. Mais elle fait planter tout MS Project lorsque je l'exécute.
Voici la macro : FileOpen Name:¬tiveProject.Path & "fichier2.mpp", FormatID:="MSProject.MPP"
Projects("fichier1").Activate
SelectRow Row:=1, rowrelative:úlse EditCut
Projects("fichier2").Activate
SelectEnd SelectRow Row:=1 EditPaste
En mode exécution "classique", elle plante au niveau de EditCut. Si maintenant je remplace EditCut par EditCopy, la macro plante au niveau du EditPaste. La macro s'exécute bien en mode pas à pas détaillé. Elle s'exécute aussi si je mets un point d'arrêt qur l'instruction qui pose apparemment problème et que je relance la suite de l'exécution. (d'autre part, sur certains ficheirs test, la macro fonctionne sans pb)
C'est un casse-tête, je ne comprends pas pourquoi ça plante!!! (je précise aussi que cela fonctionnait très bien il y a quelques jours)
Et je ne vois pas non plus comment je pourrais contourner le problème en essayant de construire mon code autrement...
Si quelqu'un a une idée...
Bonsoir Anne,
<<construire mon code autrement...>>
Une idée, c'est d'ailleurs un principe général en VBA : éviter au maximum de
simuler à l'identique une manip manuelle avec ses sélections, déplacement de
curseur, copier/coller. Dans le meilleur des cas cela ralentit l'éxécution
de la procédure, dans les moins bons cas cela plante...
Voir l'instruction que je vous indiquait hier :
SetTaskField Field:="Remarques", Value:="Note dans tache 3", TaskID:=3
Elle écrit une valeur dans un champ tâche, sans le sélectionner.
Etudiez ainsi les méthodes GetField, SetField... dans l'aide en ligne.
Gérard Ducouret [Project MVP]
"Anne" <anne.doctobre@wanadoo.fr> a écrit dans le message de
news:1129300532.451120.236060@z14g2000cwz.googlegroups.com...
Bonjour,
Je relance un peu le sujet d'un précédent post, avec des infos plus
précises.
Il s'agit d'une macro qui effectue un couper/coller entre deux projets.
La macro fonctionne toujours bien en mode pas à pas détaillé. Mais
elle fait planter tout MS Project lorsque je l'exécute.
Voici la macro :
FileOpen Name:¬tiveProject.Path & "fichier2.mpp",
FormatID:="MSProject.MPP"
Projects("fichier1").Activate
SelectRow Row:=1, rowrelative:úlse
EditCut
Projects("fichier2").Activate
SelectEnd
SelectRow Row:=1
EditPaste
En mode exécution "classique", elle plante au niveau de EditCut.
Si maintenant je remplace EditCut par EditCopy, la macro plante au
niveau du EditPaste.
La macro s'exécute bien en mode pas à pas détaillé.
Elle s'exécute aussi si je mets un point d'arrêt qur l'instruction
qui pose apparemment problème et que je relance la suite de
l'exécution.
(d'autre part, sur certains ficheirs test, la macro fonctionne sans pb)
C'est un casse-tête, je ne comprends pas pourquoi ça plante!!!
(je précise aussi que cela fonctionnait très bien il y a quelques
jours)
Et je ne vois pas non plus comment je pourrais contourner le problème
en essayant de construire mon code autrement...
<<construire mon code autrement...>> Une idée, c'est d'ailleurs un principe général en VBA : éviter au maximum de simuler à l'identique une manip manuelle avec ses sélections, déplacement de curseur, copier/coller. Dans le meilleur des cas cela ralentit l'éxécution de la procédure, dans les moins bons cas cela plante... Voir l'instruction que je vous indiquait hier :
SetTaskField Field:="Remarques", Value:="Note dans tache 3", TaskID:=3
Elle écrit une valeur dans un champ tâche, sans le sélectionner. Etudiez ainsi les méthodes GetField, SetField... dans l'aide en ligne.
Gérard Ducouret [Project MVP]
"Anne" a écrit dans le message de news: Bonjour,
Je relance un peu le sujet d'un précédent post, avec des infos plus précises. Il s'agit d'une macro qui effectue un couper/coller entre deux projets.
La macro fonctionne toujours bien en mode pas à pas détaillé. Mais elle fait planter tout MS Project lorsque je l'exécute.
Voici la macro : FileOpen Name:¬tiveProject.Path & "fichier2.mpp", FormatID:="MSProject.MPP"
Projects("fichier1").Activate
SelectRow Row:=1, rowrelative:úlse EditCut
Projects("fichier2").Activate
SelectEnd SelectRow Row:=1 EditPaste
En mode exécution "classique", elle plante au niveau de EditCut. Si maintenant je remplace EditCut par EditCopy, la macro plante au niveau du EditPaste. La macro s'exécute bien en mode pas à pas détaillé. Elle s'exécute aussi si je mets un point d'arrêt qur l'instruction qui pose apparemment problème et que je relance la suite de l'exécution. (d'autre part, sur certains ficheirs test, la macro fonctionne sans pb)
C'est un casse-tête, je ne comprends pas pourquoi ça plante!!! (je précise aussi que cela fonctionnait très bien il y a quelques jours)
Et je ne vois pas non plus comment je pourrais contourner le problème en essayant de construire mon code autrement...
Si quelqu'un a une idée...
Anne
Ce que vous me suggérez, c'est de relever les différentes valeurs des champs des tâches à copier dans le second fichier, grâce à GetField, puis d'effacer les tâches dans le premier projet, et de les recréer à l'identique dans le deuxième?
ça me paraît assez complexe, étant donné que je veux couper-coller une tâche et ses sous-tâches, cela fait bcp d'informations...
Je vais essayer pour voir si cette méthode fonctionne.
Merci.
Ce que vous me suggérez, c'est de relever les différentes valeurs des
champs des tâches à copier dans le second fichier, grâce à
GetField, puis d'effacer les tâches dans le premier projet, et de les
recréer à l'identique dans le deuxième?
ça me paraît assez complexe, étant donné que je veux couper-coller
une tâche et ses sous-tâches, cela fait bcp d'informations...
Je vais essayer pour voir si cette méthode fonctionne.
Ce que vous me suggérez, c'est de relever les différentes valeurs des champs des tâches à copier dans le second fichier, grâce à GetField, puis d'effacer les tâches dans le premier projet, et de les recréer à l'identique dans le deuxième?
ça me paraît assez complexe, étant donné que je veux couper-coller une tâche et ses sous-tâches, cela fait bcp d'informations...
Je vais essayer pour voir si cette méthode fonctionne.
Merci.
Anne
Re-bonjour,
Juste une question subsidiaire : quelle est la différence entre, par exemple : ActiveCell.Task.SetField FieldID:=pjTaskDuration, Value:=... et ActiveCell.Task.Duration=...
Merci. ça pique ma curiosité!
Re-bonjour,
Juste une question subsidiaire :
quelle est la différence entre, par exemple :
ActiveCell.Task.SetField FieldID:=pjTaskDuration, Value:=...
et ActiveCell.Task.Duration=...
Juste une question subsidiaire : quelle est la différence entre, par exemple : ActiveCell.Task.SetField FieldID:=pjTaskDuration, Value:=... et ActiveCell.Task.Duration=...
Merci. ça pique ma curiosité!
Gérard Ducouret
Il n'y en a pas dans ce cas ! Certains champs peuvent faire l'objet d'une affectation de valeur "directe". D'autres exigent une syntaxe plus élaborée.
Gérard Ducouret
"Anne" a écrit dans le message de news: Re-bonjour,
Juste une question subsidiaire : quelle est la différence entre, par exemple : ActiveCell.Task.SetField FieldID:=pjTaskDuration, Value:=... et ActiveCell.Task.Duration=...
Merci. ça pique ma curiosité!
Il n'y en a pas dans ce cas !
Certains champs peuvent faire l'objet d'une affectation de valeur "directe".
D'autres exigent une syntaxe plus élaborée.
Gérard Ducouret
"Anne" <anne.doctobre@wanadoo.fr> a écrit dans le message de
news:1129553348.638618.172810@z14g2000cwz.googlegroups.com...
Re-bonjour,
Juste une question subsidiaire :
quelle est la différence entre, par exemple :
ActiveCell.Task.SetField FieldID:=pjTaskDuration, Value:=...
et ActiveCell.Task.Duration=...
Il n'y en a pas dans ce cas ! Certains champs peuvent faire l'objet d'une affectation de valeur "directe". D'autres exigent une syntaxe plus élaborée.
Gérard Ducouret
"Anne" a écrit dans le message de news: Re-bonjour,
Juste une question subsidiaire : quelle est la différence entre, par exemple : ActiveCell.Task.SetField FieldID:=pjTaskDuration, Value:=... et ActiveCell.Task.Duration=...
Merci. ça pique ma curiosité!
Gérard Ducouret
Je en voyais pas très bien ce que vous voulez faire... Bon, j'ai exécuté la macro et elle fonctionne bien chez moi !
Gérard Ducouret
"Anne" a écrit dans le message de news: Ce que vous me suggérez, c'est de relever les différentes valeurs des champs des tâches à copier dans le second fichier, grâce à GetField, puis d'effacer les tâches dans le premier projet, et de les recréer à l'identique dans le deuxième?
ça me paraît assez complexe, étant donné que je veux couper-coller une tâche et ses sous-tâches, cela fait bcp d'informations...
Je vais essayer pour voir si cette méthode fonctionne.
Merci.
Je en voyais pas très bien ce que vous voulez faire... Bon, j'ai exécuté la
macro et elle fonctionne bien chez moi !
Gérard Ducouret
"Anne" <anne.doctobre@wanadoo.fr> a écrit dans le message de
news:1129534162.421156.151250@g47g2000cwa.googlegroups.com...
Ce que vous me suggérez, c'est de relever les différentes valeurs des
champs des tâches à copier dans le second fichier, grâce à
GetField, puis d'effacer les tâches dans le premier projet, et de les
recréer à l'identique dans le deuxième?
ça me paraît assez complexe, étant donné que je veux couper-coller
une tâche et ses sous-tâches, cela fait bcp d'informations...
Je vais essayer pour voir si cette méthode fonctionne.
Je en voyais pas très bien ce que vous voulez faire... Bon, j'ai exécuté la macro et elle fonctionne bien chez moi !
Gérard Ducouret
"Anne" a écrit dans le message de news: Ce que vous me suggérez, c'est de relever les différentes valeurs des champs des tâches à copier dans le second fichier, grâce à GetField, puis d'effacer les tâches dans le premier projet, et de les recréer à l'identique dans le deuxième?
ça me paraît assez complexe, étant donné que je veux couper-coller une tâche et ses sous-tâches, cela fait bcp d'informations...
Je vais essayer pour voir si cette méthode fonctionne.
Merci.
Anne
Merci d'avoir testé la macro. La macro fonctionnait aussi il y a quelques jours sur tous mes fichiers. Elle fonctionne sur certains fichiers tests également chez moi, mais pas pour les fichiers qui m'intéressent (des plannings existants). C'est justement ce que je ne comprends pas.
Merci d'avoir testé la macro.
La macro fonctionnait aussi il y a quelques jours sur tous mes
fichiers.
Elle fonctionne sur certains fichiers tests également chez moi, mais
pas pour les fichiers qui m'intéressent (des plannings existants).
C'est justement ce que je ne comprends pas.
Merci d'avoir testé la macro. La macro fonctionnait aussi il y a quelques jours sur tous mes fichiers. Elle fonctionne sur certains fichiers tests également chez moi, mais pas pour les fichiers qui m'intéressent (des plannings existants). C'est justement ce que je ne comprends pas.
Gérard Ducouret
Si vos fichiers ne sont pas confidentiels, vous pouvez m'en envoyer un, je ferai le test.
Mon adresse : ducouret point gerard at free point fr
Gérard Ducouret
"Anne" a écrit dans le message de news: Merci d'avoir testé la macro. La macro fonctionnait aussi il y a quelques jours sur tous mes fichiers. Elle fonctionne sur certains fichiers tests également chez moi, mais pas pour les fichiers qui m'intéressent (des plannings existants). C'est justement ce que je ne comprends pas.
Si vos fichiers ne sont pas confidentiels, vous pouvez m'en envoyer un, je
ferai le test.
Mon adresse : ducouret point gerard at free point fr
Gérard Ducouret
"Anne" <anne.doctobre@wanadoo.fr> a écrit dans le message de
news:1129555432.689374.262070@g43g2000cwa.googlegroups.com...
Merci d'avoir testé la macro.
La macro fonctionnait aussi il y a quelques jours sur tous mes
fichiers.
Elle fonctionne sur certains fichiers tests également chez moi, mais
pas pour les fichiers qui m'intéressent (des plannings existants).
C'est justement ce que je ne comprends pas.
Si vos fichiers ne sont pas confidentiels, vous pouvez m'en envoyer un, je ferai le test.
Mon adresse : ducouret point gerard at free point fr
Gérard Ducouret
"Anne" a écrit dans le message de news: Merci d'avoir testé la macro. La macro fonctionnait aussi il y a quelques jours sur tous mes fichiers. Elle fonctionne sur certains fichiers tests également chez moi, mais pas pour les fichiers qui m'intéressent (des plannings existants). C'est justement ce que je ne comprends pas.
Gérard Ducouret
Bonsoir Anne,
Je pense que ce qui peut faire planter votre macro c'est l'éventuelle présence d'un affichage de ressource (actif) à la place d'un affichage de tâche, soit dans le fichier source, soit dans le fichier cible. Une instruction telle que: ViewApply Name:="Diagramme de &Gantt" devrait résoudre le problème. Chez moi ça marche.
Gérard Ducouret
Bonsoir Anne,
Je pense que ce qui peut faire planter votre macro c'est l'éventuelle
présence d'un affichage de ressource (actif) à la place d'un affichage de
tâche, soit dans le fichier source, soit dans le fichier cible.
Une instruction telle que:
ViewApply Name:="Diagramme de &Gantt"
devrait résoudre le problème. Chez moi ça marche.
Je pense que ce qui peut faire planter votre macro c'est l'éventuelle présence d'un affichage de ressource (actif) à la place d'un affichage de tâche, soit dans le fichier source, soit dans le fichier cible. Une instruction telle que: ViewApply Name:="Diagramme de &Gantt" devrait résoudre le problème. Chez moi ça marche.
Gérard Ducouret
Anne
Merci, ça fonctionne! Plus de bug sur MS Project. Merci encore pour votre aide.
Merci, ça fonctionne!
Plus de bug sur MS Project. Merci encore pour votre aide.
Merci, ça fonctionne! Plus de bug sur MS Project. Merci encore pour votre aide.
Gérard Ducouret
Anne, Merci pour le feedback !
Gérard Ducouret
"Anne" a écrit dans le message de news: Merci, ça fonctionne! Plus de bug sur MS Project. Merci encore pour votre aide.
Anne,
Merci pour le feedback !
Gérard Ducouret
"Anne" <anne.doctobre@wanadoo.fr> a écrit dans le message de
news:1129619648.356222.18860@g44g2000cwa.googlegroups.com...
Merci, ça fonctionne!
Plus de bug sur MS Project. Merci encore pour votre aide.