Mémoire insuffisante ! (msg récurrent)

nico62370

XLDnaute Nouveau
Bonjour,

J'ai enregistré et modifié le code VBA ci-dessous.
La macro permet de copier et d'enregistrer sous un autre nom une feuille excel.
A chaque lancement le message suivant apparait :
Mémoire Insuffisante.
Le fichier s'enregistre bien, sous le bon nom, dans le bon répertoire.
J'ai essayé quelques pistes laissées sur le forum mais sans succès.

Merci de votre aide.
Voici le code :
Sub copiefacture()

' copiefacture Macro
' Macro enregistrée le 02/05/2007 par nicolas

bill = Sheets("facture").Range("g4").Value
nom = Sheets("facture").Range("e8").Value

ChDir "D:\facture"
Workbooks.Open Filename:="D:\facture\classeur1.xls"
Windows("FACTURATION.xls").Activate
Range("a1:h64").Select
Selection.Copy
Windows("classeur1.xls").Activate
Range("A1").Select
ActiveSheet.Paste
ActiveWindow.ActivateNext
Range("G4").Select
Selection.Copy
ActiveWindow.ActivateNext
Range("G4").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:="D:\facture\archivage\" & nom & "_" & bill & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Application.CutCopyMode = False
ActiveWorkbook.Close
Range("A1").Select
End Sub
 

Davidc57

XLDnaute Occasionnel
Re : Mémoire insuffisante ! (msg récurrent)

Salut,

Essaye de mettre "Application.displayAlerts = false" au début de ton code.

David
 

BrunoM45

XLDnaute Barbatruc
Re : Mémoire insuffisante ! (msg récurrent)

Bonjour tout le monde,

DavidC57 a dit:
Essaye de mettre "Application.displayAlerts = false" au début de ton code
Empêcher une erreur système en empéchant les messages d'alerte de l'application, à mon avis va y avoir un problème :confused:

Nico,
Je pense qu'il faut remplacer toute tes commandes "Windows ..." par Workbooks
Exemple :
Code:
Workbooks("FACTURATION.xls").Activate
A essayer
 

nico62370

XLDnaute Nouveau
Re : Mémoire insuffisante ! (msg récurrent)

Avant tout : merci !
J'ai testé les deux propositions... Le gagnant est : Davidc57.
Je conserve le message d'erreur en modifiant Window par workbooks.

Cependant, je ne sais toujours pas d'où provient cette erreur. Mais à défaut çà fera l'affaire !
 

Dan

XLDnaute Barbatruc
Re : Mémoire insuffisante ! (msg récurrent)

Bonjour,

Petite amélioration de ta macro :

décLare tes variables. Mets en début de macro
Code:
Dim bill as string, nom as string
Remplace
Code:
Range("a1:h64").Select
Selection.Copy
par
Code:
Range("a1:h64").Copy
et
Code:
Range("G4").Select
Selection.Copy
par
Code:
Range("G4").Copy
et
Code:
 Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
 False, Transpose:=False
 Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
 False, Transpose:=False
par
Code:
with Selection
.PasteSpecial Paste:=xlValues
.PasteSpecial Paste:=xlFormats
end with
A te lire

Dan
 
Dernière édition:

nico62370

XLDnaute Nouveau
Re : Mémoire insuffisante ! (msg récurrent)

Merci DAN de tes conseils.
çà s'implifie le code. Et en plus çà fonctionne. Super.

Dim.... kezaco ? akoisasser ? Merci.
 

Dan

XLDnaute Barbatruc
Re : Mémoire insuffisante ! (msg récurrent)

re,

DIM est l'instruction à utiliser pour déclarer une variable. Cela permet au programme de bien utiliser la mémoire qui sera allouée pour exécuter ta macro et donc d'augmenter la rapidité.

C'est sûr qu'il e faut pas se tromper de variable sans quoi ton programme peut bugguer ou ralentir (même si tu ne vois rien)

Le sujet est assez vaste, vois donc l'aide de VBA dans "Déclaration de variables" mais aussi sur le wiki de mon ami Michelxld ( dont c'est l'anniversaire aujourd'hui !).--> https://www.excel-downloads.com/threads/ref-wiki-6-de-michelxld-doublons-tris-filtres-variables-fichiers-fermes-acces.92374/

A bientôt

Dan
 

Discussions similaires


Haut Bas