Microsoft 365 Ajouter bouton personne pour afficher feuilles

Aloha

XLDnaute Accro
Bonsoir,
Avec l'aide du forum j'ai su construire un système de compta individuelle avec regroupement des dépenses dans une feuille unique. Chaque fois qu'un nom est ajouté dans la liste une fiche est créée automatiquement.

Seulement, comme toutes les feuilles sont accessibles à tout le monde, je voudrais que, chaque fois qu'un nouveau nom apparaît dans la colonne H de la feuille "LISTES" un bouton avec le nom soit ajouté dans "MENU" (en-dessous du bouton inférieur existant déjà) et qu'à l'appui sur le bouton il faille entrer le mot de passe correspondant (colonne I de la feuille "LISTES"), que soit ensuite (si le mot de passe est correct) ôtée la protection du classeur, que la feuille en question soit affichée, et que le classeur soit reprotégé.
Lorsque la personne a fini de travailler dans sa feuille, elle la re-masque par l'appui sur un bouton:
* de préférence le même, mais je ne sais pas s'il est possible d'affecter deux actions différentes à un bouton: enclenché la première action et déclenché la deuxième action, à l'instar d'un vrai bouton ayant deux positions
* sinon un second bouton

J'ai réussi à faire afficher la feuille d'une personne déterminée, mais je ne sais pas comment faire pour généraliser: donc qu'un bouton soit ajouté pour chaque nouveau nom apparaissant dans la liste.

J'ai fabriqué aussi une petite macro servant à re-masquer la même feuille; là il manque donc aussi la généralisation.

Désavantage de ma façon de procéder: comme j'ai fait mes essais sur un fichier vierge et non le fichier original, il faut que j'arrive à intégrer le code dans le code existant déjà et ajoutant les noms et créant les feuilles par appui sur un bouton.

Merci d'avance pour toute aide
Aloha
 

Pièces jointes

  • Afficher feuille avec MDP.xlsm
    21.1 KB · Affichages: 16

Staple1600

XLDnaute Barbatruc
Re

=>patricktoulon
Donc on est d'accord, reste le problème ICC*
(et cela Excel ne sait pas gérer, Option Explicit ou pas ;))

*: je parle ici de l'usage du classeur d'Aloha
(ou du dernier exemple que tu as posté)
(qui vaut également pour tous les classeurs de la planète)
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

En restant dans l'approche K.I.S.S
Pré-requis (le nom des feuilles correspond rigoureusement au login windows des utilisateurs)
Donc à l'ouverture du classeur, seule la feuille (et une feuille Menu dans cet exemple) correspond au login (de la section active) s'afficheront.
Ainsi pas de mot de passe et pas de mauvais choix de feuille
(à condition d'être certain que l'utilisateur ouvrira le classeur en activant les macros)
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
For Each ws In Worksheets
ws.Visible = xlSheetVisible
Next
End Sub
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name = Environ("USERNAME") Or ws.Name = "Menu" Then
ws.Visible = xlSheetVisible
Else
ws.Visible = xlSheetHidden
End If
Next
End Sub
Test OK sur W10 et XL2K13.
 

Aloha

XLDnaute Accro
Bonjour,
Désolé, j'ai quelques problèmes pour comprendre le fonctionnement de ce système.
Si je comprends bien les opérations commencent par le login dans Windows.
Il n'y a pas de login! L'ordinateur tourne et les gens ouvrent le classeur contenant leur feuille. Ils ne font rien d'autre sur l'ordi, à part tenir un cahier de bord.
Si je comprends bien ton système il présuppose qu'une session (ce n'est peut-être pas le terme exact) soient définies pour chaque utilisateur avec un login par utilisateur.

