La méthode Pastespecial de la classe range à échoué

Bonjour à tous,

Je voudrais créer un formulaire sans userform qui rentre les données dans la colonne d'une des autres feuilles (classées par mois et protegées) suivant la date du jour affiché dans le formulaire. j'utilise un copier coller classique.

Voici mon code

Sub Formulaire_Essai()

Application.ScreenUpdating = False

Dim ws As Worksheet

Worksheets("Formulaire").Range("E5:E28").Copy

For Each ws In ThisWorkbook.Worksheets

  If ws.Name <> "Formulaire" Then

    For Each C In ws.Range("E4:AI4")

        If C.Value = Worksheets("Formulaire").Range("C3").Value Then
          ws.Unprotect ("maxime")
            C.Offset(1, 0).PasteSpecial Paste:=xlPasteValues
          ws.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="maxime"
        End If

     Next C

   End If

Next ws
Sheets("Formulaire").Activate
Range("E5:E26").ClearContents

Application.ScreenUpdating = False

End Sub

Le problème étant que quand j'enlève les ws.Unprotect et ws.Protect du code celui ci fonctionne très bien et quand je les mets le il bloque au pastespecial et m'affiche "La méthode Pastespecial de la classe range à échoué"... Auriez-vous une idée de ce qui peut causer cela ?

Merci

Bonjour,

Je pense que le fait de déprotéger libère le presse-papier (ou annule le mode cutcopy) rendant impossible le collage. Voici un essai :

Sub Formulaire_Essai()

Dim ws As Worksheet

Application.ScreenUpdating = False
with Worksheets("Formulaire")
    set r = .Range("E5:E28")
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> .name Then
            For Each C In ws.Range("E4:AI4")
                If C.Value = .Range("C3").Value Then
                    ws.Unprotect "maxime"
                    C.Offset(1, 0).resize(r.count, 1).value = r.value
                    ws.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="maxime"
                End If
            Next C
        End If
    Next ws
    .Activate
end with
r.resize(r.count - 2, 1).ClearContents
Application.ScreenUpdating = False

End Sub

Cdlt,

Rechercher des sujets similaires à "methode pastespecial classe range echoue"