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 :

Garder le focus si condition fausse


Sujet :

IHM

  1. #1
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut Garder le focus si condition fausse
    Bonjour,

    j'ai un petit problème certainement tout bête.

    j'ai un formulaire avec plusieurs zone de texte. Dans une zone de texte, l'utilisateur peut taper un n° de client. Un fois le numéro entré j'ouvre un formulaire basé sur le client.
    Le problème vient que j'aimerais tester si le numéro existe, s'il n'existe pas j'affiche un message "client n'existe pas" et je veux que le focus reste sur la zone de texte.

    J'ai fais le test sur avant MAj et après Maj avec setfocus ou docmd.gotocontrol mais le focus passe toujours à la zone de texte suivante

    merci de votre aide

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Essaie avec le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub lib_AfterUpdate()
    On Error GoTo lib_Err
        If test Then
            MsgBox "Numéro inconnu"
            libelle.SetFocus
            GoTo lib_Exit
        End If
     
    lib_Exit:
        Exit Sub
     
    lib_Err:
        MsgBox Error$
        Resume lib_Exit
    End Sub

  3. #3
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    désolé çà ne fonctionne pas il va toujour sur la zone de texte suivante

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Et mettant ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Private Sub lib_AfterUpdate() 
    On Error GoTo lib_Err 
        Dim myDb As DAO.Database
        Dim my_lib As DAO.QueryDef
        Dim o_lib  As DAO.Recordset
        Set myDb = CurrentDb
        Set my_lib  = myDb.QueryDefs("requete")
        Set o_lib  = my_lib.OpenRecordset()
        If o_lib .RecordCount < 1 Then
           MsgBox "Numéro inconnu" 
           lib.SetFocus
           GoTo lib_Exit 
           End If
        o_lib.Close
    lib_Exit: 
        Exit Sub 
     
    lib_Err: 
        MsgBox Error$ 
        Resume lib_Exit 
    End Sub
    Avec "requete" qui est ta requête qui te permet de savoir si le numéro choisi existe...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    As-tu essayé de mettre le test lorsque le champ suivant à le focus, à ce moment tu redonnes le focus au champ précédent. C'est comme cela que je fais

    Starec

  6. #6
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut,
    pourquoi ne pas mettre le test d'occurence sur ouverture du Form2 et exploiter Cancel pour annuler l'ouverture si Non Trouvé. Le passage de focus se fait très bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_Open(Cancel As Integer)    'Form2
    If Me.RecordsetClone.RecordCount = 0 Then
    msgbox "pas trouvé"
    Cancel = True 'Form2 ne s'ouvre pas
    Forms!Form1!libelle.SetFocus  'Focus sur la zone de Form1
    End If
    End Sub

  7. #7
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    Le problème ne vient pas de là



    comme sur l'image j'ai un formulaire qui sert de filtre pour sélectionner des exploitants dans une zone de liste.
    Pour les exploitants j'ai 2 possibilités soit mettre un n° d'exploitant dans le champs 2 et celui d'après puis il mets les exploitants dans la zone de liste en dessous. (on peut ainsi sélectionné d'un numéro jusqu'à un numéro)

    maintenant si la personne qui recherche un exploitant connait ce numéro elle le tape dans la case 1 et enter puis j'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Private Sub Fil_Agriseul_AfterUpdate()
        Dim bd As Database
        Dim rst As Recordset
     
        Set bd = CurrentDb()
        Set rst = bd.OpenRecordset("SELECT T_Agriculteur.ID_Exploitant FROM T_Agriculteur WHERE (((T_Agriculteur.ID_Exploitant)=" & Me![Fil_Agriseul] & "));", dbOpenDynaset)
        If rst.EOF Then
            MsgBox (" ce numéro d'exploitant n'existe pas ")
        Else
     
     
            Me![Fil_NoAgriSup] = ""
            Me![Fil_NoAgriInf] = ""
            Me![Fil_NoComInf] = ""
            Me![Fil_NoComSup] = ""
            Me![Fil_Localite] = ""
            Me![Fil_Agriculteur] = ""
            RechFiltre
            'vérifie si le numéro existe
     
            DoCmd.OpenForm "F_RemplFormulaire", , , "ID_Exploitant =" & Me![Fil_Agriseul]
        End If
     
    Sortie:
        Exit Sub
     
    End Sub
    je désire donc que lorsque la personne se trompe que le formulaire ne s'ouvre pas et que le focus reste sur la zone de texte 1 or il va toujours sur la zone de texte 2


    Starec

    As-tu essayé de mettre le test lorsque le champ suivant à le focus, à ce moment tu redonnes le focus au champ précédent. C'est comme cela que je fais
    se serait une bonne idée mais lorsque la personne veux par exemple faire du numéro au numéro il serait automatiquement renvoyé sur la zone de texte 1

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re
    Il faut que tu forces la saisie des champs dans l'ordre que tu veux en les bloquant (locked)

    Starec

  9. #9
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    partie de ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ..........................
    ...................................
    If rst.EOF Then 
            MsgBox (" ce numéro d'exploitant n'existe pas ") 
        Else 
    ...........................
    j'aurais fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ..........................
    ...................................
    If rst.RecordCount=0 Then 
            MsgBox (" ce numéro d'exploitant n'existe pas ") 
            Me![Fil_NoAgriSup].setFocus   ' Obs 
            Me![Fil_Agriseul].setFocus      
            rst.close
            set rst=nothing
            exit sub
        Else 
    ...........................
    Obs: je donne le focus ici comme ça;tu peux choisir un autre control de ton choix.
    @+

  10. #10
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    merci bien Keita c'est vraiment super et je n'y avait pas pensé

    je pense que tu as trouvé l'astuce car c'est effectivement le fait d'aller plus loin et de revenir qui convient!!

  11. #11
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    hier je t'ai demandé de me filer l'astuce pour coller une image dans un poste.tu me le refuses?

  12. #12
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    je ne refuse rien je l'ai trouvée aujourd'hui moi-même.

    j'ai vu que pour mettre une image il faut mettre le chemin \\http de l'image donc il me falait un site

    donc j'ai fait un "site" c'est vraiment très très prétentieux !!!

    sur licos.fr tu vas dans le multimania et tu peux te créer un domaine gratuit avec une Url et j'ai mis simplement l'image sur le site dans le ffttp du site et j'ai recopié l'adresse sur developpez.com

    et miracle

    A+

  13. #13
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    merci beaucoup à toi.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/12/2006, 16h04
  2. Garder le focus et selectionner tout le texte
    Par Ender dans le forum Access
    Réponses: 2
    Dernier message: 14/08/2006, 12h29
  3. [C#]garder le focus sur un node d'un treeview
    Par Blo0d4x3 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/05/2006, 21h23
  4. Réponses: 4
    Dernier message: 22/12/2005, 17h05
  5. [VB.NET] Garder le focus de l'ascenceur
    Par Dnx dans le forum ASP.NET
    Réponses: 2
    Dernier message: 08/07/2005, 16h02

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