Déprotéger certaines cellules pour éxecution d'une macro

geo3701 Messages postés 60 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un léger soucis. J'ai protéger des cellules en écriture dans ma feuille, mais normalement le filtre est autorisé. Je lance donc une macro qui remet tous mes filtres "à zéro".
Sauf que du coup, à cause de la protection, la macro bloque.
J'ai vu par ci par là des unprotect ou autres.
En fait il faudrait juste que les protections sautent le temps de l'éxecution de la macro, mais je ne sais pas comment procéder.

Merci d'avance

3 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    « à cause de la protection, la macro bloque. » Est-tu sûr que ce soit à cause de la protection ?

    Peux-tu mettre ton fichier sur cjoint (Comment utiliser cjoint) ou à défaut le texte de ta macro dans ton prochain message ?
    0
    1. geo3701 Messages postés 60 Statut Membre 1
       
      Voici
      ong_tous est une fonction appelant une sélection d'onglets

      Sub defiltre()

      Windows(nom_fich).Activate


      For Each sh In Worksheets(ong_tous)

      If sh.Name = "SAS" Then

      sh.Activate
      Range("a1:w1").Select
      Selection.AutoFilter =>retire le filtre sur toute la ligne
      Selection.AutoFilter => le remet (pour avoir la petite flèche en bas à droite de chaque cellule de cette ligne)

      Else

      sh.Activate
      Range("a1:v1").Select
      Selection.AutoFilter
      Selection.AutoFilter

      End If

      Next sh

      Sheets("PLANNING").Activate
      Range("a9:q9").Select
      Selection.AutoFilter
      Selection.AutoFilter
      0
    2. geo3701 Messages postés 60 Statut Membre 1
       
      et oui je suis sûr car en l'otant manuellement tout fonctionne
      0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Re,

    Ta méthode pour enlever et remettre le filtre n'est pas bonne :
    sh.Activate
    Range("a1:w1").Select
    Selection.AutoFilter 'retire le filtre sur toute la ligne
    Selection.AutoFilter 'le remet (pour avoir la petite flèche en bas à droite de chaque cellule de cette ligne)
    Il faut utiliser :
    sh.Activate
    If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilter 'retire le filtre
    Range("a1:w1").AutoFilter 'le remet
    0
    1. geo3701 Messages postés 60 Statut Membre 1
       
      Merci beaucoup. Je vais essayer de ce pas
      0
    2. geo3701 Messages postés 60 Statut Membre 1
       
      Ca me met toujours
      "erreur 1004:
      vous ne pouvez executer cette commande sur une feuille protégée. pour pouvoir l'éxecuter, vous devez d'abord ôter la protection de la feuille (onglet révision, groupe modifications, bouton ôter la protection de la feuille). vous serez peut-être invité à taper un mot de passe.

      PS: pour la protection des cellule, je n'ai pas utilisé de mdp
      0
    3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Essaies :
      sh.Activate
      ActiveSheet.Unprotect
      If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilter.Range.AutoFilter 'retire le filtre
      Range("a1:w1").AutoFilter 'le remet
      ActiveSheet.Protect
      0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    met-toi en enregistrement de macro pour avoir le code de protection et déprotection.
    Et si tu regardes l'aide sur .protect tu vois que tu peux ajouter le paramètre UserInterfaceOnly=true : seul l'utilisateur est bloqué par la protection, pas les macros.

    eric
    0