Gestion utilisateur onglet visible ou non

julien34

XLDnaute Occasionnel
Bonjour à tous,

J'ai besoin d'un coup de main sur un code que je n'arrive pas à adapter à mon appli.
Ci joint le fichier qui fonctionne.
Impossible de le faire fonctionner chez moi.

Il plante sur
Code:
Sheets(.Cells(1, i).Value).Visible = True 'on affiche la feuille

Pouvez vous m'aider svp ?
Est ce parce que le nombre d'onglets diffèrent ? ou autre ?

Merci de m'éclairer ...
 

Pièces jointes

  • CJeqKJgbzwQ_motdepasseouverture.xls
    108 KB · Affichages: 56
  • CJeqKJgbzwQ_motdepasseouverture.xls
    108 KB · Affichages: 62
  • CJeqKJgbzwQ_motdepasseouverture.xls
    108 KB · Affichages: 67

julien34

XLDnaute Occasionnel
Re : Gestion utilisateur onglet visible ou non

Re,

J'ai essayé sur un classeur vierge ça marche. Donc je conçois qu'il est difficile pour vous de comprendre pourquoi ça ne fonctionne pas chez moi sur mon appli. Mais ne pouvant pas divulguer certaines info, je ne sais pas trop comment procéder ! Bien bloqué
 

julien34

XLDnaute Occasionnel
Re : Gestion utilisateur onglet visible ou non

Tout se déroule correctement jusqu'à
Code:
Sub AfficheFeuilles(Utilisateur As String)
Dim Col As Byte, i As Byte, Lig As Integer

With Sheets("Droitsusers") '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
    'boucle à partir de 3 car Feuil1 toujours affichée
    For i = 3 To Col
        If UCase(.Cells(Lig, i)) = "X" Then 'si on trouve un "X" dans la cellule
            Sheets(.Cells(1, i).Value).Visible = True 'on affiche la feuille
        Else
           Sheets(.Cells(1, i).Value).Visible = xlSheetVeryHidden 'sinon on la masque
        End If
    Next i
End With
End Sub

Et il plante sur
Code:
Sheets(.Cells(1, i).Value).Visible = True 'on affiche la feuille
 
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : Gestion utilisateur onglet visible ou non

cette feuille existe t elle ?

faites avant soit un msgbox sheets(.cells(1,i).value).name
ou faites un débogage
Debug.Print Sheets(.Cells(1, i).Value).Name

vous pouvez voir dans la fenêtre "Execution" le nom des feuilles :cool:
 
Dernière édition:

julien34

XLDnaute Occasionnel
Re : Gestion utilisateur onglet visible ou non

Bonjour gilbert_RGI,

Je ne connais pas cette méthode.
J'ai placé un msgbox sheets(.cells(1,i).value).name

Résulat, j'ai 2 msg box apres avoir rentré identifiant et mdp
"parametrage" et "feuil1"

Tu peux m'orienter stp?
Merci d'avance

PS: J'ai renommé la feuille "Droitusers" par "parametrage"
 

gilbert_RGI

XLDnaute Barbatruc
Re : Gestion utilisateur onglet visible ou non

comment as tu placé la ligne

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
'boucle à partir de 3 car Feuil1 toujours affichée
For i = 3 To Col
If UCase(.Cells(Lig, i)) = "X" Then 'si on trouve un "X" dans la cellule
Debug.Print Sheets(.Cells(1, i).Value).Name' <---------------------------------c'est ici qu'il faut la mettre
Sheets(.Cells(1, i).Value).Visible = True 'on affiche la feuille
Else
Sheets(.Cells(1, i).Value).Visible = xlSheetVeryHidden 'sinon on la masque
End If
Next i
End With
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 516
dernier inscrit
René Rivoli Monin