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

Access Discussion :

Agir sur un champ par la saisie d'un autre champ


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 74
    Points : 41
    Points
    41
    Par défaut Agir sur un champ par la saisie d'un autre champ
    Bonjour, je bloque sur un truc tout simple mais comme je ne maîtrise pas trop le code...
    Voilà, j'aimerais que lorsque je saisis une donnée dans le champ1 d'un formulaire et que ce champ était vide avant et bien qu'un champ2 soit automatiquement rempli. Attention, je ne veux pas que le champ2 soit rempli si on fait un simple clic dans le champ1! Il faut vraiment que le champ1 soit saisi.
    Pour le moment, j'ai écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Champ1_Enter()
    If Me.Champ1 = "" Then
    Me.Champ2 = "Saisi le " & Date
    End If
    End Sub
    Mais rien ne se passe lorsque je rentre quelque chose dans le champ1! Ce qui est sans doute normal car je saisis quelque chose entre temps!
    Merci de votre aide!

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,
    Essaie plutôt sur l'évènement "Sur perte focus".

  3. #3
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Essaie de placer ton code sur la propriété Après MAJ.

    Et je ne suis pas sûr d'avoir très bien compris. Pourquoi fais-tu un test pour savoir si le champ1 n'était pas renseigné au préalable ?

    Bonne journée.

    Domi2

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 74
    Points : 41
    Points
    41
    Par défaut
    Bonne question! A la base en fait, j'aimerais que ce champ2 se mette à jour si le champ1 est soit saisi une première fois, soit modifié. Or pour la modif, j'y arrive en faisant une procédure évenementielle "sur changement". Je voulais donc m'attaquer au problème de la première saisie dans le champ car malheureusement la procédure "sur changement" ne fait rien si on passe d'un champ vide à un champ rempli! C'est pour cela que je testai si le champ1 était vide ou pas!
    Bref, je galère...
    Sinon, j'ai essayé vos solutions mais ça ne marche pas non plus!
    Du coup, je me suis rabattue sur quelque chose du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ReponseDevisClient_GotFocus()
    a = Me.ReponseDevisClient
    End Sub
     
    Private Sub ReponseDevisClient_LostFocus()
    b = Me.ReponseDevisClient
    If a <> b Then
    Me.DatesaisieReponseDevisClient = "Saisi le " & Date
    End If
    End Sub
    Mais même lorsque a=b il met à jour le champ2! J'ai pourtant bien vérifié avec des msgbox les valeurs de a et b et elles sont identiques...
    Help.........

  5. #5
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Re,

    Je viens de tester cette simple ligne de code sur la propriété Après MAJ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Texte1_AfterUpdate()
     
        Me.Texte2 = "Saisi le " & date
     
    End Sub
    Et ça fonctionne correctement si j'ai bien compris ce que tu cherches.

    Si Texte1 est Null, Texte2 se met à jour.

    Si Texte1 n'est pas Null, Texte2 se met à jour aussi.

    Domi2

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 74
    Points : 41
    Points
    41
    Par défaut
    Hello, je viens de tester: ça marche si je modifie le champ1 mais pas si j'entre quelque chose pour la première fois dans le champ1!!
    C'est quand même bizarre non!

  7. #7
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Re,

    Oui, bizarre...

    Tu utilises bien la propriété Après MAJ ?

    Pour le surplus, il serait bon de vérifier que le champ1 n'est pas Null

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Texte1_AfterUpdate()
     
        If Not IsNull(Champ1) Then
     
            Me.Texte2 = "Saisi le " & date
     
        End If
     
    End Sub
    Domi2

  8. #8
    Membre averti Avatar de @rkane
    Homme Profil pro
    developpeur amateur dans mon cadre professionnel
    Inscrit en
    Juin 2006
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : developpeur amateur dans mon cadre professionnel
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 521
    Points : 403
    Points
    403
    Par défaut
    essaies ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Champ1_LostFocus()
    If IsNull(Champ1) = False Then
    Me.Champ2.Value = Date ' par exemple
    ElseIf IsNull(Champ1) Then
    Me.Champ2.Value = ""
    End If
    End Sub
    ca marche !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 74
    Points : 41
    Points
    41
    Par défaut
    Hello!
    On se rapproche en effet sauf que j'aimerais aussi que si je clique par erreur dans le champ1 déjà rempli alors que je ne veux pas le modifier et bien il ne mette pas le champ2 à jour or avec le code ci-dessus, un clic dans un champ1 déjà rempli met le champ2 à jour!

  10. #10
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    juste une idée comme ça....
    Déclare après Option machin chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim strChamp As String
    Dim bool as booleen
    Sur activation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strChamp = Me.Champ
    bool = False
    Sur MAJ tu mets un booléen
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Texte1_AfterUpdate()
     
        If strchamp <> me.Champ Then
     
            bool = true
     
        End If
     
    End Sub
    Sur perte Focus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Champ1_LostFocus()
        If IsNull(Champ1) = False and bool = True Then
            Me.Champ2.Value = Date ' par exemple
            ElseIf IsNull(Champ1) Then
                Me.Champ2.Value = ""
        End If
    End Sub

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 74
    Points : 41
    Points
    41
    Par défaut
    hello! Tout d'abord, merci pour votre patience...
    Bon, encore un petit problème: le code ci-dessus est parfait lorsque je modifie un champ1 déjà rempli: champ2 se met à jour ou lorsque je clique sur un champ1 déjà rempli sans rien modifier: champ2 ne se met pas à jour: PARFAIT!
    Le seul problème est lorsque j'arrive sur un enregistrement où le champ 1 est Null et là ça bug et j'ai un message d'erreur "utilisation incorrecte de Null". Du coup, j'ai modifié un peu le code sur activation du formulaire en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Form_Current()
    If IsNull(Champ1) Then
    strChamp = "01.01.1999"
    Else
    strChamp = Me.Champ1.Value
    End If
    bool = False
    End Sub
    ...histoire que la valeur nulle du champ1 ne pose pas problème par la suite mais ça ne marhce pas...
    Je commence à désespérer!

  12. #12
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Re

    Sur activation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Not IsNull(Me.Champ) then
        strChamp = Me.Champ
        bool = False
    End if

Discussions similaires

  1. [Lazarus] Agir sur un composant par ses coordonnées
    Par sebBastien dans le forum Lazarus
    Réponses: 8
    Dernier message: 11/09/2014, 19h20
  2. [AC-2010] Forcer la saisie d'un champ en fonction valeur d'un autre champ
    Par eric0512 dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/02/2012, 17h43
  3. [WD14] Position d'un champ de saisie dans un autre champ de saisie
    Par DanielB dans le forum WinDev
    Réponses: 24
    Dernier message: 04/05/2011, 11h56
  4. Réponses: 1
    Dernier message: 17/02/2011, 11h08
  5. Réponses: 1
    Dernier message: 06/10/2008, 09h53

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