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 :

Onglets visibles et onglets invisibles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 19
    Par défaut Onglets visibles et onglets invisibles
    Bonjour,
    Je vous expose mon problème :
    A l'ouverture d'un classeur excel, j'ai créé une macro qui demande le nom de l'utilisateur et son mot de passe. Je veux qu'en fonction de son mot de passe il n'y ait qu'un ou plusieurs onglets de visible.
    J'arrive à faire l'un ou l'autre mais je n'arrive pas à faire en sorte que si le MDP =("blabla") alors seule la feuille1 est visible et activée, si le MDP =("blabla2") alors toutes les feuilles sont visibles et activées.
    J'ai essayé plusieurs codes.

    Voici le code que j'ai trouvé sur internet et dont je me suis servie:

    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
     
    Private Sub Workbook_Open()
        On Error Resume Next
        Application.ScreenUpdating = False
     
    'on saisit le user
        User = InputBox("Veuillez saisir votre nom d'utilisateur", "")
    'on saisit le mot de passe
        MDP = InputBox("Veuillez saisir votre mot de passe", "")
     
    'on cherche le mot de passe dans la feuille DroitsUsers en fonction du user saisi
        SchMDP = WorksheetFunction.VLookup(User, Sheets("DroitsUsers").Range("A2:B65536"), 2, False)
    'on cherche la feuille dans DroitsUsers en fonction du user saisi
        SchFeuil = WorksheetFunction.VLookup(User, Sheets("DroitsUsers").Range("A2:C65536"), 3, False)
     
    'si le mdp saisi = le mdp trouvé dans la feuille DroitsUsers
        If MDP = SchMDP Then
    'on affiche la feuille correspondante
            Sheets(SchFeuil).Visible = True
    'on va dessus
            Sheets(SchFeuil).Activate
        End If
     
    'on planque toutes les autres
        For x = 1 To ThisWorkbook.Sheets.Count
            If Sheets(x).Name <> SchFeuil Then Sheets(x).Visible = xlSheetVeryHidden
     
        Next
        Application.ScreenUpdating = True
     
    End Sub
    Voici mes modifications:

    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
    Dim MDP As String
    Dim Utilisateur As String
     
     
     
    Private Sub Workbook_Open()
        On Error Resume Next
        Application.ScreenUpdating = False
     
     
    'on saisit le user
        Utilisateur = InputBox("Veuillez saisir votre nom d'utilisateur", "Utilisateur")
    'on saisit le mot de passe
        MDP = InputBox("Veuillez saisir votre mot de passe", "MDP")
     
      If MDP = Sheets("Utilisateurs").Range("B2") Then
      Sheets(Array("Utilisateurs", "Programmées", "DG", "FB", "CR", "NG", "CV", "AA", "BB", "HC", "VP", "SS")).Visible = True
       Sheets(Array("Utilisateurs", "Programmées", "DG", "FB", "CR", "NG", "CV", "AA", "BB", "HC", "VP", "SS")).Activate
     
     
       ElseIf MDP = Sheets("Utilisateurs").Range("B3") Then
        Sheets("DG").Visible = True
       Sheets("DG").Activate
       Else
       End If
     
            If Sheets(x).Name <> SchFeuil Then Sheets(x).Visible = xlSheetVeryHidden
     
     
      End Sub
    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
     
    Private Sub Workbook_Open()
        On Error Resume Next
        Application.ScreenUpdating = False
     
    'on saisit le user
        Utilisateur = InputBox("Veuillez saisir votre nom d'utilisateur", "Utilisateur")
    'on saisit le mot de passe
        MDP = InputBox("Veuillez saisir votre mot de passe", "MDP")
     
    'on cherche le mot de passe dans la feuille DroitsUsers en fonction du user saisi
        SchMDP = WorksheetFunction.VLookup(MDP, Sheets("Utilisateurs").Range("A2:B400"), 2, False)
     
    'on cherche la feuille dans DroitsUsers en fonction du user saisi
        SchFeuil = WorksheetFunction.VLookup(Julie, Sheets("Utilisateurs").Range("A2:V400"), 3, False)
        SchFeuil1 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 4, False)
        SchFeuil2 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 5, False)
        SchFeuil3 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 6, False)
        SchFeuil4 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 7, False)
        SchFeuil5 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 8, False)
        SchFeuil6 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 9, False)
        SchFeuil7 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 10, False)
        SchFeuil8 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 11, False)
        SchFeuil9 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 12, False)
        SchFeuil10 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 13, False)
        SchFeuil11 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 14, False)
        SchFeuil12 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 15, False)
        SchFeuil13 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 16, False)
        SchFeuil14 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 17, False)
        SchFeuil15 = WorksheetFunction.VLookup(Utilisateur, Sheets("Utilisateurs").Range("A2:V400"), 18, False)
     
     
    'si le mdp saisi = le mdp trouvé dans la feuille DroitsUsers
        If MDP = SchMDP Then
    'on affiche la feuille correspondante
            Sheets(SchFeuil).Visible = True
            Sheets(SchFeuil1).Visible = True
            Sheets(SchFeuil2).Visible = True
            Sheets(SchFeuil3).Visible = True
            Sheets(SchFeuil4).Visible = True
            Sheets(SchFeuil5).Visible = True
            Sheets(SchFeuil6).Visible = True
            Sheets(SchFeuil7).Visible = True
            Sheets(SchFeuil8).Visible = True
            Sheets(SchFeuil9).Visible = True
            Sheets(SchFeuil10).Visible = True
            Sheets(SchFeuil11).Visible = True
            Sheets(SchFeuil12).Visible = True
            Sheets(SchFeuil13).Visible = True
            Sheets(SchFeuil14).Visible = True
            Sheets(SchFeuil15).Visible = True
     
     
    'on va dessus
            Sheets(SchFeuil).Activate
            Sheets(SchFeuil1).Activate
            Sheets(SchFeuil2).Activate
            Sheets(SchFeuil3).Activate
            Sheets(SchFeuil4).Activate
            Sheets(SchFeuil5).Activate
            Sheets(SchFeuil6).Activate
            Sheets(SchFeuil7).Activate
            Sheets(SchFeuil8).Activate
            Sheets(SchFeuil9).Activate
            Sheets(SchFeuil10).Activate
            Sheets(SchFeuil11).Activate
            Sheets(SchFeuil12).Activate
            Sheets(SchFeuil13).Activate
            Sheets(SchFeuil14).Activate
            Sheets(SchFeuil15).Activate
        End If
     
    'on planque toutes les autres
     
     
     
     
           If Sheets(x).Name <> [SchFeuil] And [SchFeuil1] And [SchFeuil2] And [SchFeuil3] And [SchFeuil4] And [SchFeuil5] And [SchFeuil6] And [SchFeuil7] And [SchFeuil8] And [SchFeuil9] And [SchFeuil10] And [SchFeuil11] And [SchFeuil12] And [SchFeuil13] And [SchFeuil14] And [SchFeuil15] Then
           Sheets(x).Visible = xlSheetVeryHidden
     
     
     
             End If
     
     
     
    End Sub
    Merci d'avance.

    Cordialement,

    Julie

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Novembre 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2013
    Messages : 120
    Par défaut
    Bonjour,

    Voici le code complet qui gère une interface de connexion, avec également si on se connecte en admin, on afficher plus de feuilles qu'en simple utilisateur. C'est à adapter à ton projet bien sur mais la base est la.

    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
    Set plage_user = Worksheets("User").Range(Worksheets("User").Cells(2, 1), Worksheets("User").Range("A2").End(xlDown).Offset(1, 0))
        Set plage_mdp = Worksheets("User").Range(Worksheets("User").Cells(2, 2), Worksheets("User").Range("B2").End(xlDown).Offset(1, 0))
     
        tab_login() = Application.Transpose(plage_user.Value)
        tab_mdp() = Application.Transpose(plage_mdp.Value)
     
     
     
     
     
     
     
        'Si l'admin se connecte, alors on affiche la feuill contenant les informations de connexions
        If TextBoxLogin = "Admin" And TextBoxMDP = tab_mdp(1) Then
            Worksheets("User").Visible = True
            Worksheets("BDD").Visible = True
            Worksheets("Filtre").Visible = True
            Worksheets("Acceuil").Visible = False
            Worksheets("Menu").Visible = True
            Worksheets("Salarie").Visible = True
            Worksheets("Domaine").Visible = True
            Unload Me
            'On saute à la fin de la fonction pour ne pas passer par les autres if
            GoTo fin
     
            End If
     
     
        compteur = 1
     
     
            'On parcour tous nos tableaux contnant les informations de connexion
            Do While compteur < 29
     
                If Nom = tab_login(compteur) And mdp = tab_mdp(compteur) And Nom <> void And mdp <> void Then
     
                 Worksheets("User").Visible = False
                 Worksheets("BDD").Visible = True
                 Worksheets("Filtre").Visible = True
                 Worksheets("Acceuil").Visible = False
                 Worksheets("Menu").Visible = True
                 Worksheets("Salarie").Visible = True
                 Worksheets("Domaine").Visible = True
                 Unload Me
                'Si on trouve les bons idntifiants, on sort de la boucle
     
                 GoTo fin
     
                End If
                    compteur = compteur + 1
                Loop

    Si tu as des questions, je reste dispo

    Thomas

  3. #3
    Invité
    Invité(e)
    Par défaut Bonjour,
    regarde le fichier joint!
    Fichiers attachés Fichiers attachés

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 19
    Par défaut
    Merci pour votre aide.
    Je me suis débrouillée un peu autrement finalement, mais ça m'a aidé quand même

Discussions similaires

  1. Rendre un ONGLET visible/invisble par programmation
    Par mazbap dans le forum WebDev
    Réponses: 5
    Dernier message: 19/06/2012, 14h31
  2. Initialisation Onglets visibles / sélectionnés
    Par flotho dans le forum Débuter
    Réponses: 4
    Dernier message: 16/11/2010, 18h16
  3. [A-03]Désactiver onglet (visible)
    Par fxbrg dans le forum IHM
    Réponses: 12
    Dernier message: 18/03/2009, 09h39
  4. [E-07] Rendre un onglet visible ou non dans le ruban
    Par zit_zit dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 29/09/2008, 19h00
  5. Rendre invisible ou visible un onglet de jTabbedPane
    Par hugobob dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 22/02/2007, 01h01

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