Bonjour,
Je mets en place une sécurité assez complexe, basée sur 3 tables Id et un Id connecté.
Je voudrais autoriser un accès à tous les Id des table 2 et 3 et à l'Id connecté (s'il fait parti de la table 1).
Voici mon code (qui fonctionne pour autorisé un Id d'une seule table)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Dim NomChoisi As String
Application.DisplayAlerts = False
NomChoisi = "Car Cae"
UsAbg = Sheets("Données").[B2] 'Id connecté
With Sheets("Données")
'Si NomChoisi appartient aux tables 2 ou 3 ou est égal à UsAbg --- la table 2 est en P5:P46, la table 3 est en V5:V22
Set Cel = Union(Range("TbAT[At Abg]"), Range("TbAll[All Abg]"), UsAbg).Find(NomChoisi, Union(Range("B2"), Range("P5"), Range("V5")))
If Not Cel Is Nothing Then
'----------
Procédure si Ok
Set Cel = Nothing
'------------Suite Sécurité si Ko
Else
Call MsgBox("SECURITE" ...)
End With
Application.DisplayAlerts = True |
Je dois avoir un pb avec find, mais je maitrise pas bien
Est-ce que qq'1 peut m'aider svp.
J'ai déjà trouvé une explication / erreur, car j'ai utilisé une variable (UsAbg) dans mon Union. Donc j'ai corrigé mon code par
Set Cel= Union(Range("TbAT[At Abg]"), Range("TbAll[All Abg]"), Range("B2"))
si je m'arrête là et que je fais Cel.Select, mes 3 zones sont bien sélectionnées, mais dès que j'ajoute le find, j'ai, le motif d'erreur est : "Incompatibilité de type".
J'ai essayé avec Dim Cel as Variant, mais cela ne change rien.
Merci de votre aide
Partager