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 :

Autoriser 1,2,3 du plan dans feuille protégée [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Par défaut Autoriser 1,2,3 du plan dans feuille protégée
    Bonjour à tous,

    Sur un fichier Excel qui comporte plusieurs onglets, j'ai paramétré les plages de cellules autorisées, et verrouillé les autres (par révision > protéger).

    En revanche, sur deux onglets j'ai besoin de pouvoir utiliser les 1,2 et 3 de mes plans (obtenus via données > plan > grouper)
    Mais quand la feuille est protégée on ne peut plus s'en servir (on peut utiliser les + et - mais pas les 1,2,3).

    Sur le net j'ai ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Workbook_Open() ' Macro pour permettre de developper les 1 2 3 du plan avec la protection
    Dim WS_Count As Integer
    Dim I As Integer
     
    WS_Count = ActiveWorkbook.Worksheets.Count
    For I = 1 To WS_Count
    With ActiveWorkbook.Worksheets(I)
    .EnableAutoFilter = True
    .EnableOutlining = True
    .Protect Contents:=True, UserInterfaceOnly:=True
    End With
    Next I
     
    End Sub
    Il fonctionne, les cellules autoriser sont toujours modifiables et je peux utiliser les 1,2,3 mais il n'est pas parfait.
    Il faudrait qu'il ne soit actif que pour les onglets nécessaires, et qu'il me permette d'autoriser plus de choses.
    Par exemple, si j'autorise la modification des formats de cellules ou l'insertion de lignes, à la prochaine ouverture du fichier ces paramètre d'autorisation sautent et tous les onglets de reprotègent.

    Ca doit être assez simple à faire mais je ne suis pas très doué en vba du coup je ne parviens pas à l'adapter comme je veux.
    J'ai tenté de lancer la macro pour autoriser les 1,2,3 puis de supprimer la macro pour pas que ça réinitialise mes paramètres mais si je ferme et réouvre le fichier mes paramètres sont bien mémorisés mais plus possible d'utiliser les 1,2,3.


    NB : Sur d'autres onglets j'ai besoin de pouvoir fusionner des cellules (parmis les cellules autoriser à la modification) tout en gardant la protection de la feuille activée. Si vous avez la solution

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ici, on place le nom de feuilles qu'on veut traiter dans le tableau ListeFeuilles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Workbook_Open() ' Macro pour permettre de developper les 1 2 3 du plan avec la protection
    Dim I As Integer, ListeFeuilles()
    ListeFeuilles = Array("Feuil1", "Feuil2")
        With ActiveWorkbook
            For I = LBound(ListeFeuilles) To UBound(ListeFeuilles)
                With .Worksheets(ListeFeuilles(I))
                    .EnableAutoFilter = True
                    .EnableOutlining = True
                    .Protect Contents:=True, UserInterfaceOnly:=True
                End With
            Next I
        End With
    End Sub

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut Anthony,

    Il y a plusieurs autorisations possibles et que l'on peut affecter à une protection.
    Elles sont décrites ici.

  4. #4
    Membre confirmé
    Homme Profil pro
    ""
    Inscrit en
    Mai 2019
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : ""

    Informations forums :
    Inscription : Mai 2019
    Messages : 201
    Par défaut
    Bonjour Joe, Rebonjour Marcel,

    Merci à vous deux, alors, j'ai pu rajouter quelques critère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Workbook_Open() ' Macro pour permettre de developper les 1 2 3 du plan avec la protection
    Dim I As Integer, ListeFeuilles()
    ListeFeuilles = Array("EC (1)")
        With ActiveWorkbook
            For I = LBound(ListeFeuilles) To UBound(ListeFeuilles)
                With .Worksheets(ListeFeuilles(I))
                    .EnableAutoFilter = True
                    .EnableOutlining = True
                    .Protect Contents:=True, UserInterfaceOnly:=True, AllowFormattingCells:=True, AllowInsertingRows:=True, AllowDeletingRows:=True, AllowFormattingColumns:=True
     
                End With
            Next I
        End With
    End Sub
    Mais deux choses :

    1-J'ai pas trouvé le critère qui autorise de fusionner les cellules

    2-Mon onglet EC (1) peut être amené à être dupliqué plusieurs fois, il faudrait qu'à l'ouverture je puisse appliquer ça à tout les EC (X)
    Sur une autre macro, j'ai simplement utilisé la présence d'un caractère dans une cellule (en AA1) pour identifier les feuilles en question


    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
    Sub PrintingChoose()
    Dim wb
    For Each wb In Worksheets 'ou worbooks pour classeurs worksheets si tu veux parcourir les feuilles au lieu des classeurs
     
      If wb.Range("AA1").Value = 1 Then  'tu verifies la valeur de la cellule Z1 dans la feuille active lors de l'ouverture du classeur. pour le parcours des feuilles au lieu des classeurs, il faut juste enlever ".activesheet"
        wb.Outline.ShowLevels RowLevels:=2
        wb.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
        wb.Columns("G:G").EntireColumn.Hidden = True
        wb.PrintPreview 'Lance l'impression du classeur/ de la feuille. Fais juste attention à ce que l'imprimante par défaut soit active
        wb.Columns("G:G").EntireColumn.Hidden = False
       End If
     
    Next
       Sheets("Récap général").PrintPreview
    End Sub
    Si vous savez comment appliquer ce principe à la macro

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Pour l'appliquer à toutes les feuilles commençant par "EC ("

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Workbook_Open() ' Macro pour permettre de developper les 1 2 3 du plan avec la protection
    Dim Feuille As Worksheet
        For Each Feuille In ActiveWorkbook.Worksheets
            If Feuille.Name Like "EC (" & "*" Then
                With Feuille
                    .EnableAutoFilter = True
                    .EnableOutlining = True
                    .Protect Contents:=True, UserInterfaceOnly:=True, AllowFormattingCells:=True, AllowInsertingRows:=True, AllowDeletingRows:=True, AllowFormattingColumns:=True
     
                End With
            End If
        Next Feuille
    End Sub

    Concernant la fusion, le plus simple est de proposer un bouton sur ces feuilles, quand on appuie dessus ça fusionne la sélection
    La macro à affecter à chaque bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Fusion()
        Selection.Cells.Merge
    End Sub

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

Discussions similaires

  1. [XL-2010] Visualisation des groupes dans feuille protégée
    Par Dav39200 dans le forum Excel
    Réponses: 8
    Dernier message: 09/02/2019, 10h01
  2. Réponses: 1
    Dernier message: 16/02/2017, 21h47
  3. [XL-2003] Afficher détail plan sur feuille protégée
    Par ALEX80800 dans le forum Conception
    Réponses: 1
    Dernier message: 17/04/2013, 13h38
  4. [XL-2007] Format de cellule dans feuille protégée
    Par macat dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/10/2010, 19h40
  5. Afficher/masquer Plan dans feuille protégée
    Par alain8225 dans le forum Conception
    Réponses: 1
    Dernier message: 12/08/2010, 19h29

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