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 :

[Formulaire] remplir un champ automatiquement par VBA [Débutant(e)]


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 218
    Points : 77
    Points
    77
    Par défaut [Formulaire] remplir un champ automatiquement par VBA
    Bonjour!
    J'ai une base avec tout un tas de foinction a faire, et de chose à saisir, et je voudrai trouver une technique pour, lorsque l'on remlpli un champ, ou clic une case, un evenement VBA aille remplir un champ, ailleur dans une table, en correspondance...

    par exemple, j'ai une liste de clients à appeler, et une case à cocher "appelé" et ainsi ce client n'apparaitra plus dans la liste, considéré comme appelé donc...

    Comment je peux faire pour que lorsque je coche la liste, je puisse aussi renseigner la date de l'appel ( "now()"?? ), pour archivage et suivit ulterieur des appels!!??

    J'ai un bouquin avec liste de codes VBA... mais je ne voit pas lequel utiliser?? et je ne pense pas les avoir tous...

  2. #2
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Re,
    Je le répéte encore..quand tu pose une question soit "clair"

    Le but de ce Forum, n'étant pas de faire à ta place, mais d'essayer de te mettre sur le bon chemin.
    par exemple, j'ai une liste de clients à appeler, et une case à cocher "appelé" et ainsi ce client n'apparaitra plus dans la liste, considéré comme appelé donc...
    Pour cela, tu peux avoir un champ numérique "Appel" dans ta table "Client".
    Sur ton formulaire de saisie, tu ajoute une case à cocher dont le "Source contrôle" est le champ "Appel" de ta table "Client". En fonction de l'état de cette case à cocher, ton champ sera à "0" ou "1".

    et ainsi ce client n'apparaitra plus dans la liste
    A partir de là, tu peux effectuer un filtre ou tri pour n'afficher que les enregistrements dont le champ "Appel" est égal à "0".

    Ceci ne sont que quelques idées....à toi de rechercher un peu dans les différents tutos qui se trouvent sur ce site.
    Bonne continuation.

  3. #3
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Salut,

    Pourquoi tu ne lies pas le formulaire dans lequel tu as tes boutons a la table dans laquelle tu as besoin de les écrire?

    Si tu veux aller quand meme écrire dans une table via VB, ma technique est une requete SQL commandée depuis VB. Tu la commandes comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim sql as String
    sql= "Ta requete SQL"
    Docmd.RunSQL sql
    Si tu cherches des infos sur les requetes SQL, internet regorge de sites biens foutus qui t'expliquent comment mettre un jour un enregistrement ou en ajouter un nouveau, en effacer etc.
    Tu pourras donc aller écrire une date avec la commande Now() dans un champ et spécifier "Oui" ou "Non" dans ton champ "Appellé"...

    Bon courage!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 218
    Points : 77
    Points
    77
    Par défaut test
    j'ai essayé ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Option Compare Database
    Dim DateAppel As String
    DateAppel = "UPDATE Appel SET Appel.[Date] = Now();"
     
     
      Private Sub effectue_Click()
    DoCmd.RunSQL DateAppel
    DoCmd.OpenForm "frmprospect", acNormal, , "(Prospect.N°_Client)= '" & Forms![liste_zone_2]![N°_client] & "'"
    End Sub
    ça m'ouvre bien le formulaire, mais la date dans ma liste ne change pas.. j'ai une erreur...

    ma synthaxe n'est pas correcte???
    j'ai essayé en créan dabord une reqête sql, et en mettan juste son nom, dans DateAppel = "" mais c'est pareil...

    je suis pas encore chaud... j'ai surtout du mal a démarrer...

  5. #5
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 124
    Points
    124
    Par défaut
    Salut Frenchguy

    La date ne change c'est normal, pour la simple raison que DateAppel qui est une variable globale pour tout le module est initialisé lors de la première utilisation de ce module et quand suite, sa valeur n'est plus modifiée.

    Pour avoir une date qui change, il faut appeler la fonction now() chaque fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Option Compare Database
     
    Private Sub effectue_Click()
        Dim strSQL As String
        strSQL = "UPDATE Appel SET Appel.[Date] = Now();"
        DoCmd.RunSQL strSQL
        DoCmd.OpenForm "frmprospect", acNormal, , "(Prospect.N°_Client)= '" &
    Forms![liste_zone_2]![N°_client] & "'"
    End Sub
    Attention:

    Si tu utilises strSQL sans critère (WHERE), cela va changer tous les enregistrement de ta table.

    Bonne chance

    CAMIC

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 218
    Points : 77
    Points
    77
    Par défaut where?
    Justement, ce critère "where", il fonctionne comment??
    Je l'insère où dans ce bout de code?

  7. #7
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut,

    La clause WHERE se place après SET comme montré par la syntaxe suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE cible SET cible.champ = valeur
    WHEREcritère;
    @+

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 218
    Points : 77
    Points
    77
    Par défaut help again
    J'ai trouvé dans mon gros bouquin Access la synthaxe et des exemples sur la clause WHERE...
    Et je n'ai pas l'impression que ce soit ce qu'il me faut..

    Je redefinit la chose, pour qui voudra bien me jetter une bouée...

    J'ai une lsite de clients, qui devront etre appelés au moins une fois.
    Une case à cocher indique s'ils ont été appelés (et une requete ne fait plus apapraitre ensuite ceux deja appelés...).
    Il faudrai qu'en cliquant sur cette case à cocher, le champ date qui CORRESPOND à cette case se mette à jour automaqtiuement avec la date du jour...

    Si j'utilise la requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Compare Database
     
    Private Sub effectue_Click()
        Dim strSQL As String
        strSQL = "UPDATE Appel SET Appel.[Date] = Now();"
        DoCmd.RunSQL strSQL
        DoCmd.OpenForm "frmprospect", acNormal, , "(Prospect.N°_Client)= '" &
    Forms![liste_zone_2]![N°_client] & "'"
    End Sub
    en VBA, ça me renseigne TOUTES les cases du champ date, sauf la case qui correspond à la case que j'ai coché!!! (et je comprend pas pourquoi!!! c'est exactement l'inverse de ce que je veux...)

    Et je ne vois pas comment avec la fonction WHERE indiqué que je veux remplir le champ "DATE" qui correspond a ma case a coché "APPELE"

    Ayuda por favor!!

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Si c'est dans un formulaire, dans l'évènement afterupdate de tacase à cocher, tu met les code qui attribue la date du jour au contrôle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub MaCaseACocher_AfterUpdate()
    Me.MaDateARemplir = Date()
    End Sub
    Avec ce code, si tu coche, la date se met toute seule dans ta case date.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 218
    Points : 77
    Points
    77
    Par défaut wow
    Nooooon!
    Tu as bien dit "se renseigne toute seule" !!!

    Dis moi pas que c'est pas vrai !!!

    Bon.. je vais pas chercher à comprendre comment il sait quelle ligne du champ mettre a jour.. je m'imaginai un truc super compliqué, genre, mettre en memoire la ligne du champ de la table la stocker, et faire l'update dans l'autre champ de la meme table avec cette meme ligne...
    (a moins que Me ne designe cette ligne... mais il me semblait avoir compris jusque là que "Me" désigne le formulaire en cours... ???

    Bon... j'essaye!!

  11. #11
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Me désigne bien le formulaire en cours et Me.Madate, correspond au contrôle qui va recevoir la donnée.
    Je suppose que c'est bien l'enregistrement choisi qui va recevoir le date.
    Si tu coche le troisième enregistrement, c'est la date du troisième enregistrement qui sera mise à jour, pas une autre.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 218
    Points : 77
    Points
    77
    Par défaut re-help
    J'ai essayé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Ctl1er_appel_etat_AfterUpdate()
    Me.1er_appel_date = Now()
    End Sub
    Puisque mon champ 1er_appel_date est le champ où il faut que ma date apparaissent (bien que je ne comprenne pas où dans ma commande il saura dans quelle ligne du champ ajouter la date...)

    Que siginife "Me"... parceque ça ne marche pas..
    j'essai de traduire ma requete, de comprendre ce qu'elle fait, et comment, et où se trouve le "hic".. mais je ne vois pas...
    J'ai l'impression que je l'ai pas utilisé comme il le faut... surtout...

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 218
    Points : 77
    Points
    77
    Par défaut ben ça alors
    Ouaip... très claires tes explications!!! et ton code fait juste une ligne !!!

    Mais j'arrive meme pas à le faire fonctionner...

    ça pourrait avoir à voir avec le fait que ton code est dans "sub", et mon miens dans "private sub"???

  14. #14
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    essaies de mettre des crochets pour ton contrôle.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 218
    Points : 77
    Points
    77
    Par défaut Waaaoooooouuuuuuuuu
    Ben ça alors (je me répète...
    Tu disait donc vrai!!! il le fait tout seul!!! héhé

    En effet, en ajoutant des [] ça marche...
    Pourtant mon super bouquind e 1200 pages indique bien que les []sont nécessaires si on a des espaces dans notre nom de champ.. ce qui n'est pourtant aps mon cas!!!!

    cool, en tout cas!!
    Un GRAND GRAND MERCI à Mister Heureux-Olli!!!!!
    C'est moi qui suis heureux pour le coup...

    Bon.. c'est pas tout, je passe à mon casse tête suivant maintenant!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2002] Comment remplir des champs Access par VBA
    Par SunRay dans le forum Access
    Réponses: 3
    Dernier message: 19/08/2009, 12h32
  2. [VBA]Remplir un champ automatiquement
    Par e040098k dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 26/04/2007, 15h01
  3. Réponses: 5
    Dernier message: 02/08/2006, 13h29
  4. Réponses: 14
    Dernier message: 17/05/2006, 17h16
  5. Formulaire, ajout de champs automatique
    Par shub dans le forum Access
    Réponses: 2
    Dernier message: 20/04/2006, 12h55

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