Pour revenir à mes boutons, s'étant réduits à un seul bouton: un tel système n'est-il pas réalisable techniquement?
Donc un utilisateur appuie sur le bouton, il est invité à saisir son mot de passe et en cas de mdp correct, la feuille correspondante s'affiche.
Avec ce que j'ai su faire moi-même ça va jusqu'à la saisie du mdp, après je ne sais pas comment l'utiliser pour aller voir le nom correspondant dans la liste et d'afficher la feuille correspondante.
J'avais déjà pensé à inscrire dans une cellule une formule avec RECHERCHEV() pour faire le lien, de récupérer ainsi le nom et puis il ne resterait qu'à trouver un bout de code pour ouvrir la bonne feuille.
Bonne journée
Aloha
 

Hasco

XLDnaute Barbatruc
Repose en paix
ia orana,

Dans le fichier joint, je m'en tiens à peu près à votre demande. J'ai simplement fait rajouté par la macro, le nom de la feuille/utilisateur en B1 de LISTES, pour le retrouver et fermer la feuille au besoin.

Je suis d'accord avec l'ami @Staple1600 concernant les limites de ce genre de choses.
VB:
Sub afficherFeuille()
    Const TITRE As String = "Afficher ma feuille de travail"
    Dim ws As Worksheet
    Dim afficher As String
    Dim index As Variant
    
    afficher = InputBox("Entrez votre mot de passe", "Accès réservé")
    If afficher <> "" Then
        '
        ' Application.Match = formule de feuille EQUiV
        index = Application.Match(CInt(afficher), Sheets("LISTES").Range("I3:I5"), 0)
        If Not IsError(index) Then
            '
            ' obtenir la feuille correspondant
            Set ws = getWorkSheetByName(Sheets("LISTES").Range("H3:H5")(index))
            If Not ws Is Nothing Then
                ActiveWorkbook.Unprotect
                '
                ' Rendre visible la feuille
                ws.Visible = True
                '
                ' Retenir le nom de l'utilisateur/Feuille en cours en B1 de LISTES
                Sheets("LISTES").Range("B1") = ws.Name
                '
                'Décommenter la ligne suivante pour activer la feuille
                ' ws.Activate
                ActiveWorkbook.Protect
            Else
                MsgBox "Votre feuille est introuvable!", vbExclamation, TITRE
            End If
        Else
            MsgBox "Mot de passe incorrect!", vbExclamation, TITRE
        End If
    Else
        MsgBox "Opération interrompue par l'utilisateur!", vbExclamation, TITRE
    End If
End Sub

P.S. getWorkSheetByName est une petite fonction que j'ai incluse dans le fichier.

Aloha
 

Pièces jointes

  • Afficher feuille avec MDP.xlsm
    21.6 KB · Affichages: 5

Aloha

XLDnaute Accro
Bonjour,
Merci beaucoup: le code fonctionne.
Je n'ai pas besoin de la macro qui remasque la feuille: je pose un bouton sur la feuille-même.

D'ailleurs, d'ailleurs, je viens à l'instant d'avoir réussi à fabriquer un code qui fonctionne aussi, mais, ce qui est bizarre, uniquement si je le parcours ligne par ligne avec F8; si je le lance normalement, tous les mots de passe sont considérés comme faux.
Bizarre, non?
Bonne après-midi
et merci encore
Aloha
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Juste pour explications.
Mon exemple se basait un classeur partagé sur un réseau.
Et sur N utilisateurs avec N PC donc N sessions Windows
Donc quand N1 allume son PC et se logue sur sa session, mon code récupérait le nom de l’utilisateur (ici pour l'exemple N1)
Et donc quand N1 ouvrait le classeur seule la feuille N1 était affichée automatiquement sans que l'utilisateur se préoccupe de quoique ce soit.
Ce n'était qu'une piste à suivre ou pas.

>Aloha
Donc ta configuration, on a un seul PC pour N utilisateurs ?
Si ce PC est sous un OS récent, il y a bien un login, non ?

Bonsoir Roblochon
Sky is the limit but ICC is the pilot ;))
 

Discussions similaires

Réponses
4
Affichages
77

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 868
dernier inscrit
pierreselo33