|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Bonjour à tous,
J'ai une petite question, je souhaiterai alimenter une zone de texte à partir d'autres éléments de mon formulaire. Je m'explique, je rentre dans mon formulaire plusieurs données à partir de listes déroulantes notamment et je souhaiterai créer un N° automatique à partir des éléments que j'ai déjà rempli. le mieux c'est de donné un petit exemple, j'ai par exemple : - CVB35 dans une première liste de sélectionnée puis - Métal - 3 - Inversé - et 11 dans une dernière zone de texte Je souhaiterai que ma zone de texte remplisse automatiquement : - C035M3I-11 suivant un code bien précis, quelqu'un pourrai-t-il m'aider ? Merci d'avance Seb |
|
|
00
|
|
|
#2 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 456 ![]() |
Est-ce que les éléments :
- CVB35 - Métal - 3 - Inversé - 11 sont conservés dans la table qui alimente ton formulaire ? Si oui, le plus simple est de le faire au niveau d'une requête qui allimentera ton formulaire : TonChampCode:[NomChampContenantCVB35] & left([NomChampContenantMetal],1]) & [NomChampContenant3] & left([NomChampContenantInverse],1]) & [NomChampContenant11] Le & met bout à bout des chaines de caractères. C'est une concaténation. Sont-ils succeptibles de changer ? Si non il serait peut-être interrssant de calculer le code une fois à la création pour ne pas avoir à le faire chaque fois que tu auras besoin de l'afficher. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
En fait, les éléments :
- CVB35 - Métal - 3 - Inversé - 11 Sont des éléments qui proviennent de listes déroulantes pour (CVB35, Métal et Inversé) et saisie pour 3, le 11 est en fait un NumAuto. Les C035, M et I sont les clés primaires correspondants aux champs sélectionnés dans les listes déroulantes et qui proviennent de plusieurs tables : -tbTypeCrible pour CVB35 et avec donc comme clé primaire C035 -tbTypeGrille pour Métal et avec M comme clé primaire -tbDivers pour Inversé et avec I comme clé primaire Et C035M3I-11 changera pour chaque saisie de grille. Ce numéro me servira à marquer mes grilles pour le suivi de celles-ci. A+ |
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Bonjour,
J'ai essayé d'utiliser ta ligne de code mais je n'arrive pas à la faire fonctionner. Pourrais-tu me dire ou je dois insérer cette ligne. J'ai essayé dans la partie Source Contrôle et Valeur par défaut mais rien ne s'est passé et quand je retourne sur les propriétés de cette zone texte, le code que j'avais rentré n'y est plus. Auriez-vous une idée ? Seb |
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
J'ai un autre problème qui vient de se poser à moi.
J'ai créé un formulaire pour les interventions de changement de grilles. J'ai un premier formulaire dans lequel j'ai une liste de mes précédentes interventions (j'affiche dans cette liste seulement les interventions avec les datedefin à 31/12/9999 pour ne pas afficher les interventions déjà clôturées depuis un bon bout de temps) et une date d'intervention. Je précise que j'ai dans ma table tbIntervention un champe idPrecenteInterv qui me donne la référence de ma précédent intervention, ca me permet ainsi de retracer facilement le cheminement de ma grille. J'ai ensuite un bouton de commande sur lequel j'appuie une fois la précédente intervention sélectionnée (avec notamment mon numéro de grille). Je souhaiterai que lorsque j'appuie sur ce bouton, la datedefin de l'intervention sélectionnée passe sur la date rentrée dans le formulaire et que je passe sur une nouveau formulaire appelé MouvementGrille. Dans ce formulaire, je souhaiterai que la datededébut soit la date précédement rentrée (date de l'intervention) et que le N° de la précédente Intervention soit automatiquement rentrée dans le champ : idPrecedenteInterv. Ensuite pour chaque interventions, je note : -l'affectation du crible sur lequel je viens de changer ma grille, -l'etage du crible, -le personnel ayant effectué l'intervention, -le lieux de l'intervention, -et une zone de commentaire. Je suppose que je dois utiliser dans la procédure événementielle du bouton de commande de mon premier formulaire un DoCmd.FindRecord avec le champ idPrecedenteInterv pour retrouver ma précédente intervention et DoCmd.GotoRecord pour pouvoir modifier ma datedefin en changeant le 31/12/9999 par la date rentrée. Il me faut ensuite ouvrir le deuxième formulaire sur une nouvelle entrée avec la datededébut et le idPrecedenteInterv déjà rentrés. Voilà c'est assez compliqué pour moi si quelqu'un peut me donner un coup de pouce, ca serai sympa ! A+ Seb |
|
|
00
|
|
|
#6 | ||
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Concernant mon premier problème, je viens de réussir à faire fonctionner la ligne de code de marot_r en l'inscrivant simplement dans la zone de texte en mode création mais quand j'actionne le bouton d'enregistrement du formulaire (un bouton command avec le code suivant :
Code :
Erreur d'exécution '2105' : Impossible d'atteindre l'enregistrement spécifié Serait-ce un problème venant du fait j'ai mis ma ligne de code dans le champs Source Contrôle ? A+ Sébastien |
||
|
|
00
|
|
|
#7 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 456 ![]() |
Je ne pense pas.
La solution que je t'avais mise était pour mettre dans la requête qui alimente le formulaire de saisie mais cela marche aussi avec un champ calculé comme tu l'as fait. Note que normalement le champ calculé n'est pas enregistré dans la table et donc c'est un calcul temporaire qui ne s'affichera que sur ce formulaire. Pour ton pb de déplacement, que se passe-t-il si tu appuis sur le bouton *> en bas à gauche de ton formulaire dans le groupe des boutons de déplacement (|<-, <, >, ->|) ? A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#8 | ||
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Bonjour,
marot_r, je ne comprends pas bien comment tu fais pour insérer la ligne de code dans la requête qui alimente le formulaire de saisie ? Car je souhaiterai enregistrer le champ calculé dans la table. Pour ce qui est du problème de positionnement du formulaire à un enregistrement donné, j'ai réussi à me débrouiller en écrivant le code suivant dans la procédure événementielle de mon bouton de commande : Code :
P.S. : Certains diront que je m'embête avec cette histoire de tomber directement sur un enregistrement mais je vais devoir gérer un table avec plusieurs milliers d'enregistrements à terme donc c'est juste une précaution ;-) |
||
|
|
00
|
|
|
#9 | ||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 456 ![]() |
Salut pour le champ calculé dans une requête. Tu vas dans l'éditeur de requête, tu ajoutes la table ou les tables dont tu as besoin et tu copie simplement :
Code :
TonChampCode:[NomChampContenantCVB35] & left([NomChampContenantMetal],1]) & [NomChampContenant3] & left([NomChampContenantInverse],1]) & [NomChampContenant11] Pour ton code a enregistrer dans la table je procéderai au niveau du formulaire de saisie dans les événement Après MAJ des divers champs concernés ou avec un bouton "Calculer code". Je mettrai la procedure suivante dans le module de code associé au formulaire : Code :
Petites explications :
Attention avec les autonum :
Pour assigner une date à un champ il suffit de mettre comme valeur par défaut, soit dans la table soit dans le formulaire =Date(). A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
||
|
|
00
|
|
|
#10 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Merci pour ton code pour l'enregistrement, ça marche !
En fait je n'arrivai pas à faire marcher ta ligne de code pour la requête mais j'ai changé mon champ de Liste à Liste déroulante et ça a marché. Heureusement que vous êtes là pour donner un coup de pouce aux débutants comme moi ! Seb |
|
|
00
|
|
|
#11 | ||
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Bonjour,
Pour mon problème de date j'ai essayé ca mais ca n'a pas l'air de marcher et je ne comprends pas bien pourquoi ? Code :
Je pourrai effectivement me passer de DoCmd.OpenForm car je veux simplement modifier la date DateFinEtat dans la table tbMouvementGrille mais je n'ai pas encore trouvé la méthode qui me fasse ca. A+ Seb |
||
|
|
00
|
|
|
#12 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 456 ![]() |
Désol mais je ne comprend pas bien ton besoin avec la date ?
Tu veux mettre une date dans un champ mais quelle date et à quel moment ? A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#13 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Bonsoir,
en faite, mon projet fonctionne de la manière suivante : Lorsque je fais une intervention sur une grille, je créé une nouvelle intervention sur ma table tbMouvementGrille avec un état (stock, monté, occasion, HS), le numéro de la grille, la date de début de l'état, une date de fin (par défaut je la met à 31/12/9999) et une référence à l'intervention précédente. Ainsi lorsque je ferai une nouvelle intervention sur cette grille, je voudrai changé la date de fin du 31/12/9999 à la date de l'intervention et inscrire la référence de l'intervention précédente dans la nouvelle intervention dans le champ prévu pour. Voilà pourquoi je voudrai changer l'enregistrement de la date dans la table tbMouvementGrille. |
|
|
00
|
|
|
#14 | |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 456 ![]() |
Voilà ce que je comprend :
Citation:
À vrai dire je ne voit pas l'intérêt de se souvenir de l'intervention précédente dans l'intervention nouvelle. Il suffit de trier tes interventions par date de début et tu les auras dans l'ordre. La gestion des cette liaison me semble compliquer le problème sans réel avantage. Pour la récupération de l'intervention précédente et le changement de date, je te reviens un peu plus tard car ce n'est pas très simple. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
|
00
|
|
|
#15 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Oui c'est bien cela, le but étant de savoir ou était la grille à un instant donné, par exemple et 14/12/2010, si elle était en stock ou montée et sur quel crible.
|
|
|
00
|
|
|
#16 | ||||||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 456 ![]() |
Je vais supposer que tu as un numéroauto dans ta table tbMouvementGrille. Ça va simpflier le la recherche de la ligne précédente.
Codes à mettre dans le formulaire de saisie Code :
Code :
Code :
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
||||||
|
|
00
|
|
|
#17 |
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Merci marot_r,
je comprends un peu mieux la manière de faire. Pour ce qui est de la première partie de ton code, la fonction TrouverMouvementPrecedent, je n'en ai pas besoin car j'ai déjà un champ qui fait référence à la précédente intervention. Par contre j'ai une dernière question, dans mon "Ajouter" qui va modifier mon enregistrement de ma précédente intervention et afficher mon formulaire pour en créer une nouvelle, je souhaiterai savoir quelle méthode vba on utilise pour mettre le champ "idInterventionPrecedente" directement avec le numéro de l'intervention précédente sans que l'utilisateur puisse le modifier. Merci A+ |
|
|
00
|
|
|
#18 | ||||||
|
Futur Membre du Club
![]() Inscription : avril 2009 Messages : 81 ![]() |
Bonjour marot_r
je t'embête encore une fois mais je n'arrive pas à faire fonctionner ton code, j'ai mis le code suivant dans la procédure événementielle de mon bouton : Code :
Code :
Je vois pas très bien pourquoi, j'ai essayé avec un "!" à la place du "." après le Me mais rien à faire. Seb Edit : Je viens d'arriver à faire marcher le code j'avais une erreur de format sur mon formulaire. J'avais la date automatiquement générée par Maintenant() mais qui donne la date et l'heure et en le remplaçant par Date(), ca m'a résolu mon problème. Voilà le code que j'ai : Code :
|
||||||
|
|
00
|
|
|
#19 | ||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 456 ![]() |
Pour le problème avec le . et ! c'est sans doute les [] que j'avais mis qui pose le problème.
La différence entre "." et "!" c'est que le "." se réfère à un champ du formulaire et le "!" se réfère à un champ de la source de données du formulaire. Il se peut qu'un champ soit disponible dans la source de données mais ne soit pas utilisé par le formulaire. Il pourra être utilisé avec le "!" mais ne sera disponible avec le ".". Plus généralement le "." permet d'accéder à des propriétés et des méthodes d'un objet. Les champs de saisie sont vus comme des propriétés du formulaire et généralement il porte le même nom que le champ de données qui leur est associé ce qui fait que me.NomTonChamp est équivalent à me!NomTonChamp. Pour passer un paramêtre à un autre formulaire la méthode la plus simple est d'utiliser le dernier paramêtre de DoCmd.OpenFrom. Dans le formulaire appelé, ajouter le code suivant sur OnOpen (Sur Ouverture) Code :
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
||
|
|
00
|
|
|
#20 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 456 ![]() |
À propos des noms de champs de saisie. Il est recommandé de mettre un nom qui est significatif. Par exemple dans ton cas Texte2 pourrait avantagesement être remplacé par DateInterventionSaisie ce qui est plus explicite.
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com