Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème d'exécution de macro

4 réponses
Avatar
Anne
Bonjour,

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.

C'est un casse-t=EAte, je ne comprends pas pourquoi =E7a plante!!!

Et je ne vois pas non plus comment je pourrais contourner le probl=E8me
en essayant de construire mon code autrement...

Si quelqu'un a une id=E9e...

4 réponses

Avatar
Patrice Henrio
"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.

C'est un casse-tête, je ne comprends pas pourquoi ça plante!!!

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...


Peut-être un problème de temporisation, tu demandes à copier avant que tout
soit chargé en mémoire ?
Avatar
Anne
"Peut-être un problème de temporisation, tu demandes à copier avant
que tout
soit chargé en mémoire ?"


Merci pour la réponse.
Je ne suis pas une pro de VBA, et je ne vois pas vraiment comment
résoudre ce pb de temporisation... J'ai essayé Sleep, mais ça ne
fonctionne pas.

Si vous pouviez m'aider encore un peu...
Avatar
Patrice Henrio
"Anne" a écrit dans le message de news:

"Peut-être un problème de temporisation, tu demandes à copier avant
que tout
soit chargé en mémoire ?"


Merci pour la réponse.
Je ne suis pas une pro de VBA, et je ne vois pas vraiment comment
résoudre ce pb de temporisation... J'ai essayé Sleep, mais ça ne
fonctionne pas.

Si vous pouviez m'aider encore un peu...


Il semble malheureusement que doevents n'existe pas en vba.
Il est sans doute possible d'intercaler un message box qui s'afficherai sur
la feuille réceptrice du copier/coller et attendant un appui sur une touche
pour l'utilisateur.

Je te propose cette modif.

>FileOpen Name:¬tiveProject.Path & "fichier2.mpp",
>FormatID:="MSProject.MPP"

>Projects("fichier1").Activate

>SelectRow Row:=1, rowrelative:úlse
MsgBox "avant edit cut",VBOk
>EditCut
MsgBox "après editcut", vbOK

>Projects("fichier2").Activate

>SelectEnd
>SelectRow Row:=1
Msgbox "avant editpaste",vbOk
>EditPaste
Msgbox "après edit paste",vbOK

A partir de là tu pourras voir en mode exécutable ce qui se passe.
Avatar
Anne
Merci.
J'avais en fait déjà essayé la technique des msgbox. J'en avais mis
un peu partout pour voir à quel moment la macro fait planter Project.
Malheureusement, cela ne fonctionne pas.
Le problème doit être complètement tordu, puisque cette macro a
déjà fonctionné, qu'elle fonctionne sur d'autres fichiers, mais pas
sur la vingtaine de fichiers qui m'intéresse.
Merci quand même pour l'aide.