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

IHM Discussion :

Focus sur un champ du formulaire


Sujet :

IHM

  1. #1
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut Focus sur un champ du formulaire
    Bonjour,


    J'ai un petit soucis avec le bout de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub NomEntreprise_LostFocus()
     
            If Me.NomEntreprise Like ("*'*") Then       'Interdit le caractère mentionné dans la saisie du nom
                Me.NomEntreprise.SetFocus
                MsgBox ("Caractère ' interdit")
            Else
            End If
     
    End Sub
    Si le caractère ' est saisi dans le champ NomEntreprise j'envoie un msgbox et je veux que le focus revienne sur le champ NomEntreprise.
    Et là cela ne fonctionne pas, il se place sur le champ suivant de la tabulation.

    J'ai essayé de mettre le même code sur la réception du champ suivant sur réception focus, là cela fonctionne mais ne me convient pas totalement.
    Quelqu'un aurait une idée du problème ?

    Merci d'avance

    Marcopololo

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Je suis surpris qu'il ne marche pas mais je déplacerai simplement ton code de contrôle sur Après MAJ (after update). Ça devrait donner le même résultat.

    A+

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    je pense que l'événement "sur sortie" est plus approprié que "sur perte de focus".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub NomEntreprise_Exit(Cancel As Integer)
     
            If Me.NomEntreprise Like ("*'*") Then       'Interdit le caractère mentionné dans la saisie du nom
                Cancel=True  ' Annule sortie du contrôle
                MsgBox ("Caractère ' interdit")
            Else
            End If
     
    End Sub
    A+

  4. #4
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Effectivement cela devrait marcher. J'ai aussi essayé l'idée de LedZepII, et cela fait la même chose.

    Plus que bizarre !!

    Marcopololo

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonjour,
    testé chez moi ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub NomEntreprise_Exit(Cancel As Integer)
    If Me.NomEntreprise Like ("*'*") Then
     
     MsgBox ("caractère ' interdit"), vbCritical
     Cancel = True
     
    End If
    End Sub
    c'est la même que LedZeppII à l'exeption du cancel après MsgBox, il est possible que la validation de MsgBox passe le focus au champ suivant
    voir chez vous,
    à +

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    plus probable,
    cancel = true annule la procédure évenement c'est pour cela probablement que le focus retourne au champ en cours, à confirmer par spécialiste !

  7. #7
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    J'ai refais le test, mais toujours le même soucis. Donc pour l'instant je reste avec ce bout de code sur la réception focus du champ suivant. Et la c'et OK.

    Encore plus étonnant j'ai testé avec un formulaire presuqe identique et la ca fonctionne.

    Marcopololo

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 238
    Points : 236
    Points
    236
    Par défaut
    Bonsoir,

    Si le caractère ' est saisi dans le champ NomEntreprise j'envoie un msgbox et je veux que le focus revienne sur le champ NomEntreprise.
    Et là cela ne fonctionne pas, il se place sur le champ suivant de la tabulation.
    Aberration classique d'Access ! La solution : envoyer le focus sur un autre champ puis le renvoyer sur le champ que tu vises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub NomEntreprise_LostFocus()
     
            If Me.NomEntreprise Like ("*'*") Then       'Interdit le caractère mentionné dans la saisie du nom
                Me.AutreChamp.SetFocus
                Me.NomEntreprise.SetFocus
                MsgBox ("Caractère ' interdit")
            Else
            End If
     
    End Sub
    Cela se passe tellement vite que tu ne vois rien à l'écran. Espérant que cela t'aidera.

    Bonne soirée.

Discussions similaires

  1. [AC-2010] ouvrir un formulaire sur reception du focus sur un champs texte
    Par bambi12047 dans le forum VBA Access
    Réponses: 4
    Dernier message: 11/04/2012, 13h54
  2. Comment définir un focus sur un champ (ex:login) ?
    Par vandeyy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/01/2007, 11h05
  3. Focus sur un champ de formulaire au chargement de la page
    Par feanor11 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 01/11/2006, 20h43
  4. [Dates] Test sur un champ de formulaire
    Par rdams dans le forum Langage
    Réponses: 4
    Dernier message: 15/09/2005, 16h03
  5. mettre le focus sur le champ approprié
    Par discogarden dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/07/2005, 16h59

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