Oter et remettre la protection juste le temps d'une macro

Bonjour,

Je viens de lire un post récent sur le forum :

Quand tu exécutes ta macro, tu peux désactiver la protection dans celle-ci :

ActiveSheet.protect "mdp"

Donc avec ce script on peut bien enlever la protection sur une feuille le temps (milisecondes) que la macro s'exécute ?

par CODE: TOUT SELECTIONNER, on entend quoi exactement ?

Car je me souviens avoir eu un problème avec une macro si les cellules étaient protégées.

Merci pour toute précision.

Vincent

Bonsoir

vincentt a écrit :

Donc avec ce script on peut bien enlever la protection sur une feuille le temps (milisecondes) que la macro s'exécute ?

Exact

vincentt a écrit :

par CODE: TOUT SELECTIONNER, on entend quoi exactement ?

Cela ne fait pas partie du code à recopier (regardes le haut de la fenêtre contenant le code de la macro)

Voilà à quoi peut ressembler le code qui permet de déprotéger/protéger ta feuille

Sub Ma_Macro()
  ActiveSheet.Unprotect "mdp"   'ou mdp est ton mot de passe
  '
  ' ta macro
  '
  'Pense bien à remettre le mot de passe à la fin de l'exécution de la macro
  ActiveSheet.Protect "mdp"
End Sub

Ok merci bien, c'est simple et très utile !

Vincent

Bonsoir,

Chez moi ça marche super bien pour une macro ultra longue,

mais une qui me permet de supprimer une ligne uniquement ne fonctionne pas !!! :'( :'(

Quelqu'un sait il pourquoi ???

MA MACRO :

Sub SUPPRIME_FACTURE()

' SUPPRIME_FACTURE Macro : Supprime la première ligne de facturation inscrite dans le tableau

' Touche de raccourci du clavier: Ctrl+Maj+D

ActiveSheet.Unprotect ""

If MsgBox("Vous êtes sur le point de supprimer DEFINITIVEMENT votre 1ère ligne de tableau !" & Chr(10) & Chr(10) & "Êtes vous sûr de bien vouloir le faire ?", vbExclamation + vbOKCancel, "ATTENTION ! ! ! DANGER SAISIE !") = True Then

ActiveSheet.Rows("4:4").Select

ActiveSheet.Rows("4:4").Delete

End If

ActiveSheet.Range("A4").Select

ActiveSheet.Protect ""

End Sub

Merci

Bonjour

Modifie ta macro

Sub SUPPRIME_FACTURE()
' SUPPRIME_FACTURE Macro : Supprime la première ligne de facturation inscrite dans le tableau
' Touche de raccourci du clavier: Ctrl+Maj+D

  ActiveSheet.Unprotect ""

  If MsgBox("Vous êtes sur le point de supprimer DEFINITIVEMENT votre 1ère ligne de tableau !" & Chr(10) & Chr(10) & "Êtes vous sûr de bien vouloir le faire ?", vbExclamation + vbOKCancel, "ATTENTION ! ! ! DANGER SAISIE !") = vbOK Then
    ActiveSheet.Rows("4:4").Delete
  End If
  ActiveSheet.Range("A4").Select

  ActiveSheet.Protect ""

End Sub

Bonjour à tous,

J'ai un problème similaire cependant ma macro intervient sur une autre feuille du classeur (feuille 1), du coup quand la macro est déclenché en feuille 2 elle bug car elle ôte le mot de passe sur la feuille 2 mais pas sur la 1...

En d'autre terme, existe-il quelque chose d'autre que "activesheet" et qui pourrait s'activer à tout le classeur ?

Merci d'avance pour votre aide

Bonjour

Pas glop glop de squatter un post (mais pas grave)

Dans ton cas tu peux faire

Sub Macro()
  Sheets("Feuille 1").Unprotect Password:=""
  Sheets("Feuille 2").Unprotect Password:=""
  '
  ' Suite de la macro
  '
  Sheets("Feuille 1").Protect Password:=""
  Sheets("Feuille 2").Protect Password:=""
End Sub

Protection et dé-protection sans mot de passe

D'autres possibilités (il doit en exister d'autres)

Option Explicit

Sub ProtectionToutesFeuilles()
Dim Ws As Worksheet

  For Each Ws In Sheets
    Ws.Unprotect Password:=""
  Next Ws
End Sub

Sub DeprotectionToutesFeuilles()
Dim Ws As Worksheet

  For Each Ws In Sheets
    Ws.Protect Password:=""
  Next Ws
End Sub

Sub ProtectionCertainesfeuilles()
Dim Ws As Worksheet

  For Each Ws In Sheets(Array("Feuil2", "Feuil3"))
    Ws.Protect Password:=""
  Next Ws

End Sub

Sub DeprotectionCertainesfeuilles()
Dim Ws As Worksheet

  For Each Ws In Sheets(Array("Feuil2", "Feuil3"))
    Ws.Unprotect Password:=""
  Next Ws

End Sub

Bonjour Banzai,

Merci pour cette réponse, je me suis dit qu'en squattant un poste ça éviterait d'en avoir dix mille sur le même sujet et au moins qu'une personne comme moi qui cherche une réponse aura tout réunis dans un seul et même poste

Pour en revenir au code avec mot de passe, ma macro fonctionne mais un bug d'affichage se produit à chaque fois que je tape une lettre dans ma textbox. En fait à chaque lettre tapé sur la feuille 2 la feuille 1 apparaît une fraction de seconde en fond et disparait...

Une idée du pourquoi ?

Cdlt

Thomas

Bonjour

N'appuie pas sur "Citer" pour répondre à un message, cela encombre le post pour rien

Tu as un bouton "Répondre" en bas à gauche du dernier message

Thomashty a écrit :

Une idée du pourquoi ?

Je pense que cela vient de la protection et/ou de la dé-protection

Mais ce que je ne comprends pas c'est pourquoi il y a cette protection/dé-protection à chaque lettre

Ton fichier serait utile

Je vous laisse voir le fichier en PJ

Bien cordialement

TH

Bonjour

Modifie le début de la macro

Private Sub TextBox1_Change()

  Application.ScreenUpdating = False

  Sheets("Liste de documents").Unprotect Password:="toto"
  Sheets("Zone de recherche").Unprotect Password:="toto"
 'ActiveSheet.Unprotect "toto"
  Dim Tablo() As String
  Dim i As Integer

  j = 0

Excellent !! Merci beaucoup Banzaï

Cordialement

Thomas

Rechercher des sujets similaires à "oter remettre protection juste temps macro"