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 :

Boucle sur formulaire continu afin d'effectuer un enregistrement en VBA


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 33
    Points
    33
    Par défaut Boucle sur formulaire continu afin d'effectuer un enregistrement en VBA
    Bonjour

    Je suis dans le développement d'une gestion des stocks.
    Pour les entrées et sorties classiques, pas de problème. Mais dans le cadre d'une fabrication, la recette fait souvent intervenir plusieurs ingrédients. Je n'arrive pas à faire une boucle qui enregistrerait tous les ingrédients affichés pour réaliser la recette dans la table sortie du stock.
    Si je n'ai qu'une ligne dans mon recordset, j'y arrive mais après, je n'y arrive pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    'Ajouter les valeurs dans la table sortie de stock
    Set oDb = CurrentDb
    Set oRst = oDb.OpenRecordset("TblStockSortie", dbOpenTable)
    oRst.AddNew
     
    'Passe en mode Ajout
    While Not Recordset.EOF
     
    'Affecte les différents champs
    oRst.Fields("IngredientStockID").Value = Forms!frmFabrication!sfFabricationEntree.Form!IngredientStockID
    oRst.Fields("DateSortie").Value = Forms!frmFabrication!DateFabrication
    oRst.Fields("Quantite").Value = Forms!frmFabrication!sfFabricationEntree.Form!Quantite
    oRst.Fields("ClientID").Value = 28
    oRst.Fields("TypeMouvement").Value = 37
    'Next
    Recordset.MoveNext
     
    Wend
    'Met à Jour
    oRst.Update
     
    'Libération des objets
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Set oDb = Nothing
    Je pense avoir un problème dans ma boucle mais je ne sais pas ou ...

    Merci de votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    Salut,

    pourquoi tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While Not Recordset.EOF
    '...
    Recordset.MoveNext
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While Not oRst.EOF
    '...
    oRst.MoveNext

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Bonjour

    Effectivement j'ai fait le changement mais le code ne rentre pas dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    Set oDb = CurrentDb
    Set oRst = oDb.OpenRecordset("TblStockSortie", dbOpenTable)
    oRst.AddNew
    'Passe en mode Ajout
    While Not oRst.EOF
    'Affecte les différents champs
    oRst.Fields("IngredientStockID").Value = Forms!frmFabrication!sfFabricationEntree.Form!IngredientStockID
    oRst.Fields("DateSortie").Value = Forms!frmFabrication!DateFabrication
    oRst.Fields("Quantite").Value = Forms!frmFabrication!sfFabricationEntree.Form!Quantite
    oRst.Fields("ClientID").Value = 28
    oRst.Fields("TypeMouvement").Value = 37
    'Met à Jour
    oRst.Update
    oRst.MoveNext
    Wend
    'Libération des objets
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Set oDb = Nothing
    Et lors de l'utilisation de ce code ci dessous, je rentre bien dans la boucle le nombre de fois qu'il y a de lignes mais sans passer à la ligne suivante ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Set oDb = CurrentDb
    Set oRst = oDb.OpenRecordset("TblStockSortie", dbOpenTable)
    'Passe en mode Ajout
    For lngNum = 0 To Forms!frmFabrication!sfFabricationEntree.Form!cmdCompteEntree - 1
     
    oRst.AddNew
    'Affecte les différents champs
    oRst.Fields("IngredientStockID").Value = Forms!frmFabrication!sfFabricationEntree.Form!IngredientStockID
    oRst.Fields("DateSortie").Value = Forms!frmFabrication!DateFabrication
    oRst.Fields("Quantite").Value = Forms!frmFabrication!sfFabricationEntree.Form!Quantite
    oRst.Fields("ClientID").Value = 28
    oRst.Fields("TypeMouvement").Value = 37
    'Met à Jour
    oRst.Update
    Next
    'Libération des objets
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Set oDb = Nothing
    Une idée ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    OK,

    en fait je crois comprendre a quel niveau on s'est mal compris.

    Ce que tu veux faire :
    - parcourir tous les enregistrements de ton formulaire

    Ce que tu fais :
    - parcourir l'enregistrement en cours dans ton formulaire.

    Le mieux sera alors de passer par un recordset qui clone le recordset de ton formulaire, et de passer d'un enregistrement a l'autre sur ton recordset cloné.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Merci de votre réponse.

    C'est exactement ca que je fais et que je souhaite faire.
    J'ai essayé de faire un clone mais je n'y suis pas arrivé. Pourriez vous m'indiquer la procédure ?
    Merci

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Pour résumer, j'aimerai faire un clone du formulaire en fonction de la valeur d'un champs. Puis intégrer ce clone dans ma table stock.

    Comment faire ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 33
    Points
    33
    Par défaut Gestion stock complexe (plusieurs entrées et sorties possibles)
    Après des heures et des heures de réflexion et sans résultat, je vais vous détailler mon problème afin que vous puissiez m'aider.

    Il s'agit d'établir un stock avec des entrées et sorties différentes provenant de plusieurs tables. (Pour le cas d'un simple stock entrée - sortie, aucun problème).
    Je travaille dans l'alimentaire, de ce fait, des produits sont transformés par l'entreprise.

    Présentation de la base de donnée :
    ==> Nom des éléments du stock
    - tblIngredient (IngredientID | Ingredient | Categorie) : cette table permet d'avoir toujours le même ID pour les entrant et sortant

    ==> Entrées et sorties du stock
    - tblEntreeStock (EntreeStockID | IngredientID | dateEntree | NumeroLot | Quantite): cette table référence toutes les entrées simples en stock
    - tblSortieStock (SortieStockID |EntreeStock | dateSortie | Quantite): cette table référence toutes les sorties simples en stock

    ==> Transformations/Fabrication
    - tblFabrication (FabricationID | dateFabrication | NumeroLot ) : table mère des fabrications, le numéro de lot dépend de la date de la fabrication ainsi que du produit fabriqué)
    - tblFabricationEntree (FabricationEntreeID | FabricationID | EntreeStockID | Quantite ) : table des ingrédients qui entrent dans la fabrication. Tous les éléments entrant dans cette table proviennent forcément du stock.
    - tblFabricationsortie (FabricationSortieID | FabricationID | IngredientID | Quantite ) : table des recettes qui sortent de la fabrication. Lors d'une fabrication, plusieurs élements peuvent sortir.

    ==> formulaires
    - frmEntreeStock : saisie des ingrédients qui entrent dans le stock après un achat par exemple
    - frmSortieStock : saisie des ingrédients qui sortent du stock
    - frmFabrication
    - sousFormEntreeFabrication : saisie des ingrédients qui entrent en fabrication
    - sousformSortieFabrication : saisie des ingrédients qui sortent de fabrication.

    Objectif de la formule VBA :

    fonctions :
    - Stockentree
    - stockSortie
    - FabricationEntree
    - FabricationSortie

    Stock = Stockentree - stockSortie - FabricationEntree + FabricationSortie

    J'ai essayé de passer par des requêtes Access mais je n'y arrive pas
    J'ai essayé de faire passer tous les mouvements de fabrications entrant et sortant dans les stocks; copier les lignes de tblFabricationEntree dans stockSortie afin de revenir à une gestion des stock que je maitrise. Mais avec un formulaire continu ou une feuille de donnée dans le sous formulaire fabricationEntrée, je n'y suis pas arrivé.

    J'ai pensé ajouter deux tables tblSortie et tblEntree et copier dans :
    tblSortie : tblStockSOrtie et tblFabricationEntree
    tblEntree : tblStockEntree et tblFabricationSortie
    Mais je n'arrive pas à copier les éléments comme précisé précédemment. De plus, si une modification doit être effectuée, comment retrouve la ligne a modifier, sinon tout effacer et tout ré implémenter à la table.

    Pourriez vous m'aider et/ou peut être me proposer une méthode plus simple ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Finalement j'ai réussi en faisant une copie intégrale vers une table Stock

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

Discussions similaires

  1. [AC-2007] Problème de boucle sur formulaire en continu
    Par Daniel-Gérald dans le forum Access
    Réponses: 2
    Dernier message: 13/12/2013, 09h33
  2. Filtres enchaînés sur formulaire continu
    Par delcroixf dans le forum IHM
    Réponses: 8
    Dernier message: 07/03/2007, 09h27
  3. Filtre sur formulaire continu
    Par delcroixf dans le forum IHM
    Réponses: 5
    Dernier message: 04/02/2007, 10h22
  4. [MySQL] Boucles sur formulaire
    Par falz222 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/08/2006, 11h59
  5. Présentation sur formulaire continu
    Par Michel DELAVAL dans le forum Access
    Réponses: 3
    Dernier message: 09/03/2006, 18h28

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