EXCEL: protection feuilles excel

Bonjour à tous,

voila mon petit soucis, dans mon ficher excel j'ai 240 feuilles et je voudrais les protéger.

Sauf que pour ma feuille 1 je protège toute ma feuille (donc ça j'ai su le faire) mais après de la feuille 2 à 240 je voudrais protéger seulement que quelques colonnes et je ne sais comment faire cela, mise à part le faire une par une ( mais si je pouvais éviter!).

Alors si quelqu'un a une idée, je suis preneur.

Merci a tous, @+
Configuration: Windows XP
Windows 2000
Excel 2000 et 2007

15 réponses

  1. Pour tous vos problèmes avec Excel, un site à ne pas manquer :

    https://forum.excel-pratique.com/
    1
    1. Contributeur
      Gepsyc

      Donc, ici, on est des cons ?
      0
    2. Contributeur
      @michel_mBonjour Michel

      suite à ton coup de gueule bien compréhensible, et par curiosité, je suis allé voir son forum

      y pas à fouetter un chat

      Amicalement
      @ bientôt sur le Forum
      0
  2. Salut,

    En fait par défaut toutes les cellules des feuilles sont verrouillées dés lors que tu protèges la feuille par outils/protection.

    Si c'est la même colonne sur chaque feuille que tu souhaites deverrouiller, ou la même action

    toutes tes feuilles doivent être déprotégées

    Cliques sur la première feuille que tu souhaites traiter puis sur l'onglet de la feuille activée, clic droit et sélectionner toutes les feuilles.

    tout ce que tu feras sur la première feuille sera automatiquement reproduit en même temps sur toutes tes feuilles.

    Ensuite clic droit sur l'onglet de feuille et dissocier les feuilles. Pour la protection de chaque feuille hélas tu devras procéder feuille par feuille ou passer en VBA

    A+
    0
    1. Oui merci pour ta réponse,
      c'est bien ce qu'il me semblait, je dois le faire feuille par feuille (sa va mettre des heures!).
      Et je ne connais pas les assez bien les macros pour le faire.
      Tant pis.

      Merci quand même, @+
      0
      1. Contributeur
        Salut Wilfried, slamduck, Mike of Toulouse ( ou à coté?)

        Wilfried: effectivement, à part Myta ex-XLD!

        Bon,Slam.

        ci dessous petite macro du Dimanche "après vêpres", les colonnes A à E restent verrouillées (tu n'avais pas précisé...):

        Sub proteger()
        nbre = Sheets.Count
        For cptr = 1 To nbre
            With Sheets(cptr)
                .Cells.Locked = False
                .Columns("A:E").Locked = True
                .Protect
            End With
        Next
        End Sub


        si tu ne connais pas les macros, tu nous le dis

        0
        1. Contributeur
          Les feuilles 2 à 240 ont-elles la même structure, donc les mêmes colonnes à protéger ?
          0
          1. oui les feuilles 2 à 240 ont la même structure. Les colonnes où il ne faut rien écrire sont :

            A - J - K - L - M - N - O - P - X - Z - AA - AB et de AD à AU.
            0
            1. Contributeur
              Alors la toute première réponse, celle de Michel au post 1, répond parfaitement à ton problème !
              0
            2. Contributeur
              @Raymond PENTIER... celle de Mike-31, comme me l'a fait remarquer une lectrice assidue et attentive, de la région bordelaise ...
              0
          2. et si j'utilise la macro, je pourrais la désactiver si j'ai un changement de données à faire?

            merci, @+
            0
            1. bon si c'est tout ce qu'il me reste à faire, je le ferai.
              Mais si une personnes me poste la macro je lui serai très reconnaissant.

              Merci à vous tous pour vos idées et solutions.

              A la prochaine, bye
              0
              1. Je reprends le fil de la conversation, et soutiens pleinement le coup de gueule de michel_m, Soit on soutient l’équipe dont on fait parti soit on va voir ailleurs.

                Pour revenir à notre problème, si slamduck77 ne domine pas le VBA, il lui sera difficile de comprendre et encore plus modifier le code plus tard. Comme je lui conseillais dans le post 1, en une seule opération il lui est possible de paramétrer toutes ces feuilles, la seule difficulté est la protection des feuilles qui se fera feuille par feuille.
                Avec une macro, c’est la macro qui le fera exactement de la même manière.
                Pour écrire cette macro avec un code qui sera lourd il nous faudrait le nom exact des 250 feuilles sans négliger les majuscules, mais après il faudra créer sur son fichier un module !

                A voir
                0
                1. Contributeur
                  Bonsoir tout le monde,

                  pas forcément mike, on peut travailler avec les index des feuilles :
                  Sub Protege()
                      Dim i As Long
                      For i = 1 To Sheets.Count
                          Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
                          'Sheets(i).Unprotect
                      Next
                  End Sub

                  Le code pour déprotéger est en commentaire...
                  A coller dans un module

                  eric
                  0
              2. Salut Eriiic,

                Bien vu, toujours la avec une fine solution, tu observes et sots ta botte secrète et fais mouche à tous coup.
                J’espère que tu resteras longtemps sur ce forum.

                Bonne soirée
                0
                1. je viens de voir vos postes, je comprends pas tout Mike-31 et Eriiic.
                  Je dirais même plus que je suis perdu ...

                  je comprends pas le terme de feuille index.
                  Sinon, toutes mes feuilles sont renommées, je sais pas si cette information est importante pour vous, ou si ça ne change rien pour vos macros .

                  @+
                  0
                  1. Contributeur
                    T'inquiète, on va t'expliquer...

                    Déjà déprotège tes colonnes où il y aura saisie comme mike te l'a expliqué au post1 :
                    clic sur la 1ère feuille concernée, shift+clic sur la dernière, et tu sélectionnes successivement tes colonnes pour les déverrouiller, ça s'appliquera à tous les onglets sont sélectionnés (en blanc).

                    Ensuite Alt+F11 pour appeler l'éditeur VBA.
                    A gauche, clic droit sur ton projet (porte le nom de ton classeur) et 'insertion / module'.
                    Dans la fenetre de droite qui s'est crée tu colles :
                    Sub Protege()
                        ' protège toutes les feuilles sauf la 1ère
                        Dim i As Long
                        For i = 2 To Sheets.Count
                            Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
                        Next
                    End Sub
                    
                    Sub Deprotege()
                        ' déprotège toutes les feuilles sauf la 1ère
                        Dim i As Long
                        For i = 2 To Sheets.Count
                            Sheets(i).Unprotect
                        Next
                    End Sub


                    Tu retournes dans ton classeur, tu sauvegardes
                    Alt+F8 pour appeler les macros, sélectionne celle qui t'interesse et 'executer'

                    eric
                    0
                    1. Avec la participation de plusieurs tu vas avoir une macro top
                      Pour commencer tes feuilles doivent être protégées et seules les colonnes B, C, D, E, F, G, H, I, Q, R, S, T, U, V, W, Y, et AC doivent être accessibles, c’est bien cela !

                      Si c'est ça colle ce code dans un module et testes

                      Sub Deverrouille()
                      Dim i As Long
                      For i = 1 To Sheets.Count
                      Sheets(i).Unprotect
                      Next
                      Sheets.Select
                      Range("B:I,Q:W,Y:Y,AC:AC").Select
                      Selection.Locked = False
                      Range("A1").Select
                      Sheets("Feuil1").Select
                      For i = 1 To Sheets.Count
                      Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
                      Next
                      End Sub

                      Pour afiner le code
                      Ensuite sur ces colonnes l’accès est de qu’elle ligne à quelle ligne, et le nombre peut il varier !.

                      A+
                      0
                      1. Je suis peux être long à comprendre, mais c'est 2 macros différentes que vous m'avez posté Mike-31 et Eriiic?
                        Bon je réfléchis a ça cette nuit, j'essaye ça demain, et je vous tiens au courant.

                        Merci, @+
                        0
                        1. Salut,

                          Eriiic t'a proposé deux macros, une pour protéger toutes tes feuilles et qui se nomme Protege et une pour déprotèger toutes tes feuilles nommée Deprotege

                          Ma proposition regroupe ces deux macros et j'ai ajouté le code pour déverrouiller les colonnes acessible.

                          En clair mon code Déprotége toutes tes feuilles déverrouille les colonnes que tu souhaites rendre accèssible et reprotége tes feuilles.

                          Pour un fonctionnement plus rationnel il conviendrai de deverrouiller les plages plutôt que les colonnes, c'est pour cela que je te demandais de nous dire la longueur utilisable de tes colonnes (de la ligne ? à la ligne ?).

                          comme tu es novice en VBA je pense qu'Eriiic à raison de te proposer les macro séparées, aussi, si la macro que je te propose te convient, je ta la proposerais scindée en 3 pour que tu puisse suivre le code

                          A+
                          0