Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 La methode PasteSpecial de la classe range a echoué

KTM

XLDnaute Impliqué
Bonsoir Chers tous
Aidez moi à comprendre et corriger la macro ci dessous
Elle me renvoie une erreur que je comprends pas Merci
VB:
Sub Macro1()
Dim f As Worksheet, fichier$, chemin$

Application.ScreenUpdating = False
Set f = Sheets("St2")
    f.Visible = True
    f.Unprotect "mdp"
    chemin = ThisWorkbook.Path & "\Stables\"
    If Dir(chemin, vbDirectory) = "" Then MkDir chemin
    fichier = "Statut"
    f.Range("A1:P42").Copy
    Workbooks.Add (xlWBATWorksheet)
With ActiveWorkbook
        With .Worksheets(1).Cells(3, 1)
            .PasteSpecial Paste:=xlPasteValues
            .PasteSpecial Paste:=xlPasteFormats
        End With
        Application.CutCopyMode = False
                Application.ScreenUpdating = False
                Application.DisplayAlerts = False
.SaveAs chemin & fichier, 51
.Close
End With
End Sub
 

Jean-Eric

XLDnaute Occasionnel
Bonjour,
C'est quoi le souci dans ta procédure et sur ce forum ?
Cdlt.
VB:
Sub Macro1()
Dim f As Worksheet, fichier As String, chemin As String
    Application.ScreenUpdating = False
    chemin = ActiveWorkbook.Path & "\Stables\"
    If Dir(chemin, vbDirectory) = "" Then MkDir chemin
    fichier = "Statut.xlsx"
    Set f = ActiveWorkbook.Worksheets("St2")
    With f
        .Visible = True
        .Unprotect "mdp", userinterfaceonly:=True
        .Range("A1:P42").Copy
    End With
    Workbooks.Add (xlWBATWorksheet)
    With ActiveWorkbook
        With .Worksheets(1).Cells(3, 1)
            .PasteSpecial Paste:=xlPasteValues
            .PasteSpecial Paste:=xlPasteFormats
        End With
        Application.CutCopyMode = False
        .SaveAs chemin & fichier, 51
        .Close
    End With
End Sub
 

fanch55

XLDnaute Barbatruc
Salut,
userinterfaceonly:=True ne sert que pour la protection et est particulier .

Comme @job75 , j'ai testé la macro fournie, elle fonctionne correctement chez moi , feuille protégée ou non .

Si vous pouviez faire une capture du message d'erreur de votre macro initiale, cela nous permettrait de vous donner des conseils appropriés , j'insiste ...

Effectivement, s'il y a une quelconque interaction applicative entre le copy et le paste ( surtout en mode pas à pas du vba où on a tendance à cliquer rapidement à l'endroit où devrait se trouver le bouton pas à pas sans vérifier la fenêtre affichée ), le paste aura toute les chances d'aboutir en erreur 1004.
Le seul conseil que je pourrai vous donner est de faire le f.Range("A1:P42").Copy
juste avant la séquence de paste .
 

job75

XLDnaute Barbatruc
Oki, tout s'éclaire avec le fichier :
C'est le Workbook_deactivate qui interagit ....
déplacez le .copy avant le Paste résout le pb ...
Eh oui, on peut aussi ajouter les Application.EnableEvents :
VB:
    Application.EnableEvents = False
    Workbooks.Add (xlWBATWorksheet)
    Application.EnableEvents = True
 

Pièces jointes

  • Source.xlsm
    22.3 KB · Affichages: 5

Discussions similaires

Réponses
0
Affichages
889
Réponses
4
Affichages
670
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…