Fonction WorksheetFunction.HLookup

Bonjour à tous,

Le tableau joint est un extrait très synthétique.

Je suis peu accoutumé à la fonction HLOOKUP, je n'arrive pas à résoudre mon problème car j'ai du mal à comprendre la logique.

J'alimente une feuille "Droits" qui informe l'utilisateur actif et qui affiche en colonne les feuilles dont il a accès.

Lorsque j'ouvre une feuille (Activate) je me dirige vers mon module controle utilisateur.

Je récupère le nom de la feuille active et je souhaiterais contrôler dans ma feuille "Droits" si ma feuille active en deuxième ligne possède une "x" ce qui autorise à poursuivre le programme, sinon il y a un message d'erreur et on renvoie l'utilisateur au menu général.

Bien que je comprenne le fonctionnement de la fonction, dans mon exemple à traiter, je ne sais pas par quel bout résoudre le problème.

Option Explicit

Sub Controle_Utilisateurs()
Dim Autorisation As String
Dim Login As String
Dim FeuilleActive As String

FeuilleActive = ActiveSheet.Name
MsgBox FeuilleActive

Login = Sheets("Parametres").Range("Utilisateur_Actif")
MsgBox Login

Autorisation = WorksheetFunction.HLookup(FeuilleActive, Sheets("Droits").Range("F4:AV4"), 2, 0)
MsgBox Autorisation
If Autorisation <> "x" Then
    MsgBox "Vous n'avez pas l'autorisation pour accéder à cette page"
    Worksheets("Menu General").Activate

End If
End Sub
22droits-d-acces.xlsm (21.83 Ko)

Bonjour Bruce21130,

Je te propose d'amender ta fonction de la façon suivante :

Sub Controle_Utilisateurs()
Dim Autorisation As String
Dim Login As String
Dim FeuilleActive As String

FeuilleActive = ActiveSheet.Name
MsgBox FeuilleActive

Login = Sheets("Parametres").Range("Utilisateur_Actif")
MsgBox Login

'Correction GVS dans HLookup:
' - la matrice doit comporter la ligne d'entête de la matrice
Autorisation = Application.WorksheetFunction.HLookup(FeuilleActive, Sheets("Droits").Range("F3:AV4"), 2, 0)
MsgBox Autorisation
'Correction GVS : pour prendre en compte x Majuscule et minuscule
If LCase(Autorisation) <> "x" Then
    MsgBox "Vous n'avez pas l'autorisation pour accéder à cette page"
    Worksheets("Menu General").Activate

End If
End Sub

Bonjour GVIALLES

Je vois mes deux erreurs principales, l'objet application je ne pouvais pas le savoir, j'ai consulté la documentation, mais c'est un peu flou dans les explications. Deuxièmement la plage n'était pas bonne.

Je te remercie pour le conseil concernant la gestion des majuscules minuscules, je n'y avais pas pensé.

J'ai corrigé suivant tes observations, j'ai retiré les msgbox de contrôle et tout fonctionne bien, tu m'enlèves une grosse épine du pied.

Il ne me restait plus que cette fonctionnalité là pour finaliser mon outil.

Petit question autre concernant l'utilisation d'un tableau par plusieurs personnes en même temps. Si je partage les fichiers, j'ai vu que les tableaux perdaient leur fonctionnalité. Si je prends l'option d'ouvrir sur le CLOUD des liens ne fonctionnent pas. Connais-tu une autre solution ou je dois me résoudre à ce que le deuxième utilisateur soit en "lecture seule".

Pas grave si tu n'as pas la réponse, j'en demande peut-être un peu trop pour une application excel.

Bonne fin de journée,

Cordialement

Bonjour Bruce22130,

N’en n’ayant pas d’expérience, je ne pourrais pas t’être d’un grand secours concernant l’accès concurrent par le cloud

Merci tout de même, bonne journée à toi.

Cordialement

Rechercher des sujets similaires à "fonction worksheetfunction hlookup"