dé-protéger les feuilles le temps de l'exécution d'une macro puis re-protéger

pascal21

XLDnaute Barbatruc
Code:
Sub sauvegardes()
Application.ScreenUpdating = False
On Error Resume Next
With Sheets("Evenements")
.Activate
.Range("A5:I300").Select
    Application.CutCopyMode = False
    Selection.Copy
   End With
Ligne = Sheets("Sauvegardes évenements").[A65000].End(xlUp).Offset(2, 0).Row
Sheets("Sauvegardes évenements").Cells(Ligne, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      
With Sheets("Récap.")
.Activate
 .Range("a1:k1,a5:k500").Select
 Application.CutCopyMode = False
    Selection.Copy
Sheets("Sauvegardes récap.").[A65000].End(xlUp).Offset(2, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
   

With Sheets("Récap.")
.Activate
.Range("a1").Select
Selection.Copy
Sheets("analyses").[A65000].End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      
      
  With Sheets("Récap.")
.Activate
 .Range("k4").Select
 Selection.Copy
Sheets("analyses").[A65000].End(xlUp).Offset(0, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
          
        
    With Sheets("Récap.")
.Activate
  .Range("e2").Select
 Selection.Copy
Sheets("analyses").[A65000].End(xlUp).Offset(0, 4).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
            
      
     With Sheets("Récap.")
.Activate
  .Range("l1").Select
 Selection.Copy
Sheets("analyses").[A65000].End(xlUp).Offset(0, 7).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
           
       
     With Sheets("Récap.")
.Activate
  .Range("m1").Select
 Selection.Copy
Sheets("analyses").[A65000].End(xlUp).Offset(0, 8).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
           
       
     With Sheets("Récap.")
.Activate
       .Range("h2").Select
 Selection.Copy
Sheets("analyses").[A65000].End(xlUp).Offset(0, 9).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      End With
      End With
   End With
   End With
   End With
   End With
   End With
   With Sheets("récap.")
   .Activate
   .Range("k4").Value = ClearContents
   End With
   
      With Sheets("Evenements")
   .Activate
   .Range("A5:a300,c5:d300,i5:i300").Select
    Application.CutCopyMode = False
 Selection.ClearContents
 
  .Range("a5").Select
     End With
Application.ScreenUpdating = True
    
  End Sub
bonsoir le forum
j'utilise ce code dans un module pour copier des données dans différentes feuilles (il va très bien même si il n'est pas optimisé au maximum)
j'ai mis en place une protection sans mot de passe de certaines cellules sur les feuilles du classeur
le problème est que le code ne se fait plus à cause de la mise en place de la protection
j'ai esayé de placer quelques unprotect par ci; par là mais je suis un peu perdu
pouvez m'aider
donc je souhaiterais couper la protection le temps de l'exécution de la macro puis que la protection se remette en place à la fin de la macro
je souhaiterais avoir ce type de protection avec la possibilité de filtres automatiques et ne pas pouvoir sélectionner les cellules protégées
Code:
 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
merci de votre aide
 

MJ13

XLDnaute Barbatruc
Re : dé-protéger les feuilles le temps de l'exécution d'une macro puis re-protéger

Bonjour Pascal

Et si tu debuggait ton code, ce serait plus simple pour toi de comprendre où placer ton code de déprotection :confused:.
 

pascal21

XLDnaute Barbatruc
Re : dé-protéger les feuilles le temps de l'exécution d'une macro puis re-protéger

bonsoir MJ13
tu as sous aucun doute raison
et c'est pour celà que je cherche et que j'ai trouvé comment déprotéger toutes les feuilles j'utilise ce code que je mets en début de macro
Code:
Dim ws As Worksheet
For Each ws In Sheets
ws.Unprotect
Next
me reste à trouver comment reprotéger les feuilles qui avaient une protection
 

MJ13

XLDnaute Barbatruc
Re : dé-protéger les feuilles le temps de l'exécution d'une macro puis re-protéger

Re

me reste à trouver comment reprotéger les feuilles qui avaient une protection

Il faudrait déjà boucler au début sur toutes les feuilles, faire une liste et voir si elles sont protègées, puis de les remettre en protection à la fin.
 

pascal21

XLDnaute Barbatruc
Re : dé-protéger les feuilles le temps de l'exécution d'une macro puis re-protéger

re
pour déprotéger et reprotéger c'est bon j'ai trouvé
il y a juste les copies de commentaires d'une feuille à l'autre qui ne veulent pas se faire
je vais debuguer pour voir si je comprends quelque chose
j'ai compris ce qui empêche la copie des commentaires je vous le donne en mille c'est la protection!!!!
la copie des commentaires est activée l'activation de la feuille
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : dé-protéger les feuilles le temps de l'exécution d'une macro puis re-protéger

Bonsoir, salut MJ :)
Pourquoi faire des copier/coller si tu ne transfères que les valeurs ?
Code:
Sub sauvegardes()
With Sheets("Evenements")
    Ta = .Range("A5:I300").Value
    With Sheets("Sauvegardes évenements")
        L = .Range("A65000").End(xlUp).Row
        .Unprotect
        .Cells(L + 2, 1).Resize(UBound(Ta, 1), UBound(Ta, 2)) = Ta
        .Protect
    End With
    .Unprotect
    .Range("A5:a300,c5:d300,i5:i300").ClearContents
    .Protect
End With
With Sheets("Récap.")
    Tb = .Range("a1:k1").Value
    Tc = .Range("a5:k500").Value
    Td = .Range("A1").Value
    Te = .Range("K4").Value
    Tf = .Range("E2").Value
    Tg = .Range("L1").Value
    Th = .Range("M1").Value
    Ti = .Range("H2").Value
    With Sheets("Sauvegardes récap.")
        L = .Range("A65000").End(xlUp).Row
        .Unprotect
        .Cells(L + 2, 1).Resize(1, UBound(Tb, 2)) = Tb
        .Cells(L + 4, 1).Resize(UBound(Tc, 1), UBound(Tc, 2)) = Tc
        .Protect
    End With
    With Sheets("analyses")
        L = .Range("A65000").End(xlUp).Row
        .Unprotect
        .Cells(L + 1, 1) = Td
        .Cells(L + 1, 4) = Te
        .Cells(L + 1, 5) = Tf
        .Cells(L + 1, 8) = Tg
        .Cells(L + 1, 9) = Th
        .Cells(L + 1, 10) = Ti
        .Protect
    End With
    .Unprotect
    .Range("K4").ClearContents
    .Protect
End With
End Sub
Il y a peut-être qq erreurs d'adresse...à vérifier donc
Déclares les variables (je ne sais ce que tes cellules contiennent...)
A+
kjin
 

pascal21

XLDnaute Barbatruc
Re : dé-protéger les feuilles le temps de l'exécution d'une macro puis re-protéger

bonsoir kjin et merci
écrire le code comme je l'ai fais est à ma portée
l'écrire comme tu l'as gentiment fait n'est plus de mes compétences
d'ailleurs je ne reconnais même plus le sens du code
bonne soirée; là je vais à la soupe, c'est le 2eme rappel et si je ne veux pas manger froid .....................lol!!!!!!!!
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 069
Membres
103 453
dernier inscrit
Choupi