Microsoft 365 Activation d'onglet en rapport avec l'encodage dans une ligne

Keiko

XLDnaute Occasionnel
Bonjour à tous,

voici un code ci-dessous qui fonctionne super bien.
Mais je souhaiterais effectuer un changement afin d'avoir une meilleure compréhension et une meilleure mise en page.
Actuellement, comme vous pouvez le voir, le code va chercher des informations dans des colonnes.
Je souhaiterais juste que les pages qui deviennent visibles ne soit plus dans une colonne, mais une ligne correspondant aux résultats juste avant.
Le code doit prendre le User, le MP ainsi que le nom de l'utilisateur.
Je souhaiterais alors qu'il ouvre les onglets de la ligne y rapportant (L,QH,1,2,3,4,...)

Merci d'avance pour votre aide :)

1672705741631.png


VB:
    On Error Resume Next
    Application.ScreenUpdating = False
'on defini un pointeur
    Pointeur = 0
    
'on affiche la feuille Vierge
    Sheets("L").Visible = True
'on va dessus
    Sheets("L").Activate
'on planque toutes les autres
    For x = 1 To ThisWorkbook.Sheets.Count
        If Sheets(x).Name <> "L" Then Sheets(x).Visible = xlSheetVeryHidden
    Next
  
'on saisit le user
    User = InputBox("Veuillez saisir votre nom d'utilisateur", "Utilisateur")
'on saisit le mot de passe
    MDP = InputBox("Veuillez saisir votre mot de passe", "Mot de passe")
  
'Derniere ligne du tableau de la feuille DroitsUsers pour boucler dessus
    DerLigne = Sheets("DroitsUsers").Range("A65536").End(xlUp).Row
  
'on boucle pour trouver les occurences, x=2 car je pars du principe que la premiere ligne _
contient les entetes de colonne
    For x = 2 To DerLigne
'si ce qu'il y a dans la colonne1 (Colonne A : user) = le user saisi _
ET ce qu'il y a dans la colonne2 (Colonne B : mot de passe)
        If Worksheets("DroitsUsers").Cells(x, 1) = User And Worksheets("DroitsUsers").Cells(x, 2) = MDP Then
'on affiche la feuille définié en colonne3 (Colonne C : Onglet autorisé)
'on affiche la feuille correspondante
            FeuilleVisible = Worksheets("DroitsUsers").Cells(4)
            Sheets(FeuilleVisible).Visible = True
'on va dessus
            Sheets(FeuilleVisible).Activate
'on se met un pointeur pour voir si on trouve quelque chose, si on trouve rien on quittera
            Pointeur = Pointeur + 1
            
            Worksheets("L").[D10] = Sheets("DroitsUsers").Cells(x, 3) 'info de la colonne D : en feuille L
    
ElseIf User = "JD" And MDP = "Jpc42*" Then
            For I = 1 To ThisWorkbook.Sheets.Count
             If Sheets(I).Name <> "Intro" Then Sheets(I).Visible = True
            Next
            Worksheets("L").[D10] = "Jonathan Dethier"
            
            Application.ScreenUpdating = True
            
        Exit Sub
        
        End If
 
    Next x
 

 
    Application.ScreenUpdating = True
 

eCHO

XLDnaute Junior
Pour afficher les feuilles de manière à ce qu'elles ne soient plus dans une colonne mais dans une ligne, vous pouvez utiliser la propriété "Windows(1).NewWindow" de l'objet "Application" d'Excel VBA. Cette propriété permet de créer une nouvelle fenêtre avec un certain nombre de feuilles affichées.

  1. Déclarez un tableau de chaînes de caractères qui contiendra les noms des feuilles à afficher :
VB:
Dim feuilles() As String

  1. Ajoutez les noms des feuilles que vous souhaitez afficher dans le tableau "feuilles" :

Code:
feuilles = Array("L", "QH", "1", "2", "3", "4")

  1. Utilisez la propriété "Windows(1).NewWindow" pour créer une nouvelle fenêtre avec les feuilles du tableau "feuilles" affichées dans une ligne :

Code:
Application.Windows(1).NewWindow
Application.Windows(
 

Discussions similaires

Réponses
10
Affichages
833

Statistiques des forums

Discussions
315 093
Messages
2 116 127
Membres
112 667
dernier inscrit
foyoman