Application.ScreenUpdating = False ne fonctionne pas

Bonjour,

Je constate que sur une de mes macro la commande Application.ScreenUpdating = False ne fonctionne pas.

Mon code enregistre-sous un objet Word incorporé à une feuille Excel, dans le disque dur.
Sub SaveAs()

Dim sh As Shape
Dim objWord As Object ''Word.Document
Dim objOLE As OLEObject
Dim CheminDefaut As String
Dim NomPers As String

Application.ScreenUpdating = False

CheminDefaut = CreateObject("WScript.Shell").specialFolders("Desktop") & "\"

    Set sh = ActiveSheet.Shapes("NouveauNom")

    sh.OLEFormat.Activate
    ActiveSheet.Range("A1").Select

    Set objOLE = sh.OLEFormat.Object

    Set objWord = objOLE.Object

    objWord.SaveAs2 Filename:=CheminDefaut & "Mon document " _
    & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hhmmss") _
    & ".docx", FileFormat:=wdFormatXMLDocument  ''1=wdFormatTemplate

End Sub

Je constate que la commande Application.ScreenUpdating = False permet bien de désactiver la MAJ de l'écran pour d'autres instructions mais pas pour la commande qui concerne l'objet OLEFormat pour laquelle je vois un mix d'écran Excel, objet Word, retour sur Excel... pas très esthétique..

Autre point, lorsque j'exécute le débogage en pas à pas, j'avance de ligne en ligne jusqu'à la ligne "sh.OLEFormat.Activate", où tout le reste de la macro s'exécute d'un coup. En cherchant un peu en ligne je n'ai pas trouvé de raison à ça.

Est-ce que par hasard quelqu'un pourrait m'éclairer ?

Merci d'avance!

Bonjour,

Pas besoin de ScreenUpdating :

Option Explicit
Sub MySaveAs()
'
Dim shp As Shape
Dim objWord As Object ''Word.Document
Dim objOLE As OLEObject
Dim Chemin As String
Dim NomDoc As String

    Chemin = CreateObject("WScript.Shell").specialFolders("Desktop") & "\"
    NomDoc = Chemin & "Mon document " & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hhmmss") & ".docx"
    Set shp = Worksheets("Feuil1").Shapes("NouveauNom")
    Set objOLE = shp.OLEFormat.Object
    Set objWord = objOLE.Object
    objWord.SaveAs Filename:=NomDoc, FileFormat:=wdFormatXMLDocument  ''1=wdFormatTemplate

End Sub

Bonjour Patrice,

Merci beaucoup pour ton retour et ta proposition qui a l'air d'être adéquate.

J'ai ce message d'erreur en appliquant ton code : "Impossible de lire la propriété objet de la classe OLEObject."

EDIT : je constate que quand j'ouvre l'objet (manuellement ou par macro) et que je le referme ensuite, la macro fonctionne. C'est pour cette raison que j'étais passé par l'activation de l'objet, puis la sélection d'une cellule pour quitter la sélection.

Mais c'est précisément cette sélection qui génère l'affichage non souhaité.

Aurais-tu une solution pour contourner ce problème ?

Merci de ton aide !

Bonjour,

Je me permets de relancer ce sujet, si quelqu'un a une solution à proposer.

Merci d'avance de votre contribution !

Rechercher des sujets similaires à "application screenupdating false fonctionne pas"