|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : août 2009 Messages : 72 ![]() |
Bonjour,
J'ai créé une base de gestion clients/fournisseurs depuis 2 ans; ça fonctionne bien mais j'aimerais l'améliorer. Lorsque je fais un devis à un client la procédure est la suivante: dans le devis j'ai un sous formulaires qui s'appelle "fournitures" (en mode feuille de données), les champs sont : fournisseur, désignation, réf, prix achat HT, coef, prix vente HT, quantité, total HT. Ce sous formulaire est crée à partir d'une requête, elle même créée à partir de la table T-DetailDevis. Quand le devis est accepté je crée via le formulaire "commande" autant de commande que nécessaire suivant le nombre de fournisseur que constitue le devis. Donc je retape dans le formulaire "bon de commande" les désignations, réf, prix achat HT et quantités (feuille de données). Ce que j'aimerais pouvoir faire depuis mon devis, c'est de pouvoir cocher la(les) ligne(s) qui m'intéresse et pouvoir créer une commande en cliquant sur un bouton ce qui ouvrirait le formulaire "commande" en remplissant automatiquement les champs sélectionnés et je n'aurais plus qu'à ajouter des informations à l'intention du fournisseur. Pensez-vous que ce soit possible et si oui de quelle manière ? Avec mes remerciements, Ortiz Petite précision: il faut que je puisse utiliser également le formulaire "commande" de manière classique pour pouvoir faire mes commandes de stock, de fournitures diverses, etc... |
|
|
00
|
|
|
#2 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 466 ![]() |
C'est possible mais ta question ne comporte pas assez d'élément pour une réponse précise.
Voici un apperçu de la méthode à suivre. D'abord la notion de sélection d'enregistrement n'est pas facile. Tu peux soit ajouter un champ Oui/Non à ta table source ce hamps servant à la sélection des lignes, soit traitre chaque ligne une à une en ajoutant un bonton 'Copier' sur chaque ligne de détail. Ensuite il te suffit de prendre les données de ta source et de créer les enregistrements nécessaire dans les différentes tables concernées (probablement Entête Commande et Détail Commande) 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 : août 2009 Messages : 72 ![]() |
Bonjour,
J'avais un peu la même idée en sélectionnant ligne par ligne avec une case a cocher les produits à commander. Etant donné qu'il y a en moyenne 2 fournisseurs par devis pour un maximum de 5 produits, donc ça peut être assez rapide. Maintenant ce que je ne sais pas faire c'est copier les lignes sélectionnées dans le formulaire de commande. Il a la même mise en forme que le devis, c'est à dire une table "principale" où l'on trouve le N°, la date, le client ou le fournisseur, les coordonnées... Et la table "détail" commande ou devis qui est le sous-formulaire en mode feuille de données et qui contient la ref, la désignation, le prix d'achat la quantité. La seule différence est que le devis contient en plus, le coefficient et le prix de vente. Donc comment puis-je copier ces éléments? Avec mes remerciements, Ortiz |
|
|
00
|
|
|
#4 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 466 ![]() |
Tu peux utiliser une requête d'ajout qui va prendre les données de ta table de sélection pour les recopier dans ta table des devis ou tu peux faire tout cela par VBA.
Dans tous les cas ce n'est pas une copie par 'copy/paste' mais un transfert d'information d'une table à une autre. Si tu veux des précisions sur une ou l'autre solution, demande. 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
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : août 2009 Messages : 72 ![]() |
Bonjour,
Les 2 possibilités m'intéresse. Je joints un doc pdf sur lequel figure l'image du devis et de la commande pour mieux comprendre comment sont fait les formulaires. Je ne sais pas si l'une ou l'autre des solutions est mieux adaptées donc peut-être aurez-vous une meilleure idée de se qu'il convient de faire ? Cordialement, Ortiz |
|
|
00
|
|
|
#6 | ||||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 466 ![]() |
Les 2 solutions sont indépendantes de l'interface. Elles travaillent directement au niveau des données.
Je vais supposer que tu as 3 tables : T_Selection : Liste des élément sélectionnés T_Source : Source de ces éléments T_Cible : Destinataire de ces éléments Mais on pourrait aussi ne travailler qu'avec 2 tables : T_Source et T_Cible si T_Source contient l'info sur la sélection. Voici une idée de solution en VBA à adapter à tes besoins. Code :
Dans ton code VBA tu peux ensuite simplement mettre : 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
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() |
Bonjour,
Je suis débutant en access et j'ai actuellement le même problème (mais sous access 2010) J'ai un formulaire répertoriant des documents requis pour des matériels, en cours d'obtention, et un autre formulaire devant répertorier ces mêmes documents requis pour un matériel après réception. Mon premier formulaire possède les champs suivants: ProductBeingProcessed.idProduct, ProductBeingProcessed.idDocumentType, ProductBeingProcessed.DueDate, ProductBeingProcessed.PersonnelAttached et ProductBeingProcessed.Validated qui est la checkbox. J'ai deux autres champs liés mais provenant d'autres tables: Product.idFactory et Factory.idPrincipal qui sont la marque et l'usine correspondant au produit. Dans le formulaire que je veux remplir, j'ai les champs: ValidatedProduct.idProduct, ValidatedProduct.idDocumentType, ValidatedProduct.IssueDate qui est la date à laquelle le document est reçu , ValidatedProduct.ValidDate qui est la date jusqu'à laquelle le document est valide. J'ai aussi les 2 autres champs Product.idFactory et Factory.idPrincipal comme dans le premier formulaire. J'aimerais donc que quand je coche la case ProductBeingProcessed.Validated, les champs du premier formulaire idProduct, idDocumentType, idPrincipal et idFactory remplissent ceux correpondant dans le second formulaire. Qu'il n'y ai plus qu'à rentrer les dates de réception du document et celle de validité. Désolé c'est un peu embrouillé... J'ai lu ton code mais étant débutant en VBA (très très débutant) je n'ai pas bien compris notamment ou tu indiques les formulaires. Tu dis à un moment qu'il faut faire une requête, je ne vois pas l'utilité puisqu'il s'agit de remplir une table via un formulaire... Merci par avance pour votre aide (je l'espère! :p) |
|
|
00
|
|
|
#8 | |||
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 466 ![]() |
Citation:
Il faut choisir l'une ou l'autre. Pour aucune solution je n'utilise de formulaire, c'est juste un bout de code qui copie des données d'une table dans une autre. Il est donc logique que tu ne les trouves pas :-). À vrai dire on ne copie jamais des données d'un formuliaire à un autre mais toujours d'une table à une autre. Ces tables sont ensuite vues au travers d'un formulaire. pour ton cas on pourrait adpater le code comme suit : Code :
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
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() |
Bonjour!
En fait j'ai fait autrement, j'ai rajouter les champs IssueDate et ValidDate à ma table ProductBeingProcessed et du coup supprimé la table ValidatedProduct et le formulaire correspondant. Ma checkbox sert donc juste à déverrouiller les deux champs date quand on clique dessus. Merci encore de ton aide et désolé de t'avoir dérangé pour finalement ne pas utiliser ce que tu as fait :/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com