Comment enlever le focus d'un controle

[Résolu]
Signaler
Messages postés
9
Date d'inscription
mercredi 6 février 2008
Statut
Membre
Dernière intervention
14 décembre 2010
-
Messages postés
9
Date d'inscription
mercredi 6 février 2008
Statut
Membre
Dernière intervention
14 décembre 2010
-
Bonjour à tous !

J'espére que je poste au bon endroit, je suis un perdu dans cette multitude de sections

Je suis en train de faire un formulaire sous access 2003, et je récupère et enregistre les données de ce formulaire via VBA.

Les contrôles du formulaire (étiquettes, listes, zones de texte...) apparaissent au fur et à mesure que les précédents sont remplis.

Quand on valide, (via un clic sur bouton), les données sont enregistrés dans la base, et le formulaire est réinitialisé (les contrôles sont cachés à nouveau et leur valeur est remise à celles par défaut)

Mon problème, c'est que la procédure cachant les contrôles se déclenche sur clic sur le bouton valider, et du coup la procédure plante car elle ne peut pas cacher le bouton puisqu'il a le focus.

J'ai beau chercher, je ne trouve aucun moyen "d'enlever" le focus du bouton au moment de l’exécution de la procédure.

Auriez vous une astuce ?

6 réponses

Messages postés
9
Date d'inscription
mercredi 6 février 2008
Statut
Membre
Dernière intervention
14 décembre 2010

Salut,
juste au cas où ça puisse servir à quelqu'un un jour, voilà comment je m'y suis pris :

Sachant que tous mes contrôles doivent disparaître sauf "zl_reference_demandeur"
    Dim mon_controle As Control
    For Each mon_controle In Me
        If mon_controle Is Me.bt_valider Then
            If Me.zl_reference_demandeur.Visible = True Then
                Me.zl_reference_demandeur.SetFocus
            Else
                Me.zl_reference_demandeur.Visible = True
                Me.zl_reference_demandeur.SetFocus
            End If
        End If
        mon_controle.Visible = False
    Next


Voilà, c'est pas spécialement joli, je sais pas si c'est le mieux adapté, mais ça marche
Messages postés
33468
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 septembre 2021
351
Bonjour,
As tu essayé de placer le focus ailleurs?
Par exemple sur un de tes controls qui lui n'est pas caché par ta macro ?

Regarde du côté de : .SetFocus

Private Sub Button1_click()

'Placement du Focus sur la TextBox1
Textbox1.SetFocus

'--- Suite du ton programme --
' ...tu caches tes contrôls...

End Sub


un 'truc' du genre pourrait surement t'aider.

Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,

exact il faut forcer le focus ailleurs. ex : poser une picturebox visible mais à une position x et y négative

++
[hr]
Messages postés
9
Date d'inscription
mercredi 6 février 2008
Statut
Membre
Dernière intervention
14 décembre 2010

Bonjour bonjour,
désolé j'étais pas mal occupé ces derniers jours.

En fait j'ai pas utilisé cette méthode avant car lorsque je "vide" mon formulaire, je fais un :

Dim mon_controle As Control
    For Each mon_controle In Me
        mon_controle.Visible = False
    Next


Du coup j'ai nul part où mettre mon focus ^^
C'est pas grave, je vais mettre une condition pour changer le focus si le controle sélectionné le posséde, mais j'espérais qu'il existe la possibilité de complétement enlever un focus, ce qui visiblement n'est pas possible.

Merci beaucoup
Messages postés
9
Date d'inscription
mercredi 6 février 2008
Statut
Membre
Dernière intervention
14 décembre 2010

Désolé du double post, je vois pas comment éditer mon message précédent, dois-je signaler d'une quelconque manière le sujet comme résolu ?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
si une ou plusieurs réponses ici conviennent tu peux les valider par le bouton "réponse acceptée".
sinon tu peux revenir plus tard pour indiquer ta manip et la valider à ce moment

++