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

Plantage=Mémoire ne peut pas être READ..

5 réponses
Avatar
ephilibert
Private Sub Exporter()
Dim sht As Worksheet
Dim NomSht As String

NomSht = ActiveSheet.Name

If MsgBox(prompt:="L'onglet actif va être exporté vers un
nouveau " & _
" classeur. Continuer ?", Buttons:=vbOKCancel,
Title:="Export") = vbCancel Then _
Exit Sub

Application.EnableEvents = False
Application.DisplayAlerts = False
Application.ScreenUpdating = False

Sheets(1).Activate

ActiveWorkbook.SaveCopyAs "C:\ClasseurTemp.xls"

Workbooks.Open Filename:="C:\ClasseurTemp.xls",
password:="monaco"


For Each sht In ActiveWorkbook.Sheets

If sht.Name <> NomSht Then sht.Delete

Next

Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True

MsgBox prompt:="Opération effectuée avec succés.",
Buttons:=vbInformation, Title:="Export"

End Sub

Le classeur source que je duplique (pour n'en conserver que l'onglet
actif) contient pal mal de modules et des Userform,
si une des Userform a été initialisée avant l'exécution de ce module,
ce code provoque le plantage au moment de la sauvegarde du classeur
source.
J'ai essayé des Unload, des set Userform=Nothing...rien à faire, je ne
comprends pas ce plantage ? Quelqu'un a-t-il une solution ? Merci.

5 réponses

Avatar
JpPradier
Bonjour manu

Une solution différente pour sauver un onglet :

activesheet.copy
ActiveWorkbook.saveas "C:ClasseurTemp.xls"

j-p
Avatar
ephilibert
Merci jp pour ta réponse. En fait je ne procède pas par
Activesheet.copy car je souhaite que le classeur mono-onglet ainsi
créé porte toutes les macros et userforms du classeur source.
En fait je pense que je viens de découvrir l'origine du plantage qui
serait dû à la procédure suivante:

Ouverture du classeur source
Load userform du classeur source
Unload userform du classeur source
SaveCopyAs du classeur source
Load userform du classeur source:...impossible, objet inconnu!!
Avatar
JpPradier
Ok . Essaye de réactiver ton classeur source avant d'appeler l'Userform.

j-p
Avatar
Michel Pierron
Bonjour Manu;
As-tu fait toutes les mises à jour pour ta version d'Excel ?
En général, cela règle le problème de lecture de la mémoire.
MP

"manu" a écrit dans le message de
news:
Private Sub Exporter()
Dim sht As Worksheet
Dim NomSht As String

NomSht = ActiveSheet.Name

If MsgBox(prompt:="L'onglet actif va être exporté vers un
nouveau " & _
" classeur. Continuer ?", Buttons:=vbOKCancel,
Title:="Export") = vbCancel Then _
Exit Sub

Application.EnableEvents = False
Application.DisplayAlerts = False
Application.ScreenUpdating = False

Sheets(1).Activate

ActiveWorkbook.SaveCopyAs "C:ClasseurTemp.xls"

Workbooks.Open Filename:="C:ClasseurTemp.xls",
password:="monaco"


For Each sht In ActiveWorkbook.Sheets

If sht.Name <> NomSht Then sht.Delete

Next

Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True

MsgBox prompt:="Opération effectuée avec succés.",
Buttons:=vbInformation, Title:="Export"

End Sub

Le classeur source que je duplique (pour n'en conserver que l'onglet
actif) contient pal mal de modules et des Userform,
si une des Userform a été initialisée avant l'exécution de ce module,
ce code provoque le plantage au moment de la sauvegarde du classeur
source.
J'ai essayé des Unload, des set Userform=Nothing...rien à faire, je ne
comprends pas ce plantage ? Quelqu'un a-t-il une solution ? Merci.


Avatar
FxM
Bonsoir,

En complément de la réponse de Michel (oui, il faut se lever tôt pour
trouver où il se pourrait que ... :o) ), passe aussi les mises à jour
pour ton système d'exploitation.

@+
FxM



Michel Pierron wrote:

Bonjour Manu;
As-tu fait toutes les mises à jour pour ta version d'Excel ?
En général, cela règle le problème de lecture de la mémoire.
MP

"manu" a écrit dans le message de
news:

Private Sub Exporter()
Dim sht As Worksheet
Dim NomSht As String

NomSht = ActiveSheet.Name

If MsgBox(prompt:="L'onglet actif va être exporté vers un
nouveau " & _
" classeur. Continuer ?", Buttons:=vbOKCancel,
Title:="Export") = vbCancel Then _
Exit Sub

Application.EnableEvents = False
Application.DisplayAlerts = False
Application.ScreenUpdating = False

Sheets(1).Activate

ActiveWorkbook.SaveCopyAs "C:ClasseurTemp.xls"

Workbooks.Open Filename:="C:ClasseurTemp.xls",
password:="monaco"


For Each sht In ActiveWorkbook.Sheets

If sht.Name <> NomSht Then sht.Delete

Next

Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True

MsgBox prompt:="Opération effectuée avec succés.",
Buttons:=vbInformation, Title:="Export"

End Sub

Le classeur source que je duplique (pour n'en conserver que l'onglet
actif) contient pal mal de modules et des Userform,
si une des Userform a été initialisée avant l'exécution de ce module,
ce code provoque le plantage au moment de la sauvegarde du classeur
source.
J'ai essayé des Unload, des set Userform=Nothing...rien à faire, je ne
comprends pas ce plantage ? Quelqu'un a-t-il une solution ? Merci.