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 :

Droits utilisateurs par onglet [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut Droits utilisateurs par onglet
    Bonjour,

    J'ai un fichier Excel contenant plusieures feuilles de calcul, mon utilisateur à le droit daccès sur toutes les feuilles actuellement, mais j'aimerai qu'il n'ai accès qu'à deux feuilles en lecture écriture et pour les autres seulement en lecture seule ... Est ce que c'est possible ? Si oui comment ?

    Merci d'avance pour votre aide

    Edit : Pour faire simple je ne veux pas que les utilisateurs Production (il existe aussi des utilisateurs labo : je récupère leur login de connexion windows) puissent écrire dans certaines feuilles de calcul ...
    Windows XP
    Delphi 7

    WinDev Mobile 17

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    Le plus simple serait, à l'ouverture du classeur, récupérer le loggin User et en fonction de ce login, tu verrouilles telle ou telle feuille avec un mot de passe.

    Comme ça par exemple

    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 teste()
    If Login = "Tintin" Then
        Feuil1.Protect "Interdiction d'entrer"
        Feuil2.Protect "Interdiction d'entrer"
        Feuil3.Unprotect "Interdiction d'entrer"
    Else
        Feuil1.Unprotect "Interdiction d'entrer"
        Feuil2.Protect "Interdiction d'entrer"
        Feuil3.Unprotect "Interdiction d'entrer"
    End If
     
    'ou si tu as beacoup de type d'utilisateur
     
    Select Case Login
        Case "Tintin", "Henry"
            Feuil1.Protect "Interdiction d'entrer"
            'Feuil2.Protect "Interdiction d'entrer"
            'Feuil3.Unprotect "Interdiction d'entrer"
        Case "Jean", "Juju"
            Feuil1.Unprotect "Interdiction d'entrer"
            'Feuil2.UnProtect "Interdiction d'entrer"
            'Feuil3.Unprotect "Interdiction d'entrer"
        Case Else 'Tout les autres logins
            Feuil1.Protect "Interdiction d'entrer"
            'Feuil2.Protect "Interdiction d'entrer"
            'Feuil3.protect "Interdiction d'entrer"
    End Select
     
    End Sub
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Alors voici mon 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
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Const PremiereLigneTableau As Integer = 11
    Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
    (ByVal lpBuffer As String, nSize As Long) As Long
    Option Compare Text
    'Récupération nom de session Windows
    'extrait d'un code trouvé sur : http://forum.rue-montgallet.com/ruemontgallet/Programmation/vb-vba/resolu-recuperation-windows-sujet_22341_1.htm
    Function OSUserName() As String
     
    Dim Buffer As String * 256
    Dim BuffLen As Long
    BuffLen = 256
        If GetUserName(Buffer, BuffLen) Then _
            OSUserName = Left(Buffer, BuffLen - 1)
    End Function
     
    Private Sub Workbook_Open()
     
    Select Case OSUserName
        'Utilisateurs de la production
        Case "toto"
            Worksheets("modes op liens").Protect 
            Worksheets("SAS").Protect ""
            Worksheets("contrôle arrivage-final").Protect ""
            Worksheets("Bilan campagne").Protect ""
            Worksheets("cartes de contrôle").Protect ""
            Worksheets("strippage").Protect ""
            Worksheets(" régé").Unprotect "" 'on déprotège l'onglet régé pour que la prod puisse saisir les TCP
            Worksheets(" régé mino").Protect ""
            Worksheets("PSD Cam").Protect ""
            Worksheets("Statistique").Protect ""
            Worksheets("sulf").Protect ""
            Worksheets("imprégnation ").Protect ""
            Worksheets("séchage").Unprotect "" 'on déprotège l'onglet séchage pour que la prod puisse saisir les TCP
            Worksheets("BCS").Protect ""
            Worksheets("SCS").Protect ""
            Worksheets("Réactabilité ").Protect ""
            Worksheets("length grading").Protect ""
            'Utilisateurs du laboratoire
        Case "titi"
            Worksheets("modes op liens").Unprotect ""
            Worksheets("SAS").Unprotect ""
            'Worksheets("contrôle arrivage-final").Unprotect
            Worksheets("Bilan campagne").Unprotect ""
            Worksheets("cartes de contrôle").Unprotect ""
            Worksheets("strippage").Unprotect ""
            Worksheets(" régé").Unprotect ""
            Worksheets(" régé mino").Unprotect ""
            Worksheets("PSD Cam").Unprotect ""
            Worksheets("Statistique").Unprotect ""
            Worksheets("sulf").Unprotect ""
            Worksheets("imprégnation ").Unprotect ""
            Worksheets("séchage").Unprotect ""
            Worksheets("BCS").Unprotect ""
            Worksheets("SCS").Unprotect ""
            Worksheets("Réactabilité ").Unprotect ""
            Worksheets("length grading").Unprotect ""
    End Select
     
    End Sub
    Mon problème est que sur ma feuille contrôle arrivage-final j'ai déjà une protection de base qui permet que les utilisateurs n'aient pas accès à toutes les cellules avec un mot de passe et tout...Donc protection sur les cellules verrouillées les utilisateurs ne peuvent écrire que dans celles non verrouillées... Comment puis-je contourner ce problème ??

    Merci d'avance
    Windows XP
    Delphi 7

    WinDev Mobile 17

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Suite à mon problème d'onglet où j'ai déjà une protection sur certaines cellules j'ai tenté quelque chose :

    J'ai déprotégé ma feuille et j'ai englobé sous des groupes de cellules toutes mes cellules verrouillées.
    Donc si c'est toto qui se connecte je vais les verrouiller sinon si c'est titi je vais verrouiller toute ma feuille, de cette manière là :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Private Sub Workbook_Open()
     
    Select Case OSUserName
            'Utilisateurs de la production
        Case "toto"
            Worksheets("modes op liens").Protect "test"
            Worksheets("SAS").Protect "test"
     
            '--------------contrôle arrivage-final------------------------------------------------
            'On déverrouille les cellules
            'Puis on verrouille toute la feuille, la production n'a pas accès à cet onglet en modif
            Worksheets("contrôle arrivage-final").Unprotect "test"
            Worksheets("contrôle arrivage-final").Range("PremierePartieVerrouille").Locked = False
            Worksheets("contrôle arrivage-final").Range("DeuxiemePartieVerrouille").Locked = False
            Worksheets("contrôle arrivage-final").Range("TroisiemePartieVerrouille").Locked = False
            Worksheets("contrôle arrivage-final").Protect "test"
            '--------------contrôle arrivage-final------------------------------------------------
     
            Worksheets("Bilan campagne").Protect "test"
            Worksheets("cartes de contrôle").Protect "test"
            Worksheets("strippage").Protect "test"
            Worksheets(" régé").Unprotect "test" 'on déprotège l'onglet régé pour que la prod puisse saisir les TCP
            Worksheets(" régé mino").Protect "test"
            Worksheets("PSD Cam").Protect "test"
            Worksheets("Statistique").Protect "test"
            Worksheets("sulf").Protect "test"
            Worksheets("imprégnation ").Protect "test"
            Worksheets("séchage").Unprotect "test" 'on déprotège l'onglet séchage pour que la prod puisse saisir les TCP
            Worksheets("BCS").Protect "test"
            Worksheets("SCS").Protect "test"
            Worksheets("Réactabilité ").Protect "test"
            Worksheets("length grading").Protect "test"
        Case "titi"
            'On déprotège le labo a accès à tout
            Worksheets("modes op liens").Unprotect "test"
            Worksheets("SAS").Unprotect "test"
     
            '--------------contrôle arrivage-final------------------------------------------------
            'On ne protège que les cellules où ils ne doivent pas avoir accès
            Worksheets("contrôle arrivage-final").Range("PremierePartieVerrouille").Locked = True
            Worksheets("contrôle arrivage-final").Range("DeuxiemePartieVerrouille").Locked = True
            Worksheets("contrôle arrivage-final").Range("TroisiemePartieVerrouille").Locked = True
            Worksheets("contrôle arrivage-final").Protect "test"
            '--------------contrôle arrivage-final------------------------------------------------
     
            Worksheets("Bilan campagne").Unprotect "test"
            Worksheets("cartes de contrôle").Unprotect "test"
            Worksheets("strippage").Unprotect "test"
            Worksheets(" régé").Unprotect "test"
            Worksheets(" régé mino").Unprotect "test"
            Worksheets("PSD Cam").Unprotect "test"
            Worksheets("Statistique").Unprotect "test"
            Worksheets("sulf").Unprotect "test"
            Worksheets("imprégnation ").Unprotect "test"
            Worksheets("séchage").Unprotect "test"
            Worksheets("BCS").Unprotect "test"
            Worksheets("SCS").Unprotect "test"
            Worksheets("Réactabilité ").Unprotect "test"
            Worksheets("length grading").Unprotect "test"
    End Select
    Cependant cela ne fonctionne pas, mon onglet n'est pas protégé encore une fois contrairement aux autres...
    Qu'est ce qu'il peut bien me manquer ?? Merci de votre aide je commence à désespérer après toutes les tentatives que j'ai effectué !
    Windows XP
    Delphi 7

    WinDev Mobile 17

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Points : 124
    Points
    124
    Par défaut
    Voici ma solution :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Const PremiereLigneTableau As Integer = 11
    Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
    (ByVal lpBuffer As String, nSize As Long) As Long
    Option Compare Text
    'Récupération nom de session Windows
    'extrait d'un code trouvé sur : http://forum.rue-montgallet.com/ruemontgallet/Programmation/vb-vba/resolu-recuperation-windows-sujet_22341_1.htm
    Function OSUserName() As String
     
    Dim Buffer As String * 256
    Dim BuffLen As Long
    BuffLen = 256
        If GetUserName(Buffer, BuffLen) Then _
            OSUserName = Left(Buffer, BuffLen - 1)
    End Function
     
    Private Sub Workbook_Open()
     
    Select Case OSUserName
            'Utilisateurs de la production
        Case "STAG3", "Sulficat2", "Regene1", "Regene2", "Regene3", "Regene4", "u3100"
            Worksheets("modes op liens").Protect "nadine"
     
            Worksheets("SAS").Protect "nadine"
     
            '--------------contrôle arrivage-final------------------------------------------------
            'On déverrouille les cellules
            'Puis on verrouille toute la feuille, la production n'a pas accès à cet onglet en modif
            Worksheets("contrôle arrivage-final").Unprotect "nadine"
            'Worksheets("contrôle arrivage-final").Range("PremierePartieVerrouille").Locked = False
            'Worksheets("contrôle arrivage-final").Range("DeuxiemePartieVerrouille").Locked = False
            'Worksheets("contrôle arrivage-final").Range("TroisiemePartieVerrouille").Locked = False
            Worksheets("contrôle arrivage-final").Range("A1:AJ115").Locked = True
            Worksheets("contrôle arrivage-final").Protect "nadine"
            '--------------contrôle arrivage-final------------------------------------------------
     
            Worksheets("Bilan campagne").Protect "nadine"
            Worksheets("cartes de contrôle").Protect "nadine"
            Worksheets("strippage").Protect "nadine"
            Worksheets(" régé").Unprotect "nadine" 'on déprotège l'onglet régé pour que la prod puisse saisir les TCP
            Worksheets(" régé mino").Protect "nadine"
            Worksheets("PSD Cam").Protect "nadine"
            Worksheets("Statistique").Protect "nadine"
            Worksheets("sulf").Protect "nadine"
            Worksheets("imprégnation ").Protect "nadine"
            Worksheets("séchage").Unprotect "nadine" 'on déprotège l'onglet séchage pour que la prod puisse saisir les TCP
            Worksheets("BCS").Protect "nadine"
            Worksheets("SCS").Protect "nadine"
            Worksheets("Réactabilité ").Protect "nadine"
            Worksheets("length grading").Protect "nadine"
        Case "JFM", "FF", "PCL", "GC", "LB", "FD", "EL", "SB", "BLG", "ERIC", "NADINE"
            'On déprotège le labo a accès à tout
            Worksheets("modes op liens").Unprotect "nadine"
            Worksheets("SAS").Unprotect "nadine"
     
            '--------------contrôle arrivage-final------------------------------------------------
            'On ne protège que les cellules où ils ne doivent pas avoir accès
            Worksheets("contrôle arrivage-final").Unprotect "nadine"
            Worksheets("contrôle arrivage-final").Range("A1:AJ115").Locked = False
            Worksheets("contrôle arrivage-final").Range("PremierePartieVerrouille").Locked = True
            Worksheets("contrôle arrivage-final").Range("DeuxiemePartieVerrouille").Locked = True
            Worksheets("contrôle arrivage-final").Range("TroisiemePartieVerrouille").Locked = True
            Worksheets("contrôle arrivage-final").Protect Password:="nadine", UserInterFaceOnly:=True
            '--------------contrôle arrivage-final------------------------------------------------
     
            Worksheets("Bilan campagne").Unprotect "nadine"
            Worksheets("cartes de contrôle").Unprotect "nadine"
            Worksheets("strippage").Unprotect "nadine"
            Worksheets(" régé").Unprotect "nadine"
            Worksheets(" régé mino").Unprotect "nadine"
            Worksheets("PSD Cam").Unprotect "nadine"
            Worksheets("Statistique").Unprotect "nadine"
            Worksheets("sulf").Unprotect "nadine"
            Worksheets("imprégnation ").Unprotect "nadine"
            Worksheets("séchage").Unprotect "nadine"
            Worksheets("BCS").Unprotect "nadine"
            Worksheets("SCS").Unprotect "nadine"
            Worksheets("Réactabilité ").Unprotect "nadine"
            Worksheets("length grading").Unprotect "nadine"
    End Select
     
    End Sub
    Windows XP
    Delphi 7

    WinDev Mobile 17

  6. #6
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut,pour le nom de login windows pourquoi ne pas utiliser

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/05/2009, 18h05
  2. Réponses: 2
    Dernier message: 11/01/2008, 17h05
  3. droit utilisateur par accès distant
    Par doumdoum dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 13/08/2007, 13h30
  4. [Administration] Gestion Droit utilisateur par fichier.
    Par mathws dans le forum CVS
    Réponses: 1
    Dernier message: 09/06/2007, 11h41
  5. gestion des droits utilisateurs par vba
    Par laurent.w dans le forum Sécurité
    Réponses: 14
    Dernier message: 17/01/2007, 08h09

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