Bonjour tout le monde,
J'ai réussi à configurer Excel afin que chaque utilisateur accède uniquement aux feuilles qui lui sont autorisées via un mot de passe grâce à la fiche pratique suivante (qui semble inspiré de celui de ce site, mais en plus simple et gratuit).
Hier tout fonctionnait à merveille mais là, impossible de comprendre on m'indique " Erreur d'éxecution '9': L'indice n'appartient pas à la sélection " quand je me logue et le message d'erreur suivant apparait " Impossible d'exécuter le code en mode arrêt " .
Le débogage me dit que l'erreur vient de la ligne en gras ci-dessous :
Sub AfficheFeuilles(Utilisateur As String)
Dim Col As Byte, i As Byte, Lig As Integer
With Sheets("parametrage")
'dans la feuille paramétrage
'comme on va boucler de la colonne 4 à la dernière colonne, on stocke le n° de la dern colonne :
Col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
'on cherche colonne A le nom d'utilisateur saisi et on stocke son num de ligne
Lig = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole).Row
For i = 3 To Col
If UCase(.Cells(Lig, i)) = "X" Then 'si on trouve un "X" dans la cellule
[b]Sheets(.Cells(1, i).Value).Visible = True[/b] 'on affiche la feuille
Else
Sheets(.Cells(1, i).Value).Visible = xlSheetVeryHidden 'sinon on la masque
End If
Next i
End With
End Sub
J'ai enlevé le code suivant dans ThisWoorkbook pour que vous n'ayez pas besoin de vous loguer:
Private Sub Workbook_Open()
HorlogeEnG5
Dim Ws As Worksheet
'Masque toutes les feuilles sauf la feuille "Feuil1"
'!!!! ADAPTEZ le nom de la feuille qui doit rester affichée
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> "vierge" Then Ws.Visible = xlSheetVeryHidden
Next Ws
'Charge l'Userform en mémoire
Load UserForm1
'Affiche l'Userform
UserForm1.Show
End Sub
Merci d'avance pour votre aide !