Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[RESOLU] Amélioration d'un code

  • Initiateur de la discussion Initiateur de la discussion Ternoise
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ternoise

XLDnaute Occasionnel
Bonjour le Forum
Meilleur vœux à tous

J'aimerais modifier ce petit bout de code en ajoutant 2 conditions


Quand le code est celui de "direction" aller sur la feuille "Direction"
Quand le code est celui de "Administrateur" aller sur la feuille "Administrateur"
sinon aller sur la feuille "Utilisateur"


Merci de votre aide
David
 
Dernière édition:
Re : Amélioration d'un code

Bonjour à tous

Ternoise
On teste dans le vide?
Ou on attends ton fichier exemple ? 🙂

A vue de nez, je pencherai pour un Select Case mais j'attends ton fichier pour tester.
 
Re : Amélioration d'un code

Bonjour JM

Cela va être compliqué pour ressortir cette partie du module dans un fichier exemple.
Cette partie est dans un fil mais je sais plus lequel et de qui cela provient !
Je devrait prendre l'habitude de citer les personnes dans mon code.

Sinon, le code présenté fonctionne bien comme il est présenté.
J'avais essayé de mettre des "else" mais forcement sans résultat.

Cordialement
Meilleurs vœux
David
 
Re : Amélioration d'un code

Bonjour Ternoise, Staple1600

Si j'ai tout compris, comme le supputait Staple1600, un Select Case fait l'affaire

le code modifié du else:

Code:
Else
            Select Case R(1, 2)
            Case "ADMINISTRATEUR", "DIRECTION"
                NomFeuille = R(1, 2)
            Case Else
                NomFeuille = "UTILISATEUR"
            End Select
            
            With Worksheets(NomFeuille)
            '.Visible = -1 '
            '.Unprotect ([MdP_Feuille]) 'mot de passe
            .[$B$1] = R(1, 2)
            .Activate
            'Sheets("Menu").Visible = 2 '
            '.Protect ([MdP_Feuille]) 'mot de passe
            End With
        End If
  Unload Me

Bonne suite
 
Re : Amélioration d'un code

Bonsoir PAf

Meilleurs vœux et mer ci de ta réponse.

Je comprend pas trop avec "Nomfeuille"

J'ai fais ceci mais cela fonctionne pas pour les feuilles autres que utilisateur


Merci de ton aide
David
 
Re : Amélioration d'un code

Re,
le Select Case permet de déterminer le nom de la feuille qu'on va afficher.

si Case R(1, 2) contient "ADMINISTRATEUR", "DIRECTION" ou "NATHALIE", NomFeuille prendra la valeur "ADMINISTRATEUR", "DIRECTION" ou "NATHALIE". Dans les autres cas, NomFeuille prendre "UTILISATEUR" comme valeur.

ensuite, à l'issue du End Select, viens le code pour ouvrir la feuille correspondant au contenu de la Variable NomFeuille.

Donc, pour que ça fonctionne, utiliser le code ci dessous avec l' adaptation pour "NATHALIE":
Code:
Else
            '***** Détermination du type d'utilisateur
            Select Case R(1, 2)
            Case "ADMINISTRATEUR", "DIRECTION","NATHALIE"
                NomFeuille = R(1, 2)
            Case Else
                NomFeuille = "UTILISATEUR"
            End Select
           
            '**** Affichage  de la feuille dont le nom est désormais dans NomFeuille
            With Worksheets(NomFeuille)
            '.Visible = -1 '
            '.Unprotect ([MdP_Feuille]) 'mot de passe
            .[$B$1] = R(1, 2)
            .Activate
            'Sheets("Menu").Visible = 2 '
            '.Protect ([MdP_Feuille]) 'mot de passe
            End With
        End If
  Unload Me

A+
 
Re : Amélioration d'un code

Bonjour,

Mille excuses pour l'omission de la déclaration ! Mais ça n'a pas dû poser gros soucis.

pour la plage nommée, pas trouver mieux que ce code
Code:
        Else
        Flag = False
 '***** Détermination du type d'utilisateur
            For Each c In [PLAGENOM]
                If R(1, 2) = c.Value Then
                    NomFeuille = R(1, 2)
                    Flag = True
                    Exit For
                End If
            Next c
            If Flag = False Then NomFeuille = "UTILISATEUR"
           
            '**** Affichage  de la feuille dont le nom est désormais dans NomFeuille
            With Worksheets(NomFeuille)
            '.Visible = -1 '
            '.Unprotect ([MdP_Feuille]) 'mot de passe
            .[$B$1] = R(1, 2)
            .Activate
            'Sheets("Menu").Visible = 2 '
            '.Protect ([MdP_Feuille]) 'mot de passe
            End With
        End If
  Unload Me

où PLAGENOM est le nom de la plage nommée.
sans oublier de déclarer c as Range et Flag as Boolean

Si l'utilisateur est trouvé dans la plage nommée, on met son nom dans NomFeuille, et Flag à Vrai.
Puisque Flag est vrai on ne passe pas dans le test if Flag...
Si l'utilisateur n'est pas trouvé dans la plage nommée, Flag reste à Faux, on passe dans le test if Flag...et NomFeuille prend la valeur UTILISATEUR;

A+
le reste sans changement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
178
Réponses
15
Affichages
788
Réponses
3
Affichages
242
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…