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 :

creer boite de dialogue qui bloque un champ


Sujet :

IHM

  1. #21
    Membre du Club Avatar de ouflala
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Points : 53
    Points
    53
    Par défaut
    Bon bon bon...
    C'est super sympa toutes vos reponses...mais on s'y perd un peu...
    Les éleveurs sont entrés au fur et a mesure et le but c'est bien d'avoir un controle qui evite d'indemniser des gens qui n'en n'ont pas le droit.

    Normalement avec un msgbox suivit d'un setfocus ca devrait marcher...Mais je n'arrive pas a faire fonctionner le setfocus . Je voous joins mon code...
    If (Texte40 < Texte102) Then
    MsgBox ("ATTENTION c'est pas bon")
    Texte40.setfocus
    end if

  2. #22
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour ouflala,
    comment saisis-tu la date1 ?
    Parce que si la saisie se fait au clavier et non par un control calendrier ou Datepicker; tu dois peut-être préciser que le test s'effectue sur des dates.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IF DateValue(Texte40)<DateValue(Texte102) Then
      MsgBox "....."
      Texte40.SetFocus
    End if
    Par ailleurs, tu écris :
    Citation Envoyé par ouflala
    Les éleveurs sont entrés au fur et a mesure et le but c'est bien d'avoir un controle qui evite d'indemniser des gens qui n'en n'ont pas le droit.
    Je ne vois pas comment ici, tu fais la différence entre les élèveurs à indémniser et les autres. Puisque tu obliges la saisie d'une date de décès qui ouvre les droits à indémnisation, c'est que tu considères que seuls les éleveurs à indémniser sont saisis dans ce formulaire.
    C'est bien ça ?

  3. #23
    Membre du Club
    Homme Profil pro
    Consultant DBA en Suisse
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant DBA en Suisse
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 60
    Points
    60
    Par défaut
    Je comprend la même chose que ilank, c'est pour cela que j'ai proposé ma solution. Mais peut-être qu'on se trompe les deux.

    Donc ouflala peux tu nous dire si :

    • Tous les éleveurs seront rentrés
    • Seuls les éleveurs qui auront l'indémnisations seront rentrés


    Et pour que ton post soit plus clair, pourrais tu mettre la balise code stp.

    ps : azertix, oui je susi d'accord avec toi

    Merci d'avance.

    Bonne journée.

  4. #24
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par ouflala Voir le message
    Bon bon bon...
    C'est super sympa toutes vos reponses...mais on s'y perd un peu...
    Les éleveurs sont entrés au fur et a mesure et le but c'est bien d'avoir un controle qui evite d'indemniser des gens qui n'en n'ont pas le droit.

    Normalement avec un msgbox suivit d'un setfocus ca devrait marcher...Mais je n'arrive pas a faire fonctionner le setfocus . Je voous joins mon code...
    If (Texte40 < Texte102) Then
    MsgBox ("ATTENTION c'est pas bon")
    Texte40.setfocus
    end if
    Si je peux me permettre quelques conseils concernant ton code :
    - donner des noms explicites à tes contrôles et utiliser des préfixes
    - utiliser les syntaxes complètes :
    au lieu de :
    Texte40
    Je peux paraitre pointilleux, mais tu verras que ce sont de bonnes habitudes à prendre qui te faciliteront la vie, ainsi qu'au(x) développeur(s) qui reprendront éventuellement ton travail plus tard.
    De plus, quand tu tape ton code, tu n'a pas à chercher un nom de contrôle du genre
    Texte36
    tu as juste à taper "Me." et suivant si tu cherche une zone de texte ou une zone de liste déroulante, tu fais txt ou lst et tu obtiens la liste de tes contrôles

    Pour revenir au problème initial, j'irais plus loin qu'ilank en utilisant la fonction CDate() au lieu de DateValue() pour être sûr de comparer deux dates et non deux chaines de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If CDate(Me.Texte40.Value) < CDate(Me.Texte102.Value) Then
      MsgBox "....."
      Me.Texte40.SetFocus
    End if
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  5. #25
    Membre du Club Avatar de ouflala
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Points : 53
    Points
    53
    Par défaut
    Merci pour tous ces conseils...

    Par contre le set focus ne parche tjs pas...
    Quand je tape le code, que ce soit avant MAj, apres maj ou sur perte focus , un fois que je clique sur le OK de la fenetre msgbox, le focus n'est pas ur le bon champ...

  6. #26
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Curieux
    Ton champ n'est pas verrouillé ni désactivé ni invisible pourtant ...
    Ce sont les seules raisons qui pourraient empêcher la réception du focus (je crois).
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If CDate(Me.Texte40.Value) < CDate(Me.Texte102.Value) Then
      MsgBox "....."
      Me.Texte120.SetFocus
      Me.Texte40.SetFocus
    End if
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  7. #27
    Membre du Club Avatar de ouflala
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Points : 53
    Points
    53
    Par défaut
    Bon finalement, j'ai opté pour un verrouillage par defaut des champs. Ces derniers se deverrouillent qd la condition est remplie.
    Par contre comme mon formulaire est en mode continu ca deverrouille tous les enregistrements...

    qq'un a un solution???

  8. #28
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    J'ai testé chez moi le code que je t'ai donné plus haut et le focus est bien donné ...
    Je te mets la base en PJ
    Fichiers attachés Fichiers attachés
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  9. #29
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par ouflala Voir le message
    Bon finalement, j'ai opté pour un verrouillage par defaut des champs. Ces derniers se deverrouillent qd la condition est remplie.
    Par contre comme mon formulaire est en mode continu ca deverrouille tous les enregistrements...

    qq'un a un solution???
    Tu as positionné les propriétés de tes autres zones de texte sur Verrouillé ?
    Normalement, ça devrait utiliser ces propriétés au démarrage du formulaire ...
    Sinon tu les verrouille sur chargement du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Load()
       Me.monControle.Locked = True
    End Sub
    Poste ton(tes) code(s) stp
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  10. #30
    Membre du Club Avatar de ouflala
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Points : 53
    Points
    53
    Par défaut
    en fait c'est pas . locked que j'utilise, mais.enable=false
    Ca viendrait de la????

  11. #31
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Ben oui pardi !
    Je te l'ai dit plus haut
    Enabled = Activé en français et je t'ai donné plus haut les 3 raisons qui peuvent empêcher la réception du focus.
    Si tu désactive un contrôle, il existe, il est visible, mais on ne peut pas l'utiliser.
    Il faut que tu utilise Locked si tu veux empêcher la saisie dans la zone de texte

    Bonne continuation, je ne repasse pas avant demain
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  12. #32
    Membre habitué
    Profil pro
    Cadre technique
    Inscrit en
    Mai 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Cadre technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2006
    Messages : 194
    Points : 156
    Points
    156
    Par défaut
    Je comprends mieux maintenant les exigences d'une saisie de la date 1 et je suis tjs convaincu des propositions d'azertix et ce sans parti pris : logiques et répondant parfaitement au besoin.
    J' ajoute que je pourrai m'inspirer des petites finesses proposées. Comme quoi, l'échange d'idées est tjs intéressant.
    Bonsoir et bonne chance à Ouflala

  13. #33
    Membre du Club Avatar de ouflala
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Points : 53
    Points
    53
    Par défaut


    Ouf ca y est... J'ai réussi... Le setfocus marche, et les champs sont verrouillés...Pas de possibilité de changements...

    Un grand merci vous tous...

    Par contre du coup j'ai un autre pb...(et ioui, sinon ca serait trop facile...)

    L'enregistrement des animaux se fait sur un formulaire en mode continu, c'est a dire que les animaux sont à la suite pour un meme éleveur.

    Quand un champs se bloque, ca bloque ce champs pour tous les animaux du formulaire...Comment faire pour que ca ne bloque que le champ de l'animal en cours??

  14. #34
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Tu ne peux pas désactiver le contrôle juste pour un enregistrement, car c'est comme s'il y avait plusieurs fois le contrôle. Donc s'il est verrouillé, il le sera pour tous les enregistrements.
    Ce qu'il te faut faire, c'est réactiver les contrôles si la saisie de la date est bonne, puis tout déverrouiller quand tu clique sur ton bouton d'ajout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    If CDate(Me.Texte40.Value) < CDate(Me.Texte102.Value) Then
      'Quand c'est pas bon
      MsgBox "....."
      Me.Texte40.SetFocus
    Else
      'Quand c'est bon
      Me.monControle1.Locked = False
      Me.monControle2.Locked = False
      Me.monControle3.Locked = False
      'etc...
    End if
    Sur click du bouton d'ajout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Me.monControle1.Locked = True
    Me.monControle2.Locked = True
    Me.monControle3.Locked = True
    'etc...
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  15. #35
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour à tous,
    dans le cas où ton sous-formulaire à une source de données et que tous les controls sont eux-mêmes liés; tu peux essayer en placant le code dans le form_current,ou encore utiliser le format conditionnel et Enabled au lieu de Locked.

  16. #36
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par ilank Voir le message
    Bonjour à tous,
    dans le cas où ton sous-formulaire à une source de données et que tous les controls sont eux-mêmes liés; tu peux essayer en placant le code dans le form_current,ou encore utiliser le format conditionnel et Enabled au lieu de Locked.
    Ouflala n'utilise pas de sous-formulaire si je ne m'abuse
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  17. #37
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Ca ne change rien Azertix.
    Tou dépend de la dépendance ou indépendance d'avec une source de données. Si les controls du formulaire sont indépendants; les propriétés s'appliquent sur toutes les lignes; s'ils sont liés à une source les propriétés peuvent être conditionnées aux valeurs de l'enregistrement. Tu peux bien avoir deux couleurs sur un form continu de cette manière.
    J'ai parlé de sous-formulaire après avoir lu ça :
    Citation Envoyé par ouflala
    L'enregistrement des animaux se fait sur un formulaire en mode continu, c'est a dire que les animaux sont à la suite pour un meme éleveur.
    Pour un même éleveur, plusieurs animaux sur un formulaire continu. Ca m'a semblé correspondre à une structure formulaire principal - sous-formulaire continu. Pas bien grave si je me suis trompé.

  18. #38
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par ilank Voir le message
    Si les controls du formulaire sont indépendants; les propriétés s'appliquent sur toutes les lignes; s'ils sont liés à une source les propriétés peuvent être conditionnées aux valeurs de l'enregistrement.
    Ça ne serait pas l'inverse plutôt ?

    De plus, l'objectif n'est pas de changer la mise en forme des contrôles, mais juste d'empêcher les utilisateurs de pouvoir remplir les champs tant que la condition n'est pas remplie (date1>date2). C'est donc bien la propriété Locked qui est à utiliser.
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  19. #39
    Membre du Club Avatar de ouflala
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Points : 53
    Points
    53
    Par défaut
    Hello ...
    en fait j'utilise un formulaire principal pour entrer les données des eleveurs, puis en face de chaque eleveur, il ya un petit bouton qui ouvre un autre formulaire qui permet de rentrer les animauix morts pour chaque eleveur...

    Merci pour l'info azertix et ilank sur le blocage des formulaires.
    Finalement j'ai opté pour ca:
    Ce qu'il te faut faire, c'est réactiver les contrôles si la saisie de la date est bonne, puis tout déverrouiller quand tu clique sur ton bouton d'ajout :


    Je pense que l'on peut clore ce topics....pour en rouvrir un autre sur un autre pb...
    Merci pour tous les gars...c'est vraiment tres tres sympa de votre part...

  20. #40
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut à tous,

    d'abord veuillez m'excuserez d'avoir sauté quelques plusieurs lignes (voir pages... ).
    on peut empêcher plus simplement la sortie avec l'événement "sur sortie" du controle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Texte40_Exit(Cancel As Integer)
    If CDate(Me.Texte40.Text) < CDate(Me.Texte102.Value) Then
      MsgBox "....."
      Cancel = True
    End Sub
    mais je ne recommande pas cette méthode qui est incomplète et inappropriée car si l'utilisateur veux annuler il ne peut pas sortir du champ.

    il est préférable pour cela d'utiliser l'événement "avant maj" dans les propriétés du formulaire et donc empêcher la validation de l'enregistrement si l'ensemble des conditions ne sont pas remplit pour la saisie et éventuellement se positionner sur le champ concerné.

    sinon pour l'activation des controles tu trouveras peut être ton bonheur avec cette contribution.


+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 9
    Dernier message: 14/08/2009, 22h19
  2. Réponses: 4
    Dernier message: 11/12/2008, 10h58
  3. Boite de dialogue qui ne s'affiche pas
    Par Manankasina dans le forum Windows
    Réponses: 2
    Dernier message: 04/12/2008, 09h16
  4. Réponses: 2
    Dernier message: 23/12/2007, 20h09
  5. [MFC] Boite de dialogue qui se lance pas
    Par kacedda dans le forum MFC
    Réponses: 4
    Dernier message: 08/03/2006, 10h37

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