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

  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 : 43
    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

  7. #7
    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
    Très bonne question je ne connaissais pas mais maintenant je l'utilise merci et j'ai enlevé donc ma fonction
    Windows XP
    Delphi 7

    WinDev Mobile 17

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Petit conseil pour le password,

    créer une variable public as string contenant le password, comme ça le jour au tu veux/dois changer, c'est beaucoup plus simple...

    enfin, c'est ce que je fais dans mes codes et c'est très pratique (et ça évite les fautes de frappe )

  9. #9
    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
    En fait j'ai fait quelque chose de plus facile je masque les onglets en fonction du nom d'utilisateur :

    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    Option Compare Text
    'Fonction qui récupère le groupe auquel appartient l'utilisateur qui a ouvert le fichier
    Function RecupGroupeUser() As String
        Dim adoConnection As ADODB.Connection
        Dim adoCommand As ADODB.Command
        Dim adoRecordset As ADODB.Recordset
        Dim strBase, strFilter, strAttributes, strQuery As String
        Dim listGroups() As Variant
        Dim i As Integer
     
        'Initialisation des objets ADO
        Set adoCommand = New ADODB.Command
        Set adoConnection = New ADODB.Connection
        Set adoRecordset = New ADODB.Recordset
     
        adoConnection.Provider = "ADsDSOObject"
        adoConnection.Open "Active Directory Provider"
        adoCommand.ActiveConnection = adoConnection
     
        'Recherche du domaine Active Directory
        strBase = "<LDAP://dc=nomdomaineentreprise;dc=extensionnomdedomaine>"
     
        'Filtre sur l'utilisateur.... Environ("USERNAME") récupère le login de l'utilisateur qui ouvre le fichier
        strFilter = "(&(objectCategory=user)(samAccountName=" & Environ("USERNAME") & "))"
     
        'On récupère l'ensemble des groupes de l'utilisateur
        strAttributes = "memberOf"
     
        'Construction de la requête LDAP
        strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
        adoCommand.CommandText = strQuery
        adoCommand.Properties("Page Size") = 300
        adoCommand.Properties("Timeout") = 30
        adoCommand.Properties("Cache Results") = False
     
        'Exécution de la requête
        Set adoRecordset = adoCommand.Execute
     
        'Parcours des résultats de la requête
        Do Until adoRecordset.EOF
     
            'On stocke l'ensemble des groupes dans un tableau de variants
            listGroups = adoRecordset.Fields("memberOf").Value
     
            'Pour chaque élément du tableau
            For i = 0 To UBound(listGroups)
                Dim chaine_groupe As Variant
                Dim groupTmp As String
     
                chaine_groupe = listGroups(i)
                'On extrait la donnée qui nous intéresse (le nom exact du groupe)
                groupTmp = Mid(chaine_groupe, InStr(chaine_groupe, "CN=") + 3, InStr(chaine_groupe, ",OU=") - 4)
                If groupTmp = "Unite" Then
                    RecupGroupeUser = "Unite"
                End If
     
            Next
     
            ' Move to the next record in the recordset.
            adoRecordset.MoveNext
        Loop
     
        ' Clean up.
        adoRecordset.Close
        adoConnection.Close
    End Function
    'En fonction du groupe auquel appartient l'utilisateur qui ouvre le fichier Excel on masque les onglets
    Private Sub Workbook_Open()
    Dim groupUser As String
     
    Worksheets("SAS ").Visible = True
    Worksheets("contrôle arrivage-final").Visible = True
    Worksheets("contrôle arrivage-final 2").Visible = True
    Worksheets("contrôle arrivage-final 3").Visible = True
    Worksheets("contrôle arrivage-final 4").Visible = True
    Worksheets("Bilan campagne").Visible = True
    Worksheets("cartes de contrôle").Visible = True
    Worksheets("strippage").Visible = True
    Worksheets(" régé").Visible = True
    Worksheets(" régé mino").Visible = True
    Worksheets("PSD Cam").Visible = True
    Worksheets("Statistique").Visible = True
    Worksheets("sulf").Visible = True
    Worksheets("imprégnation ").Visible = True
    Worksheets("séchage").Visible = True
    Worksheets("BCS").Visible = True
    Worksheets("SCS").Visible = True
    Worksheets("Réactabilité ").Visible = True
    Worksheets("length grading").Visible = True
     
    groupUser = RecupGroupeUser()
    'Si l'utilisateur fait partie du groupe Unite (Production) on masque tous les onglets sauf régé et séchage
        If groupUser = "Unite" Then
     
           Worksheets("SAS ").Visible = False
           Worksheets("contrôle arrivage-final").Visible = False
           Worksheets("contrôle arrivage-final 2").Visible = False
           Worksheets("contrôle arrivage-final 3").Visible = False
           Worksheets("contrôle arrivage-final 4").Visible = False
           Worksheets("Bilan campagne").Visible = False
           Worksheets("cartes de contrôle").Visible = False
           Worksheets("strippage").Visible = False
     
           Worksheets(" régé mino").Visible = False
           Worksheets("PSD Cam").Visible = False
           Worksheets("Statistique").Visible = False
           Worksheets("sulf").Visible = False
           Worksheets("imprégnation ").Visible = False
     
           Worksheets("BCS").Visible = False
           Worksheets("SCS").Visible = False
           Worksheets("Réactabilité ").Visible = False
           Worksheets("length grading").Visible = False
        End If
     
     
    End Sub
    Mais merci pour ta suggestion qui est très bonne mais il s'agissait juste d'un test le mot de passe peut varier donc bon ... mais je prend note pour une prochaine fois merci
    Windows XP
    Delphi 7

    WinDev Mobile 17

  10. #10
    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 : 43
    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
    @Johakr: C'est une bonne méthode, mais plutôt qu'une variable une Const est encore mieux

    @juju1988:

    Je ne vois pas ou tu protèges ton classeur dans la partie de code que tu donnes, tu caches uniquement les Onglets, l'utilisateur peut les afficher.

    Il existe un autre état à l'état Visible, autre que True ou False

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Visible = xlSheetVeryHidden
    ++
    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

  11. #11
    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
    Je ne connaissais pas cet état là cela signifie que le fichier n'apparait pas dans la liste Afficher c'est ça ??
    En tout cas merci du tuyau ça marche super bien

    Oui je ne peux pas les protéger car mon fichier est partagé donc j'ai contourné le problème en masquant les icônes qu'ils ne doivent pas voir...
    Windows XP
    Delphi 7

    WinDev Mobile 17

  12. #12
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Salut
    @Johakr: C'est une bonne méthode, mais plutôt qu'une variable une Const est encore mieux
    Oui oui bien sur une constante, omission de ma part

+ 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