IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro pour portéger seulement des formules et non les cellules vides


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 158
    Par défaut Macro pour portéger seulement des formules et non les cellules vides
    Bonjour

    Je patauge complétement. j'aimerai utiliser une macro qui pour toutes les feuilles d'un classeur, verrouille les cellules contenant des formules et laisse déverrouillées les autres cellules (vides ou non).
    J'utilise cette macro mais elle bloque aussi les cellules vides.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'protéger_cellules_formules()
     
        Dim ws1 As Worksheet
        For Each ws1 In ThisWorkbook.Worksheets
     
              With ws1.UsedRange
     
                With .Cells.SpecialCells(xlCellTypeConstants, 23)
                    .Locked = False
                    .FormulaHidden = False
                End With
     
     
            End With
    si je rajoute le code suivant j'ai un code erreur 1004

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'deverouillage des cellules vides
                'If cell.Value = "" Then cell.Locked = False
     
                'With .Cells.SpecialCells(xlCellTypeBlanks)
                    '.Locked = False
                    '.FormulaHidden = False
                'End With
    Quelqu'un aurait-il une idée

    Merci beaucoup

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    utiliser la propriété HasFormula ou encore la méthode SpecialCells avec le bon paramètre (cf l'aide VBA !) …



    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, …

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 102
    Par défaut protection des formules uniquement
    Bonjour,

    avec le code suivant, ca à l'air de le faire sur une feuille. Complète le code pour le faire sur ttes les feuilles...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    '====================
    Option Explicit
     
    Sub ProtegeFormules()
    'Selectionne ttes celllules de feuille active et dévérouille la protection
        Cells.Select
        Selection.Locked = False
        Selection.FormulaHidden = False
     
    'Sélectionne ttes les cellules contenant une formule et revérouille la protection
        Selection.SpecialCells(xlCellTypeFormulas, 23).Select
        Selection.Locked = True
        Selection.FormulaHidden = False
     
    'Active la protection de la feuille avec passe "bibi"
        ActiveSheet.Protect "bibi"
     
    End Sub
     
    '=======================
    Cordialement

    Bruno Lemaire

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 158
    Par défaut Macro pour portéger seulement des formules et non les cellules vide
    Bonjour Bruno

    Merci beaucoup pour ta réponse. Ta macro fonctionne bien sur une seule feuille de mon fichier.

    Mais quand je l’intègre dans la macro pour l'ensemble des feuilles, j'ai toujours des cellules vides qui n'ont jamais reçu de valeurs qui restent bloquées et la ligne With .SpecialCells(xlCellTypeFormulas, 23) se bloque en jaune.

    Le début de la macro déverrouille bien toutes les cellules

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
    ws.Unprotect
    Next
    J'aimerai qu'en une seule fois toutes les cellules de toutes les feuilles du classeur qui ont seulement des formules soit verrouillées

    Comme je ne connais pas trop le VBA quelque chose dans la logique m’échappe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim ws1 As Worksheet
     
        For Each ws1 In ThisWorkbook.Worksheets
     
            With ws1.UsedRange
                With .SpecialCells(xlCellTypeFormulas, 23)
                .Locked = True
                .FormulaHidden = False
                End With
     
              End With
     
         ws1.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        Next

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 102
    Par défaut suite protection formules
    Bonjour madame Zaza,

    Le problème vient du fait que le pointeur reste tjs sur la même feuille. et donc la macro cherche à remodifier les propriétés de cellules alors que la feuille a déjà été protégée.

    Modifie ton code sur ce modèle qui tourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    '========================================
    Option Explicit
     
    Sub ProtegeFormules()
    'Selectionne ttes celllules de feuille active et dévérouille la protection cellule
        Cells.Select
        Selection.Locked = False
        Selection.FormulaHidden = False
     
    'Sélectionne ttes les cellules contenant une formule et revérouille la protection
        Selection.SpecialCells(xlCellTypeFormulas, 23).Select
        Selection.Locked = True
        Selection.FormulaHidden = False
     
    'Active la protection de la feuille avec passe "bibi"
        ActiveSheet.Protect "bibi"
     
    End Sub
     
    '*************************************************
    Sub ProtFormClass() 'Active la protection de ttes les feuilles
    Dim Sh As Worksheet
     
    For Each Sh In ActiveWorkbook.Sheets
        Sh.Activate
        ProtegeFormules
     
    Next
    End Sub
     
    '*************************************************
    Sub Depr_Class() 'Ote la protection de ttes les feuilles
    Dim Sh As Worksheet
     
    For Each Sh In ActiveWorkbook.Sheets
        Sh.Activate
        ActiveSheet.Unprotect "bibi"
     
    Next
     
    End Sub
     
    '=========================
    Voilà, tu aurai exécuté ton code en mode pas à pas, je pense que tu aurai décelé le problème...

    BIZ à ZAZA, si je peux me permettre

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 158
    Par défaut
    J'ai essayé ton code mais comme il y a beaucoup de feuilles, c'est très long.

    J'ai modifié selon ta remarque le code de départ, je n'ai plus l'erreur et en testant plusieurs feuilles j'ai bien mes formules protégées mais les cellules vides qui n'ont jamais eu de valeur restent verrouillées aussi.

    j'ai oublié de mettre le code corrigé; Je ne sais pas si c'est juste mais je n'ai pas d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub protéger_cellules_formules()
     
    Dim ws1 As Worksheet
     
        For Each ws1 In ThisWorkbook.Worksheets
        ActiveSheet.Unprotect
     
            With ws1.UsedRange
                With Selection.SpecialCells(xlCellTypeFormulas, 23).Select
                Selection.Locked = True
                Selection.FormulaHidden = False
                End With
     
            End With
     
        ws1.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
     
        Next
     
    ActiveSheet.Protect
    ActiveWorkbook.Protect
     
     MsgBox "fin"
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 20/06/2015, 13h02
  2. [XL-2010] Macro pour boucler sur des OptionButtons
    Par Hellyeah13 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/05/2011, 14h26
  3. Réponses: 2
    Dernier message: 17/03/2011, 21h45
  4. [XL-2007] Une macro pour copier seulement certaines lignes d'un fichier à un autre
    Par asgard78 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/10/2010, 14h10
  5. [XL-2007] macro pour copier coller des selections multiples
    Par bedoch dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/06/2009, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo