Copier feuille Excel vers un autre classeur qui bloque

Copier feuille Excel vers un autre classeur qui bloque - VB/VBA/VBS - Programmation

Marsh Posté le 09-12-2010 à 15:53:30    

Bonjour à tous,  
 
Je bloque sur une action toute simple, et vous saurez certainement m'aider (je suis débutant sous VBA).
Je souhaite copier une feuille sur laquelle je fais des calcul, d'un classeur vers un autre classeur. Le calcul se fait plusieurs fois (69 fois) et pour chaque calcul je souhaite sauvegarder cette feuille dans un nouveau classeur (avec des nom déjà défini). Donc au final j'aurai un classeur de 69 feuille.
 
Cette opération fonctionne jusqu'à 59eme copier/coller. Au-delà j'ai une erreur "Erreur d'exécution 1004. La méthode Copy de la classe Worksheet a échoué"
 
Je remarque que plus cela avance dans la copie et plus la copie devient lente.
Je pense que c'est un problème mémoire. Car si j'essaye faire un copié coller d'une des feuilles (dans le nouveau classeur) rien ne se passe. Par contre si je ferme ce classeur et que je le rouvre il m'est possible de copié n'importe qu'elle feuille.
 
Merci de votre aide
 
Voici mon code :  
 
Option Explicit
 
Sub COCO()
 
Dim v As Variant
Dim i As Integer
Dim NewFichier As String
   
 
Workbooks.Add
NewFichier = ActiveWorkbook.Name
 
    For i = 1 To 69
     
        v = wParam.Cells(4 + i, 2).Value
        wCalc.Range("Nom" ).Value = v
         
         
        Workbooks("Classeur1.xls" ).Activate
       
     
        wCalc.Copy After:=Workbooks(NewFichier).Sheets(Workbooks(NewFichier).Sheets.Count)
     
        Sheets("Calcul" ).Name = Range("D6" ).Value    
       
 
             
    Next
 
End Sub


Message édité par nass9500 le 09-12-2010 à 15:57:20
Reply

Marsh Posté le 09-12-2010 à 15:53:30   

Reply

Marsh Posté le 09-12-2010 à 17:19:51    

ça peux dépendre le la mémoire de ton PC...
si Excel n'as pas assez de puissance pour gérer un gros nombre de feuille.
 
 
Ton algorythme est cracra comme tout :o
Je suis un extremiste, masi bon tu navigue entre les classeurs de manière dangereuse.
 
il y a des instructions ou tu ne précises pas le workbook ou la worksheet que tu utilise...
 


Sub COCO(wParam As Worksheet, wCalc As Worksheet)
 
Dim i As Integer
   
Dim objNewWorkbook As Workbook
 
Set objNewWorkbook = Workbooks.Add
 
For i = 1 To 69
     
        wCalc.Range("Nom" ).Value = wParam.Cells(4 + i, 2).Value
         
        wCalc.Copy After:=objNewWorkbook.Sheets(objNewWorkbook.Sheets.Count)
         
        WORKBOOK???.Sheets("Calcul" ).Name = WORKBOOK???.WORKSHEET???.Range("D6" ).Value
    Next
End Sub
 
 


Reply

Marsh Posté le 09-12-2010 à 18:50:29    

Salut,question récurrente voir http://support.microsoft.com/kb/210684/en-us

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed