La méthode Pastespecial de la classe range à échoué
M
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 ?
Merci3
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 SubCdlt,