Voir quelles cellules sont verrouillées

Résolu
Linda -  
 Linda -
Bonjour,
Existe-t-il un façon de voir en un seul coup d'oeil, les cellules que l'on peut modifier dans une feuille protégée.
Il n'y a pas de données dans ma feuille. J'ai beaucoup travaillé dessus et maintenant, je ne sais plus s'il y a des cellules déverrouillées qui devraient être verrouillées.
C'est quand même assez fastidieux de les passer une par une.
Merci.

4 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour à tous,

    La petite macro en question qui colorie ces cellules. La macro propose de le faire sur une copie ou non.
    Ouvre ce classeur, le tien avec la feuille concernée activée (et déverrouillée), et tape Ctrl+d.
    https://www.cjoint.com/c/DEbkrSTHjJs
    Sub CelDeverrouillees()
        Dim c As Range, rep As Long, nbC As Long
        rep = MsgBox("Travailler sur une copie de la feuille ?", vbQuestion + vbYesNoCancel, "Colorer les cellules déverrouillées")
        If rep = vbCancel Then Exit Sub
        If rep = vbYes Then ActiveSheet.Copy after:=ActiveSheet
        Application.ScreenUpdating = False
        For Each c In ActiveSheet.UsedRange
            If Not c.Locked Then
                c.Interior.ColorIndex = 35
                nbC = nbC + 1
            End If
        Next c
        If nbC > 0 Then MsgBox nbC & " cellules déverrouillées."
    End Sub

    eric

    En essayant continuellement, on finit par réussir.
    Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
    En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
    1
    1. Linda
       
      Bonjour eriiic,
      Ça fonctionne. Mais, y a-t-il une façon d'annuler cette manipulation une fois que les cellules ont été vérifiée. Si non, j'activerai la macro sur une copie et je corrigerai sur mon original. J'ai des cellules avec du remplissage manuel et évidemment, il disparaît si j'utilise la fonction "aucun remplissage" par la suite.
      Merci beaucoup.
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      y a-t-il une façon d'annuler cette manipulation
      Non, ce n'est pas l'option que j'avais prise.
      Autre version : https://www.cjoint.com/?DEbrDcBV1fP
      Cliquer sur Restaurer à la fin pour remettre les couleurs d'origine.

      eric

      edit : le code oublié
      Dans un module Standard :
      Public sh As Worksheet, shCopie As Worksheet ', pl As Range
      
      Sub CelDeverrouillees()
          Dim c As Range
          Set sh = ActiveSheet
      
          ActiveSheet.Copy after:=ActiveSheet
          Application.ScreenUpdating = False
          Set shCopie = ActiveSheet
          shCopie.Visible = xlSheetHidden
          sh.Activate
          ActiveSheet.UsedRange.Interior.ColorIndex = xlNone
          For Each c In sh.UsedRange
              If Not c.Locked Then
                  c.Interior.ColorIndex = 35
              End If
          Next c
          Application.ScreenUpdating = True
          UF_Restaurer.Show vbModeless
      End Sub


      Bouton du UserForm :
      Private Sub CommandButton1_Click()
          Dim c As Range
          Application.ScreenUpdating = False
          For Each c In sh.UsedRange
              c.Interior.ColorIndex = shCopie.Range(c.Address).Interior.ColorIndex
          Next c
          Application.DisplayAlerts = False
          shCopie.Delete
          Application.DisplayAlerts = True
          Me.Hide
      End Sub
      0
    3. Linda
       
      Je ne comprends pas comment utiliser la section "Bouton du UserForm". À quoi ça sert ?
      La première macro fonctionne à merveille.
      Merci.
      0
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,
      À quoi ça sert ?
      Il me semble que je l'ai écrit : remettre les couleurs d'origine.
      En réponse à ce que tu as demandé... Tu as oublié ?

      eric
      0
    5. Linda
       
      Désolée, "Je ne sais pas comment mettre en fonction" serait peut-être mieux comme expression. Je réussi la première macro, elle fonctionne. C'est pour le bouton du UserForm que je suis perdue. Je ne peux malheureusement pas faire cela maintenant. Je vais étudier un peu cette fonction et je vous reviendrai, si je n'arrive pas à le faire. Si j'y arrive, je vous le confirmerai et je marquerai résolu.
      Merci de votre aide,
      À plus tard,
      0
  2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bon jour
    pas beaucoup de solution, sauf peut être un artifice:

    lors de la protection de la feuille, décochez dans le menu qui s'affiche la ligne
    "sélectionner les cellules verrouillées"

    vous n'aurez alors accès qu'aux cellules déverrouillées, ce qui vous permettra de les repérer.

    mais noter bien les adresses à modifier car il faudra ôter la protection pour les modifier

    crdlmnt

    Errare humanum est, perseverare diabolicum
    0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonjour,

    Ou par VBA si tu as quelques notions, soit les cellules sont colorisée après avoir déprotégé la feuille ou même sous protection dans une msgbox on affiche l'adresse des cellules déverrouillées
    0
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re

    en VBA code à placer dans un module

    Sub CellulesDéverrouillées()
    Dim myCell As Excel.Range
    'activesheet.Unprotect 'déprotection de la feuille
    For Each myCell In ActiveSheet.UsedRange
    If myCell.Locked = False Then myCell.Interior.ColorIndex = 5 'colorisation des cellules déverrouillées
    'activesheet.protect 'reprotection de la feuille
    Next myCell
    End Sub

    ou tout simplement

    Sub CellulesDéverrouillées()
    Dim myCell As Excel.Range
    If myCell.Locked = False Then MsgBox myCell.Address 'ou cette ligne donne l'adresse des cellules déverrouillées
    If myCell.Locked = False Then Range(myCell.Address).Select 'ou encore cette ligne sélectionne les cellules déverrouillées
    End Sub

    Mais bon a aussi vite fait de protéger la feuille en décochant l'option Sélectionner les cellules verrouillées et de jouer avec la touche de tabulation qui sélectionnera les cellules déverrouillées les unes après les autres

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. Linda
       
      Bonjour Mike-31.
      J'ai utilisé la macro d'eriiic, car je ne suis pas habituée au langage VBA et je n'ai eu qu'à la copier.
      Merci tout de même pour vos informations.
      Linda
      0