IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Combobox.dropdown ne fonctionne pas


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 94
    Points : 54
    Points
    54
    Par défaut Combobox.dropdown ne fonctionne pas
    Bonjour à tous,

    Je sollicite le forum sur cette question d'une instruction combobox.dropdown que j'ai placée dans une procédure BeforeUpdate dudit combobox et qui ne fonctionne pas. En quelques mots :

    • J'ai un formulaire dont la source est une table de ma base access, en feuille de réponse dynamique
    • Dans ce formulaire j'ai un combobox (dont le nom est "Status") qui est chargé par une liste depuis un serveur SQL. Ce comobobox est limité à la liste chargée, n'autorise pas les modifications des éléments de la liste. (La liste est en fait un tableau de 3 colonnes dont la première fait le lien avec la table source de mon formulaire).
    • Logiquement quand je rentre une valeur différente de la liste dans le combo j'ai le message d'erreur Access me disant que je ne peux pas rentrer une valeur qui n'est pas dans la liste.
    • En revanche si je rentre la valeur null, ce message n'apparait pas, ce qui ne me choque pas puisque la valeur null ne peut pas se comparer aux valeurs de la liste
    • J'utilise donc l'évènement BeforeUpdate du combo pour gérer le cas où la valeur null est rentrée.
    • Lorsque la valeur null est détectée j'annule l'update, je génère un ESCAPE pour retrouver ma valeur précédente et je voudrais que ma liste se déroule pour inciter l'utilisateur à choisir dans la liste...


    C'est là qu'est le problème : l'entrée de la valeur null est bien annulée, je retrouve la valeur précédente mais l'instruction combobox.dropdown est inopérante et la liste ne se déroule pas. Le focus est pourtant bien sur le combo en question. Auriez-vous une piste ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Public Sub Status_BeforeUpdate(Cancel As Integer)
        If IsNull(Me.Controls("Status")) Then
        MsgBox "Status cannot be blank"
        Cancel = True
        SendKeys "{ESC}"
        Me.Controls("Status").Dropdown
        End If
    End Sub
    Merci pour votre aide
    Stargates

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 869
    Points : 15 005
    Points
    15 005
    Par défaut
    bonsoir,
    plutôt que Sendkeys un peu limite et pas très fiable, utilise Undo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Public Sub Status_BeforeUpdate(Cancel As Integer)
        If IsNull(Me.Controls("Status")) Then
            MsgBox "Status cannot be blank"
            Cancel = True
            Me.Controls("Status").Undo
            Me.Controls("Status").Dropdown
        End If
    End Sub
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 94
    Points : 54
    Points
    54
    Par défaut
    Merci d'avoir regardé. Le Undo marche en effet, mais il ne résout pas le pb du non déroulement de la liste. J'ai essayé d'intercaler un setfocus sur le combo pour être sûr qu'il était sélectionné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public Sub Status_BeforeUpdate(Cancel As Integer)
        If IsNull(Me.Controls("Status")) Then
        MsgBox "Status cannot be blank"
        Cancel = True
        Me.Controls("Status").Undo
        Me.Controls("Status").SetFocus
        Me.Controls("Status").Dropdown
        End If
    End Sub

    et là j'ai une erreur
    Nom : Message erreur.png
Affichages : 36
Taille : 7,2 Ko

    Or je crois que le dropdown ne marche que si le focus est sur le combo, donc n'est-ce pas un pb de positionnement du focus (pourtant le curseur apparait bien dans le combo...)

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 869
    Points : 15 005
    Points
    15 005
    Par défaut
    J'ai essayé d'intercaler un setfocus sur le combo
    c'est inutile: le système garde nativement le focus sur le contrôle en cas d'erreur sur l'évènement BeforeUpdate, d'ailleurs le message d'erreur vient de cette instruction inutile.
    Je confirme que cela fonctionne avec une table Access interne, le problème vient peut-être que la table est externe ... ou autre chose
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. Bouton dropdown ne fonctionne pas
    Par kheironn dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 21/02/2022, 13h16
  2. [BootStrap] Bouton dropDown ne fonctionne pas
    Par Diegomarck dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 03/05/2020, 19h44
  3. [Bootstrap] Menu dropdown ne fonctionne pas
    Par Sebastien31t dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 15/08/2019, 12h07
  4. ComboBox.MatchRequired ne fonctionne pas
    Par ghosty04 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/06/2009, 19h14
  5. Réponses: 23
    Dernier message: 07/02/2006, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo