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 :

[VBA-E] Problème d'autorisation à certaines lignes


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 17
    Points
    17
    Par défaut [VBA-E] Problème d'autorisation à certaines lignes
    bonjour,

    je dispose d'un fichier comportant sur une même feuille plusieur décisions(description, entité émettrice et date échéance).
    Chaque décision se déroule sur une même ligne.

    Mon problème est que certaines entités n'ont pas l'autorisation de voir, ni de modifier toute les décision (cause: hiérarchie).

    Je voudrais à l'aide d'une macro (demande de mot de passe) permettre à l'entité désignée par le mot de passe de pouvoir voir et modifier uniquement les lignes pour lesquelles elle dispose de l'autorisation.

    (Ex:
    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
    Sub autorisation()
        Dim i As Integer, j As Integer
        i = CInt(InputBox("Veuillez entrer votre mot de passe :"))
    ''''''''''''' Blocage Agence (entité inférieur , il y a des lignes qu'elle ne peut pas voir ''''''''''''''''''''''''''''''''''''''''''''''''''''''
        If i = 12 Then
            Sheets("AGO").Visible = True
            Sheets("Listes").Visible = True
            Sheets("Liste_Mots_Clés").Visible = True
            Sheets("Statistiques").Visible = True
            Workbooks(1).Worksheets("AGO").Activate
            For j = 6 To 100
                If Workbooks(1).Worksheets("AGO").Cells(j, 4).Value _  = "ligne_a_cacher" Then
                    Rows(j).EntireRow.Hidden = True
                End If
            Next j
        Else
    '''''''''''' Blocage Entité supérieure (elle peut tout voir) '''''''''''''''''''''''''''''''''''''''''''''''''''''''
            If i = 18 Then
                Sheets("AGO").Visible = True
                Sheets("Listes").Visible = True
                Sheets("Liste_Mots_Clés").Visible = True
                Sheets("Statistiques").Visible = True
                Workbooks(1).Worksheets("AGO").Activate
                Cells.EntireRow.Hidden = False
            Else
                MsgBox "Vous n'avez pas accès à l'outil.", vbExclamation
            End If
        End If
    End Sub
    Cela cache bien les lignes mais après, il suffit de tout sélectionner dans Excel et de mettre afficher. Hors je veux vérrouiller cet affichage.

    Merci.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    tu peu utiliser les mécanismes de protections feuilles.. d'Excel...
    pour protéger une feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(1).Worksheets("AGO").protect "bbil"
    et déprotége avant masquage/démasquage ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(1).Worksheets("AGO").Unprotect "bbil"
    PS : bbil c'est orignal comme mot de passe

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Je vois, mais cela m'empèche de rentrer de nouvelles décision.
    Il faudrait en fait que une fois les lignes masquées, l'utilisateur ne puisse pas les afficher. Mais qu'ils puissent tout de même rentrer de nouvelles décisions.

    Merci.

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Avant de verrouiller la feuille sélectionne toutes les cellules, puis format protection et décoche "vérouillée"...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Merci,

    mais cela m'empêche d'ajouter de nouvelles décisions. Je n'ai peut être pas compris quelles cellules je dois dévérouiller (toutes les cellules de la feuille?), ou comment vérrouiller la feuille.

    Mais ce n'est peut être pas possible.
    Car même si j'y arrive il suffit que l'utilisateur, à l'ouverture du fichier décide de ne pas activer les macros pour que toutes les décisions soient visibles.

    Merci.

    Sinon g mis ton Protect comme ça:

    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
    Private Sub Workbook_Open()
    Dim j As Integer
        Workbooks(1).Worksheets("AGO").Unprotect "bbil"
        Sheets("AGO").Visible = True
        Sheets("Listes").Visible = True
        Sheets("Liste_Mots_Clés").Visible = True
        Sheets("Statistiques").Visible = True
        Workbooks(1).Worksheets("AGO").Activate
            For j = 6 To 100
                If Workbooks(1).Worksheets("AGO").Cells(j, 4).Value = "CODIR" Then
                    Rows(j).EntireRow.Hidden = True
                End If
            Next j
        Workbooks(1).Worksheets("AGO").Protect "bbil"
    End Sub

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Lorsqu'une feuille est protégé (menu outils protection, protéger la feuille) l'on ne peu écrire que dans les cellules qui ne sont pas verrouillés (par défaut elle le sont toutes), pour déverrouillé les cellules, sélectionne les toutes, puis format cellule protection....

    Je suppose que ta macro est dans le classeur de donnée remplace les :
    Workbooks(1).. par thisWorkBook..


    ensuite avant la fermeture masque les lignes à protéger.. ainsi elles seront masquées même si l'utilisateur n'accepte pas les macros à l'ouverture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
         ThisWorkbook.Worksheets("AGO").Unprotect "bbil"
         For j = 6 To 100
                If ThisWorkbook.Worksheets("AGO").Cells(j, 4).Value = "CODIR" Then
                    Rows(j).EntireRow.Hidden = True
                End If
            Next j
        ThisWorkbook.Worksheets("AGO").Protect "bbil"
    End Sub

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Je te remercie, ça marche.

    En fait j'utilise ton Unprotect à chaque fois que je lance le formulaire d'aide à la saisie et quand je le ferme j'utilise à nouveau le protect.

    Merci.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Ca marche bien pour le verrouillage des lignes.

    Mais si l'utilisateur ouvre le fichier sans utiliser les macros, toutes les décisions sont visibles.

    On ne peut pas rendre l'utilisation des macros obligatoire pour ce fichier?

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par bbil
    ...

    ensuite avant la fermeture masque les lignes à protéger.. ainsi elles seront masquées même si l'utilisateur n'accepte pas les macros à l'ouverture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
         ThisWorkbook.Worksheets("AGO").Unprotect "bbil"
         For j = 6 To 100
                If ThisWorkbook.Worksheets("AGO").Cells(j, 4).Value = "CODIR" Then
                    Rows(j).EntireRow.Hidden = True
                End If
            Next j
        ThisWorkbook.Worksheets("AGO").Protect "bbil"
    End Sub
    ou plutot dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    C'est parfait, Merci pour tout.

  11. #11
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    pense aussi à rajouter un mot de passe à ton code... histoire que quelqu'un d'un peu plus malin n'aille pas y fouiller dedans afin de trouver le mot de passe...(bbil)

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Excuse moi, on fait comment pour ajouter un mot de passe au code?

  13. #13
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    pour le mot de passe du code dans l'editeur VBE ..Outils/Propriétés de VBA project/ Onglet Protection/ Verrouillé..et le mot de passe 2 fois bbil bbil


    Sinon vu ton autre post tu n'as pas encore tenu compte de mes conseils et rempalcé par sache que si ton classeur n'est pas le premier ouvert dans excel .. ta macro de fonctionneras pas,( ou du moins agira sur le premier classeur ouvert, c'est peu-être ce que tu ve..?)


  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Merci

    Mais à l'ouverture du fichier quand on clik sur activer les macros, un message d'erreur apparait (erreur d'execution 424: objet requis).

    on ne peut répondre que Fin à ce message. Une fois cliké sur Fin tout marche, mais ça fait pas très propre.

    Si tu pouvais m'aider.

    Merci.

    Sinon pour les Workbooks(1) je vais les changer.

  15. #15
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    commence par changer les ...(1) ... puis si tu as toujours l'errer essai de voir sur qu'elle ligne...

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Merci, c bon ca marche en remplacant les (1)

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Excuse moi de redéranger, mais j'ai encore un problème avec ces autorisation à certaines lignes.

    En fait, g disposé des filtres automatiques sur la feuille Excel. Pour qu'ils fonctionnent, g créé une macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub tri()
        ThisWorkbook.Worksheets("AGO").Unprotect "bbil"
    End Sub
    qui dévérrouille la feuille de manière à rendre le filtre opérationnel.
    Cela marche. Cependant, dans le filtre on peut désirer de tout afficher et là, cela me montre les lignes que je désirai cacher.

    Je ne vois pas comment faire pour résoudre ce problème car je suis obligé de déverrouiller la feuille pour que le filtre puisse marcher.

    Merci

  18. #18
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    .. pas d'idée..... peu-être q'il faut changer de méthode et déplacer les lignes à cacher dans une feuille masquée... .. je vois pas la...

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

Discussions similaires

  1. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  2. [VBA-E] Problème de numérotation de lignes
    Par aramge dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 29/08/2006, 11h06
  3. [VBA-E] Problème d'autorisation à certaines pages
    Par aramge dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/08/2006, 17h44
  4. [VBA-E] Problème de remplissage de lignes
    Par aramge dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 22/08/2006, 11h37
  5. [VBA-E] Problème de suppression de lignes
    Par coxi77 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/07/2006, 14h01

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