Difficultés à coller une plage déjà copiée
Bonjour à tous. C'est Constant30. C'est ma première fois de vous écrire. Il s'agit de copier d'un classeur à un autre une plage de cellules. Tout se passe bien sauf que il y erreur à fin et pas de collage.
BV m'aider.
Merci.
Je joins la macro
Sub Copielistepersonnel()
Dim maplage As Range
Dim taille, position1, position2 As Integer
' prise des données dans calsseur établissement
Workbooks(2).Worksheets(1).Activate
'Oter la protection de la feuille
ActiveSheet.Unprotect
'chargement de la liste
Set maplage = Range("B13:P" & Range("P13").End(xlDown).Row)
taille = Range("P13").End(xlDown).Row - 12
maplage.Select
maplage.Copy
MsgBox ("nombre de ligne source " & taille)
Application.CutCopyMode = False
Set maplage = Selection
'Proteger la feuille
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
' positionnement dans le fichier "FICHIER Général Mutuelle du personnel"
'Oter la protection de la feuille
ActiveSheet.Unprotect
Application.DisplayAlerts = False
Windows("FICHIER Général Mutuelle du personnel.xlsm").Activate
position1 = Range("B3").End(xlDown).Row + 1
MsgBox ("ligne de départ " & position1)
position2 = position1 + taille - 1
MsgBox ("ligne de fin " & position2)
Range("B" & position1 & ":P" & position2).Select
ActiveSheet.Paste
' Range("B" & position1).Paste
' MsgBox ("cellule de départ " & "B" & position1)
Application.DisplayAlerts = True
End Sub
Bonjour Constant30 et bienvenue
De ce que je vois, vous ne pouvez pas copier des cellules, protéger, déprotéger puis coller ces cellules
Essayer de le faire manuellement, vous verrez
Bonsoir JExceL2fr,
Merci pour ta prompte réaction.
Lorsque je masque la re-protection du premier classeur, c'est le même résultat.
Je crois que la ligne qui fait problème c'est :
ActiveSheet.Paste
Comment faire ?
Bonjour,
Non, plusieurs erreurs !
1) l'instruction "Application.CutCopyMode = False" alors que vous venez de copier votre plage
2) la déprotection de la feuille alors que vosu venez de copier des cellules
Tout ça annule la copie et donc créé une erreur lors du collage de "rien"
Voici un code qui devrait fonctionner
Sub Copielistepersonnel()
Dim Wbk2 As Workbook, Sht2 As Worksheet
Dim MaPlage As Range
Dim Taille As Long, Position1 As Long, Position2 As Long
' Définir les variables objet
Set Wbk2 = Workbooks(2)
Set Sht2 = Wbk2.Sheets(1)
' 1) oter les protection
Sht2.Unprotect
ActiveSheet.Unprotect
'chargement de la liste
Set MaPlage = Sht2.Range("B13:P" & Range("P13").End(xlDown).Row)
Taille = Sht2.Range("P13").End(xlDown).Row - 12
' Copier la plage
MaPlage.Copy
MsgBox ("nombre de ligne source " & Taille)
'
With ActiveSheet
Position1 = .Range("B3").End(xlDown).Row + 1
MsgBox ("ligne de départ " & Position1)
Position2 = Position1 + Taille - 1
MsgBox ("ligne de fin " & Position2)
.Range("B" & Position1 & ":P" & Position2).Select
.Paste
End With
'Proteger les feuilles
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sht2.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
' Effacer les variables objet
Set Sht2 = Nothing: Set Wbk2 = Nothing
End SubBonjour JExceL2fr.
"Voici un code qui devrait fonctionner" oui, ça fonctionne à merveille.
Oh merci, grand merci, ça fonctionne super bien. C'est propre. Je suis trop content.
Merci pour le grand coup de main. J'ai également pris par rapport à mes erreurs.
Bonne journée à tous.