VBA: Erreur d'exécution

pascal82

XLDnaute Occasionnel
Bonjour à tous

Mon programme me pose des problèmes.
Il génére :
«Erreur d’exécution ‘-2147417848(80010108)’ : La méthode ‘PasteSpecial de l’objet ‘Range’ a échoué. »
De plus a la fermeture du fichier : Cette image est trop grande et va être tronquée.

Il y a de nombreux copier/ coller dans le code et depuis de tente de vider le presse papier selon différentes instructions mais rien ni fait, soit les instructions sont incomplètes soit le problème est ailleurs.
Je cherche désespéramment une solution.

Merci Par avance.

Code:
Private Declare Function OpenClipboard Lib "user32" _
    (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub vide()
 On Error Resume Next
 Application.CommandBars("Clipboard").Controls(4).Execute
 End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
Sub Vider()
    OpenClipboard 0
    EmptyClipboard
    CloseClipboard
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ClearClipboard()
Dim oDataObject As DataObject

Set oDataObject = New DataObject
oDataObject.SetText ""
oDataObject.PutInClipboard

Set oDataObject = Nothing
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub ESSAIS()
Deb = Timer


   Application.ScreenUpdating = False
   
      For I = 1 To 20
    decal = 45 * I
    
    Application.CutCopyMode = False
    Application.Run "'Stade2&5.xlsm'! vide"
    Application.Run "'Stade2&5.xlsm'! Vider"
    
    Sheets("A").Range("A20:AS1139").Offset(0, decal).Copy
    Sheets("1").Range("A20").PasteSpecial Paste:=xlPasteValues
    
    Application.Run "'Stade2&5.xlsm'!TestX14"
    Application.Run "'Stade2&5.xlsm'! vide"
    Application.Run "'Stade2&5.xlsm'! Vider"
    Application.Run "'Stade2&5.xlsm'! ClearClipboard"
    
     
    Range("BA20:BA1139").Copy
    Range("DE20").Offset(0, I).PasteSpecial Paste:=xlPasteValues
    
    Range("BE17:CX17").Copy
    Range("EF1").Offset(I - 1, 0).PasteSpecial Paste:=xlPasteValues

        Next I
 
    Application.ScreenUpdating = True
        Application.CutCopyMode = True
                 ActiveWorkbook.Save
              MsgBox "J'ai bossé " & Timer - Deb & " seconde"
  
     End Sub
 

youky(BJ)

XLDnaute Barbatruc
Re : VBA: Erreur d'exécution

Salut,
Peut être comme ceci . . .
vidage aprés chaque boucle mais peut être voir aussi à réduire la taille des images
Bruno
Code:
Sub ClearClipboard()
Dim oDataObject As DataObject

Set oDataObject = New DataObject
oDataObject.SetText ""
oDataObject.PutInClipboard

Set oDataObject = Nothing
End Sub


Sub ESSAIS()
Deb = Timer

   Application.ScreenUpdating = False
   
      For I = 1 To 20
    decal = 45 * I
       
    Sheets("A").Range("A20:AS1139").Offset(0, decal).Copy
    Sheets("1").Range("A20").PasteSpecial Paste:=xlPasteValues  
     
    Range("BA20:BA1139").Copy
    Range("DE20").Offset(0, I).PasteSpecial Paste:=xlPasteValues
    
    Range("BE17:CX17").Copy
    Range("EF1").Offset(I - 1, 0).PasteSpecial Paste:=xlPasteValues
ClearClipboard
        Next I
 
    Application.ScreenUpdating = True
        Application.CutCopyMode = True
                 ActiveWorkbook.Save
              MsgBox "J'ai bossé " & Timer - Deb & " seconde"
  
     End Sub
 

youky(BJ)

XLDnaute Barbatruc
Re : VBA: Erreur d'exécution

Re,
Tu Decales la colonne chaque fois de 45 et cela 20 fois donc 45*20=900
A savoir les version inferieur à Excel 2007 sont limitées à 256 colonnes. A voir . . .
Lors du bug passe direct ton curseur sur I (il affichera le N° colonne) ou sur DECAL
Bon WE
Bruno
 

pascal82

XLDnaute Occasionnel
Re : VBA: Erreur d'exécution

Re,

Pour avancer, je réalise un enregistrement et vide le presse papier après chaqu'une des boucles, j’appel les macros directement sans passer par Run, maintenant autre erreur: Excel n’a pas suffisamment de ressource.
Je vais nettoyer, passer le défragmenteur et essayer de nouveau.

A+
 

pascal82

XLDnaute Occasionnel
Re : VBA: Erreur d'exécution

Bonjour à tous,

Un grand merci à tous pour votre aide. Comme je rencontre toujours les mêmes erreurs, je vais réduire le nombre de boucles avant l'apparition du message d'erreur. C'est une solution temporaire à défaut de resoudre le problème de fond, mais je pense ne pas etre le seul à rencontrer le defaut.

Bon dimanche.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG