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 :

préreplir un champ


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut préreplir un champ
    Bonjour à tous et merci de ma cueillir.

    Je suis en court de fabrication d’une BD, je voudrais remplir un formulaire 1, et lorsque je clic sur un bouton j’ouvre un autre formulaire 2 (tous en ferment le premier) qui soit pré rempli avec les information du formulaire 1, et que je peut modifier.
    Ensuite je clic sur un bouton sur le formulaire 2, qui m’ouvre un formulaire 3, avec les donné modifier ou non des autres formulaires, ainsi de suite…..
    Car cela fait un moment que je cherche,et comme je suit un débutant je ne comprend pas tous, je voudrais faire cela en VBA, si c’est possible !!.

    Merci de me répondre et surtout bon courage…

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Le plus simple est de basé tes formulaires sur la même table.

    Ensuite, il me semble que l'assistant de création de bouton te demande si tu veux une partie des données lors de l'ouverture du form.

    Ca devrait résoudre facilement ton pb.

    A+

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Avant tout bonjour,
    Merci pour ta réponse, je vais te paraître têtu, mais je veux faire comme ça et pas autrement, car après il faut que je puisse traiter toutes les données individuellement, j’ai une table si tu veux pour chaque formulaire, pour plus de détails :
    J’ai une liste de membres que je rentre dans un formulaire.
    Après avoir rentré une personne je clic sur un bouton qui m’ouvre un formulaire (formulaire 1) où je rentre les informations que la personne m’a donné en l’occurrence pour une année (gestion d’information par année) ex : 1980.
    Lorsque je clic en fin de formulaire 1, j’ouvre le formulaire 2 (ex : 1981) où là je retrouve les informations du formulaire 1(qui se ferme), que je peux modifier.
    En fin de formulaire 2, je clic sur un bouton qui m’ouvre le formulaire 3 (ex : 1982) où là je retrouve les informations du formulaire 2 que j’ai modifié ou pas.
    Et ainsi de suite ……jusqu’a 2006.
    Une fois que j’aurais la solution, pour le transfert entre le formulaire 1 et 2 je n’aurais plus qu’à modifier pour l’appliquer sur les suivants.
    Je sais c’est un peu pompeux tout ça, mais ensuite il faut que je puisse extraire certaine donnée en fonction de l’année etc.…

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Merci pour ta réponse, je vais te paraître têtu, mais je veux faire comme ça et pas autrement,
    C'est super, j'ai jamais dit que tu devais changer ton intreface, j'ai dit que de passer par une seule table c'était plus simple.

    Quand tu ouvres un form, tu peux passer une clause Where pour restreindre tes données (ma 1ère solution). Tu peux aussi utiliser OpenParam mais là ça dépend un peu de la quantité d'info que tu veux passer c'est juste un num d'ID ou c'est plus ?

    ex de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenForm "monForm",,,,,, me.IDPersonne
    dans le form appelé sur l'évement SurOuverture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Form_Open(Cancel As Integer)
        msgbox Me.OpenArgs
    End Sub
    Si tu as plusieurs param, tu peux les séparer par un séparateur (personnelement j'aime bien | (Alt+124) que je suis sur de n'avoir jamais dans mes données) dans l'appel et les découper par split dans le Form_Open

    donc appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenForm "monForm",,,,,, p1 & "|" & p2 & "|" & p3
    lecture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim p as variant
    p=split(me.OpenParam,"|")
    Le pb de cette solution c'est que le compilateur ne peut faire aucun controle sur tes données (Type, odre, nombre). Si cela plante tu ne le verra qu'à l'exécution.

    Conseil de conception, sauf si tes tables sont trés différentes d'année en année tu ne devrais pas avoir 1 table par form mais 1 seul form qui filtre les données pour l'année qui t'interesse et 1 seule table où l'année est un champ.

    Ca simplifie la programmation, la maintenance et l'exploitation de ta table aprés.

    Tu pourrais faire une petite liste déroulante qui permet à ton utilisateur de choisir l'année et un sous-form dépendant qui affiche les données de cette année là => 2 forms et pas une ligne de programmation.

    Ou, un seul form et une clause Where à l'ouverture (Voir ma solution initiale).

    A+

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonjour et bon dimanche

    Citation Envoyé par marot_r
    Conseil de conception, sauf si tes tables sont trés différentes d'année en année tu ne devrais pas avoir 1 table par form mais 1 seul form qui filtre les données pour l'année qui t'interesse et 1 seule table où l'année est un champ.
    Oui ils sont tous identique, sur la présentation, je te joint quel image c'est mieux que de long discours

    Nom : BD_1980.jpg
Affichages : 116
Taille : 81,5 Ko Nom : BD_1981.jpg
Affichages : 127
Taille : 75,6 Ko

    Tu peux te rendre compte des informations que je doit stocké, en sachant que certaine valeur évolue d'année en année

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Personnelement je ne ferais qu'un seul form en rendant les années paramétrables.

    Si tu tiens absolument à avoir des tables séparées par années tu peux aussi rendre le RecordSource (Propriété Source) paramétrable. L'avantage c'est que tu n'as plus qu'un seul form à maintenir et à tester.

    Si tu veux t'orientée vers la soultion 1 seule table il est important de savoir si la structure change d'année en année.

    Les valeurs ne posent pas vraiment de pb dans une BD. Si tu as des constantes (ex : taux horaire, taux de taxe) tu fais une table à part.

    Un exemple classique est la TVA.

    TVA :
    -----
    Année
    CodeTVA
    Taux

    à chaque année tu ajoute tes nouvelles valeurs et tu fais une liason (sur l'année) avec ta table principale.

    Dans ton cas tu as Augmentation qui me parait un bon candidat à ce genre de chose.

    Ta solution comporte, selon moi, les points faibles suivants : chaque année tu dois modifier ton appli pour ajouter une nouvelle table, un nouvel écran et modifier l'écran de l'année précédente. Ceci implique des tests et le redéploiment de ton appli.

    Évidement tous ces conseils sont basés sur ce que tu m'as dit et sur ce que j'ai comme expérience. Il est trés possible que dans TON contexte ta solution soit la meilleure ;-).

    A+

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,

    Évidement tous ces conseils sont basés sur ce que tu m'as dit et sur ce que j'ai comme expérience. Il est très possible que dans TON contexte ta solution soit la meilleure ;-).
    Non je suis pas si têtu que sa , je prend toutes les solution, mais si tu veux sa fait un moment que je cherche la solution, alors je voulais la trouvé.
    Mais je crois que tu as raison, et puit il veau mieux faire confiance as une personne qui a l’habitude.
    Tu me proposerais quoi, comme interface ???
    Assez simple car ce n’est pas pour moi, enfin si un peut mais je ne crois pas que quelqu’un d’autre arriverait à la faire marché si c'est trop compliqué .

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Que veux-tu faire ? L'utilisateure DOIT-il passé par toutes les années dans l'ordre où si il choisi l'année qui l'interesse dans une liste c'est correct ?

    A+

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Il doit passé par toutes les années, ces pour sa que je les avais fait des form année par année.

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Ok, alors garde ton écran tel qu'il est mais rend les zones qui affiche l'année paramétrable.

    Au fait tu garde l'idée d'une table par année pour le moment vais supposé que non.

    Dans le code de ton 1er bouton, celui appele le tout 1er écran tu va faire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenForm monFormAnnuel,,,"[Annee]=" & anneeInitiale,,,anneeInitiale
    Dans monFormAnnuel

    définie une variable globale (en dehors de toutes procédure ou fonction)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim anneeCourrante as integer
    Sur OnOpen

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    anneeCourrante=me.OpenArg
    me.etiquetteTitre.caption=anneeCourrante
    me.boutonNouvelleAnnee.Caption=anneeCourrante+1
    dans le OnClick de boutonAnneeSuivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    anneeCourrante=anneeCourrante+1
    me.filter="[Annee]=" & anneeCourrante
    me.filterOn
    Attention vérifie que AnneeCourrante ne dépasse pas le nombre max d'années.

    C'est peut-être pas parfais, mais c'est une bonne piste.

    A+

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonjour et merci de tes réponses,

    Bon on y va :

    Ok, alors garde ton écran tel qu'il est mais rend les zones qui affiche l'année paramétrable.
    Tu vas me prendre pour un débile, ou trop débutant, mais tu fais comment ?
    Je sais que je ne suis pas une lumière, car j’utilise encore des ampoules chez moi !!!

    Dans le code de ton 1er bouton, celui appele le tout 1er écran tu va faire un truc du genre
    Code :
    DoCmd.OpenForm monFormAnnuel,,,"[Annee]=" & anneeInitiale,,,anneeInitiale
    Dans le quel 1er bouton ???
    J’utilise d’abord un formulaire qui me permet de rentrer l’identité de la personne que je veux rentrer les informations.

    Dans monFormAnnuel

    définie une variable globale (en dehors de toutes procédure ou fonction)
    Code :
    Dim anneeCourrante as integer
    Heu Heu !!! Tu fais comment ??
    J’suis vraiment trop nul …
    Bon je crois que je vais arrêté là, si non je vais te faire fuir à cause de mon incapacité.

    Je viens de tous transféré pour ne pas abîmé mon travail (qui est médiocre de surcroît) donc voici comment sa va ce présenté.

    Formulaire de rentrer d’identité (propriété du bouton affiché)
    Nom : Image1.jpg
Affichages : 91
Taille : 108,4 Ko

    Le code VBA du Form.
    Nom : Image2.jpg
Affichages : 95
Taille : 33,7 Ko

    Formulaire de saisi pour les années.
    Nom : Image3.jpg
Affichages : 89
Taille : 99,4 Ko

    Sont code VBA.
    Nom : Image4.jpg
Affichages : 94
Taille : 41,5 Ko

  12. #12
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Ok c'est pas mal du tout pour un 'médiocre' :-))). Tu j'ai pas commencé en sachant tout de Access non plus. J'ai demandé de l'aide à un de mes bon copains expérimenté plus souvant qu'autrement.

    Maintenant venons en à ton code :

    1) Enlever TOUS le code que je t'ai donné, ton architecture est trés bonne et mon code complétement indapté à celle-ci.

    2) Dans FormContact, cmdAnnee_Click, ajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    StrlinkCriteria = "[refIndetite]=" & me.refContact
    Comme cela quand tu va ouvrir le formulaire année, il ne va afficher que les enr de la personne en cours.

    Avec cela ton appli devrait être fonctionnelle.

    Un dernier point, quand tu es dans du code va dans Outil/Option/Editeur et coche Déclaration de variable obligatoire. Ca force Access à vérifier que tes variables sont déclarées.

    Attention pour les modules existant il faut à la main ajouter

    Option Explicit

    après le

    Option Compare Database.

    Sinon Access crée les variables à la volée et tu peux avoir des bugs trés dificiles à localiser à cause de cela, une faute de frappe est si vite arrivé.

    Par exemple, quand j'étais jeune informaticien, cela m'a pris une semaine et l'aide de mon prof de math pour m'appercevoir que j'avais une variable PI=3.14 et une variable P1 qui elle était à 0.

    A+

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Ok bon j'ai tous refait comme sa je suis parti sur de bonne base.
    1) Enlever TOUS le code que je t'ai donné, ton architecture est trés bonne et mon code complétement indapté à celle-ci.

    2) Dans FormContact, cmdAnnee_Click, ajouter

    Code :
    StrlinkCriteria = "[refIndetite]=" & me.refContact

    Comme cela quand tu va ouvrir le formulaire année, il ne va afficher que les enr de la personne en cours.

    Avec cela ton appli devrait être fonctionnelle.
    Ok j’ai fait tous sa.
    Mais maintenant, j’ai mais année à remplir, et ce sans être obligé de retapé des informations d’année par année sauf si elles ont changées.

  14. #14
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Tu sais, j'ai écrit tout un topo sur le formulaire qui se duplique.
    Ca aurait été pas mal de jeter un coup d'oeil non ?

    D'autre aprt, j'ai peur d'avoir compris que tu avais fait une table par année ?
    Si c'est bien le cas, il s'agit d'une erreur de conception grave.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Salut,
    Maxence HUBICHE

    Je ne savais pas, ou j'ai mal formulé ma recherche, ou je suis vraiment trop abruti pour comprendre quelque chose à l’informatique, mais bon...

    Je ne suis certainement pas aussi doué que toi..

    Mais je crois que j’ai fait comme tous.
    Après bon nombre de recherche, et bien, on s’adresse aux experts.

    Mais aussi un petit truc qui pourrais te servir dans tes réponses, et j’en suis désolé, tu manques de compassion et surtout de politesse, un bonjour ça ne coûte pas cher… (Surtout pour un responsable du forum Access)

    Quand on vient sur un forum c’est pour chercher des infos à des personnes, qui comme moi, on débuté, je les remercie de nous donné satisfaction et de prendre le temps pour nous répondre.

    Cela étant dit, je suis preneur de toutes solutions qui pourraient me faire avancer car là, je finis par tout lâcher, plus de motivation, et ça c’est pas cool.

  16. #16
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 351
    Points : 23 816
    Points
    23 816
    Par défaut
    Ok, si cela peut te rassuré j'ai moi aussi pas mal de misère avec le moteur de recherche du site a tel point que je fait maintenant simplement des [Ctrl][f] sur la FAQ. J'ai pas le temps de trié parmis les 3 millions de hits.

    Pour ton pb, je te suggère la solution basic suivante :

    Dans le code de ton form défini un jeu de variables (met le dim juste sous les options), une par champ.

    puis dans ApresInsertion (Form_AfterInsert) tu fais maVariable1=monChamp1 ... maVariableN=monChampN.

    et dans AvantInsertion (Form_BeforeInsert) tu fais monChamp1=maVariable1 ... monChampN=maVariableN.

    On pourrait (et devrait) utiliser une collection et .Fields du form mais c'est plus compliqué. Attention si tu change ton form à mdofier le code en concéquence.

    A+

Discussions similaires

  1. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38
  2. [VB6] [Datareport] définir un champ
    Par ckankonvahou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/10/2002, 11h16
  3. [ADO] Constantes des types de champ
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/09/2002, 11h08
  4. Taille des champs proportionnelle...
    Par Depteam1 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/08/2002, 11h48
  5. taille max du nom d'un champ
    Par hna dans le forum Paradox
    Réponses: 2
    Dernier message: 28/07/2002, 02h40

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