Bonjour,
J'ai un ComboBox dans lequel l'utilisateur choisit le service de
l'entreprise dont il veut accéder aux archives. Jusque là pas de problème.
Mais j'ai deux service qui demandent plus de confidentialité : la direction
et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets
correspondants en fonction de l'utilisateur. Sur l'événement Change de ma
ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un
message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de
problème.
Il est nécessaire pour le bon fonctionnement de mon programme que la
sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au
départ).
- J'ai essayé Me.UndoAction mais çà ne fonctionne pas.
- J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans
les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé
application.EnableEvents = False avant cette opération mais l'événement
Change se déclenche quand même et çà me procure des erreurs ensuite (Entre
autre perte de la valeur de la variable globale qui contient les droits de
l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre
service).
La question est donc : Comment faire pour annuler la sélection faite par
l'utilisateur dans une ComboBox sans redéclencher l'événement Change ?
Merci de vottre aide.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
JLuc
*Bonjour CinéPhil*, Une autre facon de voir les choses : Si, au demarrage de l'appli, tu demande l'utilisateur,tu pourrais charger le combobox avec les choix auquels il a droit. De cette facon il ne verrai meme pas les choix auquels il n'a pas droit ! :-)
Bonjour, J'ai un ComboBox dans lequel l'utilisateur choisit le service de l'entreprise dont il veut accéder aux archives. Jusque là pas de problème. Mais j'ai deux service qui demandent plus de confidentialité : la direction et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets correspondants en fonction de l'utilisateur. Sur l'événement Change de ma ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de problème. Il est nécessaire pour le bon fonctionnement de mon programme que la sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au départ). - J'ai essayé Me.UndoAction mais çà ne fonctionne pas. - J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé application.EnableEvents = False avant cette opération mais l'événement Change se déclenche quand même et çà me procure des erreurs ensuite (Entre autre perte de la valeur de la variable globale qui contient les droits de l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre service).
La question est donc : Comment faire pour annuler la sélection faite par l'utilisateur dans une ComboBox sans redéclencher l'événement Change ? Merci de vottre aide.
-- ____ ( O | O ) -- _oooO_ JLuc _Oooo_
O-O
*Bonjour CinéPhil*,
Une autre facon de voir les choses :
Si, au demarrage de l'appli, tu demande l'utilisateur,tu pourrais
charger le combobox avec les choix auquels il a droit. De cette facon
il ne verrai meme pas les choix auquels il n'a pas droit ! :-)
Bonjour,
J'ai un ComboBox dans lequel l'utilisateur choisit le service de
l'entreprise dont il veut accéder aux archives. Jusque là pas de problème.
Mais j'ai deux service qui demandent plus de confidentialité : la direction
et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets
correspondants en fonction de l'utilisateur. Sur l'événement Change de ma
ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un
message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de
problème.
Il est nécessaire pour le bon fonctionnement de mon programme que la
sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au
départ).
- J'ai essayé Me.UndoAction mais çà ne fonctionne pas.
- J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans
les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé
application.EnableEvents = False avant cette opération mais l'événement
Change se déclenche quand même et çà me procure des erreurs ensuite (Entre
autre perte de la valeur de la variable globale qui contient les droits de
l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre
service).
La question est donc : Comment faire pour annuler la sélection faite par
l'utilisateur dans une ComboBox sans redéclencher l'événement Change ?
Merci de vottre aide.
*Bonjour CinéPhil*, Une autre facon de voir les choses : Si, au demarrage de l'appli, tu demande l'utilisateur,tu pourrais charger le combobox avec les choix auquels il a droit. De cette facon il ne verrai meme pas les choix auquels il n'a pas droit ! :-)
Bonjour, J'ai un ComboBox dans lequel l'utilisateur choisit le service de l'entreprise dont il veut accéder aux archives. Jusque là pas de problème. Mais j'ai deux service qui demandent plus de confidentialité : la direction et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets correspondants en fonction de l'utilisateur. Sur l'événement Change de ma ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de problème. Il est nécessaire pour le bon fonctionnement de mon programme que la sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au départ). - J'ai essayé Me.UndoAction mais çà ne fonctionne pas. - J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé application.EnableEvents = False avant cette opération mais l'événement Change se déclenche quand même et çà me procure des erreurs ensuite (Entre autre perte de la valeur de la variable globale qui contient les droits de l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre service).
La question est donc : Comment faire pour annuler la sélection faite par l'utilisateur dans une ComboBox sans redéclencher l'événement Change ? Merci de vottre aide.
-- ____ ( O | O ) -- _oooO_ JLuc _Oooo_
O-O
papou
Bonjour Quelle version Excel ? Je ne constate pas ton phénomène sur Excel 2003 avec ce type de test : Private Sub ComboBox1_Change() Select Case ComboBox1.Value Case "Huit", "Dix" MsgBox "vous n'êtes pas autorisés !", vbExclamation, "Désolé" End Select ComboBox1.ListIndex = -1 End Sub
Cordialement Pascal
"CinéPhil" a écrit dans le message de news:
Bonjour, J'ai un ComboBox dans lequel l'utilisateur choisit le service de l'entreprise dont il veut accéder aux archives. Jusque là pas de problème. Mais j'ai deux service qui demandent plus de confidentialité : la direction et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets correspondants en fonction de l'utilisateur. Sur l'événement Change de ma ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de problème. Il est nécessaire pour le bon fonctionnement de mon programme que la sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au départ). - J'ai essayé Me.UndoAction mais çà ne fonctionne pas. - J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé application.EnableEvents = False avant cette opération mais l'événement Change se déclenche quand même et çà me procure des erreurs ensuite (Entre autre perte de la valeur de la variable globale qui contient les droits de l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre service).
La question est donc : Comment faire pour annuler la sélection faite par l'utilisateur dans une ComboBox sans redéclencher l'événement Change ? Merci de vottre aide.
Bonjour
Quelle version Excel ?
Je ne constate pas ton phénomène sur Excel 2003 avec ce type de test :
Private Sub ComboBox1_Change()
Select Case ComboBox1.Value
Case "Huit", "Dix"
MsgBox "vous n'êtes pas autorisés !", vbExclamation, "Désolé"
End Select
ComboBox1.ListIndex = -1
End Sub
Cordialement
Pascal
"CinéPhil" <CinPhil@discussions.microsoft.com> a écrit dans le message de
news: F99888E3-D83A-428A-BB0F-24E7500EDB79@microsoft.com...
Bonjour,
J'ai un ComboBox dans lequel l'utilisateur choisit le service de
l'entreprise dont il veut accéder aux archives. Jusque là pas de problème.
Mais j'ai deux service qui demandent plus de confidentialité : la
direction
et les RH. J'ai donc créé un système de droits d'accès pour les deux
onglets
correspondants en fonction de l'utilisateur. Sur l'événement Change de ma
ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un
message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de
problème.
Il est nécessaire pour le bon fonctionnement de mon programme que la
sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au
départ).
- J'ai essayé Me.UndoAction mais çà ne fonctionne pas.
- J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais
dans
les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé
application.EnableEvents = False avant cette opération mais l'événement
Change se déclenche quand même et çà me procure des erreurs ensuite (Entre
autre perte de la valeur de la variable globale qui contient les droits de
l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque
autre
service).
La question est donc : Comment faire pour annuler la sélection faite par
l'utilisateur dans une ComboBox sans redéclencher l'événement Change ?
Merci de vottre aide.
Bonjour Quelle version Excel ? Je ne constate pas ton phénomène sur Excel 2003 avec ce type de test : Private Sub ComboBox1_Change() Select Case ComboBox1.Value Case "Huit", "Dix" MsgBox "vous n'êtes pas autorisés !", vbExclamation, "Désolé" End Select ComboBox1.ListIndex = -1 End Sub
Cordialement Pascal
"CinéPhil" a écrit dans le message de news:
Bonjour, J'ai un ComboBox dans lequel l'utilisateur choisit le service de l'entreprise dont il veut accéder aux archives. Jusque là pas de problème. Mais j'ai deux service qui demandent plus de confidentialité : la direction et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets correspondants en fonction de l'utilisateur. Sur l'événement Change de ma ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de problème. Il est nécessaire pour le bon fonctionnement de mon programme que la sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au départ). - J'ai essayé Me.UndoAction mais çà ne fonctionne pas. - J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé application.EnableEvents = False avant cette opération mais l'événement Change se déclenche quand même et çà me procure des erreurs ensuite (Entre autre perte de la valeur de la variable globale qui contient les droits de l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre service).
La question est donc : Comment faire pour annuler la sélection faite par l'utilisateur dans une ComboBox sans redéclencher l'événement Change ? Merci de vottre aide.
CinéPhil
J'ai résolu mon problème en transférant mon code dans la procédure événementielle AfterUpdate de la ComboBox. Mais la question reste posée car je trouve cet événement Change très embêtant ! Il faudrait, pour une ComboBox , un événement SelectionChange car l'événement Change se déclenche dès qu'on tape un caractère dans la zone de texte, alors que l'événement AfterUpdate ne s'exécute que lorsque la ComboBox a perdu le focus. Autrement dit, dans mon cas, l'utilisateur sélectionne un service dans la ComboBox et ne constate rien alors qu'une information devrait changer dans le UserForm. Celle-ci ne change que lorsque l'utilisateur change de contrôle ; ce n'est pas grave mais pas aussi bien que je l'aurais souhaité.
Bonjour, J'ai un ComboBox dans lequel l'utilisateur choisit le service de l'entreprise dont il veut accéder aux archives. Jusque là pas de problème. Mais j'ai deux service qui demandent plus de confidentialité : la direction et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets correspondants en fonction de l'utilisateur. Sur l'événement Change de ma ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de problème. Il est nécessaire pour le bon fonctionnement de mon programme que la sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au départ). - J'ai essayé Me.UndoAction mais çà ne fonctionne pas. - J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé application.EnableEvents = False avant cette opération mais l'événement Change se déclenche quand même et çà me procure des erreurs ensuite (Entre autre perte de la valeur de la variable globale qui contient les droits de l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre service).
La question est donc : Comment faire pour annuler la sélection faite par l'utilisateur dans une ComboBox sans redéclencher l'événement Change ? Merci de vottre aide.
J'ai résolu mon problème en transférant mon code dans la procédure
événementielle AfterUpdate de la ComboBox. Mais la question reste posée car
je trouve cet événement Change très embêtant !
Il faudrait, pour une ComboBox , un événement SelectionChange car
l'événement Change se déclenche dès qu'on tape un caractère dans la zone de
texte, alors que l'événement AfterUpdate ne s'exécute que lorsque la ComboBox
a perdu le focus. Autrement dit, dans mon cas, l'utilisateur sélectionne un
service dans la ComboBox et ne constate rien alors qu'une information devrait
changer dans le UserForm. Celle-ci ne change que lorsque l'utilisateur change
de contrôle ; ce n'est pas grave mais pas aussi bien que je l'aurais souhaité.
Bonjour,
J'ai un ComboBox dans lequel l'utilisateur choisit le service de
l'entreprise dont il veut accéder aux archives. Jusque là pas de problème.
Mais j'ai deux service qui demandent plus de confidentialité : la direction
et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets
correspondants en fonction de l'utilisateur. Sur l'événement Change de ma
ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un
message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de
problème.
Il est nécessaire pour le bon fonctionnement de mon programme que la
sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au
départ).
- J'ai essayé Me.UndoAction mais çà ne fonctionne pas.
- J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans
les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé
application.EnableEvents = False avant cette opération mais l'événement
Change se déclenche quand même et çà me procure des erreurs ensuite (Entre
autre perte de la valeur de la variable globale qui contient les droits de
l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre
service).
La question est donc : Comment faire pour annuler la sélection faite par
l'utilisateur dans une ComboBox sans redéclencher l'événement Change ?
Merci de vottre aide.
J'ai résolu mon problème en transférant mon code dans la procédure événementielle AfterUpdate de la ComboBox. Mais la question reste posée car je trouve cet événement Change très embêtant ! Il faudrait, pour une ComboBox , un événement SelectionChange car l'événement Change se déclenche dès qu'on tape un caractère dans la zone de texte, alors que l'événement AfterUpdate ne s'exécute que lorsque la ComboBox a perdu le focus. Autrement dit, dans mon cas, l'utilisateur sélectionne un service dans la ComboBox et ne constate rien alors qu'une information devrait changer dans le UserForm. Celle-ci ne change que lorsque l'utilisateur change de contrôle ; ce n'est pas grave mais pas aussi bien que je l'aurais souhaité.
Bonjour, J'ai un ComboBox dans lequel l'utilisateur choisit le service de l'entreprise dont il veut accéder aux archives. Jusque là pas de problème. Mais j'ai deux service qui demandent plus de confidentialité : la direction et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets correspondants en fonction de l'utilisateur. Sur l'événement Change de ma ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de problème. Il est nécessaire pour le bon fonctionnement de mon programme que la sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au départ). - J'ai essayé Me.UndoAction mais çà ne fonctionne pas. - J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé application.EnableEvents = False avant cette opération mais l'événement Change se déclenche quand même et çà me procure des erreurs ensuite (Entre autre perte de la valeur de la variable globale qui contient les droits de l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre service).
La question est donc : Comment faire pour annuler la sélection faite par l'utilisateur dans une ComboBox sans redéclencher l'événement Change ? Merci de vottre aide.
CinéPhil
Excel 2000 SP3 au boulot. Je regarderai chez-moi en version XP ce que çà donne.
Bonjour Quelle version Excel ? Je ne constate pas ton phénomène sur Excel 2003 avec ce type de test : Private Sub ComboBox1_Change() Select Case ComboBox1.Value Case "Huit", "Dix" MsgBox "vous n'êtes pas autorisés !", vbExclamation, "Désolé" End Select ComboBox1.ListIndex = -1 End Sub
Cordialement Pascal
"CinéPhil" a écrit dans le message de news:
Bonjour, J'ai un ComboBox dans lequel l'utilisateur choisit le service de l'entreprise dont il veut accéder aux archives. Jusque là pas de problème. Mais j'ai deux service qui demandent plus de confidentialité : la direction et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets correspondants en fonction de l'utilisateur. Sur l'événement Change de ma ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de problème. Il est nécessaire pour le bon fonctionnement de mon programme que la sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au départ). - J'ai essayé Me.UndoAction mais çà ne fonctionne pas. - J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé application.EnableEvents = False avant cette opération mais l'événement Change se déclenche quand même et çà me procure des erreurs ensuite (Entre autre perte de la valeur de la variable globale qui contient les droits de l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre service).
La question est donc : Comment faire pour annuler la sélection faite par l'utilisateur dans une ComboBox sans redéclencher l'événement Change ? Merci de vottre aide.
Excel 2000 SP3 au boulot. Je regarderai chez-moi en version XP ce que çà donne.
Bonjour
Quelle version Excel ?
Je ne constate pas ton phénomène sur Excel 2003 avec ce type de test :
Private Sub ComboBox1_Change()
Select Case ComboBox1.Value
Case "Huit", "Dix"
MsgBox "vous n'êtes pas autorisés !", vbExclamation, "Désolé"
End Select
ComboBox1.ListIndex = -1
End Sub
Cordialement
Pascal
"CinéPhil" <CinPhil@discussions.microsoft.com> a écrit dans le message de
news: F99888E3-D83A-428A-BB0F-24E7500EDB79@microsoft.com...
Bonjour,
J'ai un ComboBox dans lequel l'utilisateur choisit le service de
l'entreprise dont il veut accéder aux archives. Jusque là pas de problème.
Mais j'ai deux service qui demandent plus de confidentialité : la
direction
et les RH. J'ai donc créé un système de droits d'accès pour les deux
onglets
correspondants en fonction de l'utilisateur. Sur l'événement Change de ma
ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un
message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de
problème.
Il est nécessaire pour le bon fonctionnement de mon programme que la
sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au
départ).
- J'ai essayé Me.UndoAction mais çà ne fonctionne pas.
- J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais
dans
les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé
application.EnableEvents = False avant cette opération mais l'événement
Change se déclenche quand même et çà me procure des erreurs ensuite (Entre
autre perte de la valeur de la variable globale qui contient les droits de
l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque
autre
service).
La question est donc : Comment faire pour annuler la sélection faite par
l'utilisateur dans une ComboBox sans redéclencher l'événement Change ?
Merci de vottre aide.
Excel 2000 SP3 au boulot. Je regarderai chez-moi en version XP ce que çà donne.
Bonjour Quelle version Excel ? Je ne constate pas ton phénomène sur Excel 2003 avec ce type de test : Private Sub ComboBox1_Change() Select Case ComboBox1.Value Case "Huit", "Dix" MsgBox "vous n'êtes pas autorisés !", vbExclamation, "Désolé" End Select ComboBox1.ListIndex = -1 End Sub
Cordialement Pascal
"CinéPhil" a écrit dans le message de news:
Bonjour, J'ai un ComboBox dans lequel l'utilisateur choisit le service de l'entreprise dont il veut accéder aux archives. Jusque là pas de problème. Mais j'ai deux service qui demandent plus de confidentialité : la direction et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets correspondants en fonction de l'utilisateur. Sur l'événement Change de ma ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de problème. Il est nécessaire pour le bon fonctionnement de mon programme que la sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au départ). - J'ai essayé Me.UndoAction mais çà ne fonctionne pas. - J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé application.EnableEvents = False avant cette opération mais l'événement Change se déclenche quand même et çà me procure des erreurs ensuite (Entre autre perte de la valeur de la variable globale qui contient les droits de l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre service).
La question est donc : Comment faire pour annuler la sélection faite par l'utilisateur dans une ComboBox sans redéclencher l'événement Change ? Merci de vottre aide.
CinéPhil
J'y ai pensé mais c'est compliqué car la liste des services avec leur code, qui sert de source à la ComboBox, est dans une plage nommée d'un onglet masqué. La plage nommée est la valeur du RowSource de la ComboBox. C'est la manière la plus pratique que j'ai trouvée pour alimenter les ComboBox.
*Bonjour CinéPhil*, Une autre facon de voir les choses : Si, au demarrage de l'appli, tu demande l'utilisateur,tu pourrais charger le combobox avec les choix auquels il a droit. De cette facon il ne verrai meme pas les choix auquels il n'a pas droit ! :-)
Bonjour, J'ai un ComboBox dans lequel l'utilisateur choisit le service de l'entreprise dont il veut accéder aux archives. Jusque là pas de problème. Mais j'ai deux service qui demandent plus de confidentialité : la direction et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets correspondants en fonction de l'utilisateur. Sur l'événement Change de ma ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de problème. Il est nécessaire pour le bon fonctionnement de mon programme que la sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au départ). - J'ai essayé Me.UndoAction mais çà ne fonctionne pas. - J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé application.EnableEvents = False avant cette opération mais l'événement Change se déclenche quand même et çà me procure des erreurs ensuite (Entre autre perte de la valeur de la variable globale qui contient les droits de l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre service).
La question est donc : Comment faire pour annuler la sélection faite par l'utilisateur dans une ComboBox sans redéclencher l'événement Change ? Merci de vottre aide.
-- ____ ( O | O ) -- _oooO_ JLuc _Oooo_
O-O
J'y ai pensé mais c'est compliqué car la liste des services avec leur code,
qui sert de source à la ComboBox, est dans une plage nommée d'un onglet
masqué. La plage nommée est la valeur du RowSource de la ComboBox. C'est la
manière la plus pratique que j'ai trouvée pour alimenter les ComboBox.
*Bonjour CinéPhil*,
Une autre facon de voir les choses :
Si, au demarrage de l'appli, tu demande l'utilisateur,tu pourrais
charger le combobox avec les choix auquels il a droit. De cette facon
il ne verrai meme pas les choix auquels il n'a pas droit ! :-)
Bonjour,
J'ai un ComboBox dans lequel l'utilisateur choisit le service de
l'entreprise dont il veut accéder aux archives. Jusque là pas de problème.
Mais j'ai deux service qui demandent plus de confidentialité : la direction
et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets
correspondants en fonction de l'utilisateur. Sur l'événement Change de ma
ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un
message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de
problème.
Il est nécessaire pour le bon fonctionnement de mon programme que la
sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au
départ).
- J'ai essayé Me.UndoAction mais çà ne fonctionne pas.
- J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans
les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé
application.EnableEvents = False avant cette opération mais l'événement
Change se déclenche quand même et çà me procure des erreurs ensuite (Entre
autre perte de la valeur de la variable globale qui contient les droits de
l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre
service).
La question est donc : Comment faire pour annuler la sélection faite par
l'utilisateur dans une ComboBox sans redéclencher l'événement Change ?
Merci de vottre aide.
J'y ai pensé mais c'est compliqué car la liste des services avec leur code, qui sert de source à la ComboBox, est dans une plage nommée d'un onglet masqué. La plage nommée est la valeur du RowSource de la ComboBox. C'est la manière la plus pratique que j'ai trouvée pour alimenter les ComboBox.
*Bonjour CinéPhil*, Une autre facon de voir les choses : Si, au demarrage de l'appli, tu demande l'utilisateur,tu pourrais charger le combobox avec les choix auquels il a droit. De cette facon il ne verrai meme pas les choix auquels il n'a pas droit ! :-)
Bonjour, J'ai un ComboBox dans lequel l'utilisateur choisit le service de l'entreprise dont il veut accéder aux archives. Jusque là pas de problème. Mais j'ai deux service qui demandent plus de confidentialité : la direction et les RH. J'ai donc créé un système de droits d'accès pour les deux onglets correspondants en fonction de l'utilisateur. Sur l'événement Change de ma ComboBox, j'ai donc un test des droits de l'utilisateur qui lui envoie un message d'erreur s'il n'a pas le droit d'accès adéquat. Jusque là pas de problème. Il est nécessaire pour le bon fonctionnement de mon programme que la sélection de l'utilisateur soit annulée (zone ComboBox à blanc comme au départ). - J'ai essayé Me.UndoAction mais çà ne fonctionne pas. - J'ai essayé Me.ComboBox.ListIndex = -1 et Me.ComboBox.Value = "" mais dans les deux cas il redéclenche l'événement Change. J'ai bien sûr essayé application.EnableEvents = False avant cette opération mais l'événement Change se déclenche quand même et çà me procure des erreurs ensuite (Entre autre perte de la valeur de la variable globale qui contient les droits de l'utilisateur, ce qui l'empêche ensutie de sélectionner un quelconque autre service).
La question est donc : Comment faire pour annuler la sélection faite par l'utilisateur dans une ComboBox sans redéclencher l'événement Change ? Merci de vottre aide.
-- ____ ( O | O ) -- _oooO_ JLuc _Oooo_
O-O
CinéPhil
Suite de mon problème... Comme dit dans un autre message de cette file, j'ai résolu mon problème en transférant le code dans l'événement AfterUpdate. Il me reste cependant une petite imperfection mineure que j'aimerais quand même corriger... Pour que l'événement AfterUpdate s'exécute, il ne suffit pas que l'utilisateur sélectionne un élément de la liste (un service de l'entreprise), mais qu'il passe le focus à un autre contrôle de mon formulaire. J'aimerais donc que, en cas de message d'erreur à l'utilisateur pour accès interdit au service demandé, le focus revienne à la ComboBox. L'instruction évidente à mettre est Me.ComboBox.SetFocus. Mais cette instruction étant placée dans l'événement AfterUpdate, elle n'a aucun effet puisque ce n'est qu'à la fin du code de cet événement que le focus passe effectivement au contrôle suivant. Une idée par trop lourdingue à mettre en place ? Là encore, il me semble que sous Access (çà fait longtemps que je n'ai plus programmé sous Access) il existe l'événement SelectionChange(Cancel as boolean) ou un truc du genre ! Cà me serait bien utile ! Merci déjà à ceux qui m'ont répondu au premier problème.
Suite de mon problème...
Comme dit dans un autre message de cette file, j'ai résolu mon problème en
transférant le code dans l'événement AfterUpdate. Il me reste cependant une
petite imperfection mineure que j'aimerais quand même corriger...
Pour que l'événement AfterUpdate s'exécute, il ne suffit pas que
l'utilisateur sélectionne un élément de la liste (un service de
l'entreprise), mais qu'il passe le focus à un autre contrôle de mon
formulaire. J'aimerais donc que, en cas de message d'erreur à l'utilisateur
pour accès interdit au service demandé, le focus revienne à la ComboBox.
L'instruction évidente à mettre est Me.ComboBox.SetFocus. Mais cette
instruction étant placée dans l'événement AfterUpdate, elle n'a aucun effet
puisque ce n'est qu'à la fin du code de cet événement que le focus passe
effectivement au contrôle suivant.
Une idée par trop lourdingue à mettre en place ?
Là encore, il me semble que sous Access (çà fait longtemps que je n'ai plus
programmé sous Access) il existe l'événement SelectionChange(Cancel as
boolean) ou un truc du genre ! Cà me serait bien utile !
Merci déjà à ceux qui m'ont répondu au premier problème.
Suite de mon problème... Comme dit dans un autre message de cette file, j'ai résolu mon problème en transférant le code dans l'événement AfterUpdate. Il me reste cependant une petite imperfection mineure que j'aimerais quand même corriger... Pour que l'événement AfterUpdate s'exécute, il ne suffit pas que l'utilisateur sélectionne un élément de la liste (un service de l'entreprise), mais qu'il passe le focus à un autre contrôle de mon formulaire. J'aimerais donc que, en cas de message d'erreur à l'utilisateur pour accès interdit au service demandé, le focus revienne à la ComboBox. L'instruction évidente à mettre est Me.ComboBox.SetFocus. Mais cette instruction étant placée dans l'événement AfterUpdate, elle n'a aucun effet puisque ce n'est qu'à la fin du code de cet événement que le focus passe effectivement au contrôle suivant. Une idée par trop lourdingue à mettre en place ? Là encore, il me semble que sous Access (çà fait longtemps que je n'ai plus programmé sous Access) il existe l'événement SelectionChange(Cancel as boolean) ou un truc du genre ! Cà me serait bien utile ! Merci déjà à ceux qui m'ont répondu au premier problème.