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

VBA Access Discussion :

Communication entre formulaires


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Communication entre formulaires
    Bonsoir à tous,
    J'ai besoin d'une assistance. J'ai une base de données Access de gestion de stocks avec trois principaux formulaires (il y en a plus d'une vingtaine globalement). L'accès à l'un ou l'autre des formulaires dépend du niveau de celui qui se connecte (Administrateur, Responsable, Opérateur). Mon problème est ceci: j'aimerais savoir si c'est possible que le responsable depuis son poste (base installée en réseau) puisse autoriser l'opérateur à faire une sortie de stock. L'opérateur est le seul à faire les opérations (entrées et sorties de stocks). Pour chaque article on définit un seuil de sécurité. Donc en dessous du Seuil de sécurité, je voudrais ne pas autoriser l'opérateur à faire une sortie de stock (un message s'affiche pour le lui notifier). J'aimerais savoir si c'est possible de déclencher le même message automatiquement au niveau du Responsable, s'il est connecté bien sûr, pour l'en informer. Si cela est possible, comment le faire? Et comment mettre en place un système pour que le Responsable puisse autoriser (par un code qu'il doit communiquer à l'opérateur ou s'il peut lever directement le blocage à son niveau) l'opérateur à continuer. Sans cette autorisation, l'opération ne sera pas effectuée. C'est un peu long, mais j'espère que cela ne vous découragera pas.

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 605
    Points
    5 605
    Par défaut
    Bonjour,

    Cela doit être possible, bien que tout cela ne me semble pas être une très bonne idée de déranger le responsable à tout moment (et s'il est indisponible de laisser l'opération en suspens pour une durée indéterminée). Il me semblerait préférable de remettre chaque soir au responsable un relevé des stocks insuffisants ou proches de l'être.

    Une façon de faire serait
    - d'ajouter dans la table des opérations un champ spécifique (type oui/non,) marquant les opérations à valider par le responsable et un autre champ spécifique (type oui/non) marquant l'accord ou non du responsable. Eventuellement aussi 2 champs date-heure pour enregistrer quand ces décisions ont été encodées.
    - d'utiliser dans un formulaire l'événement "sur minuterie" pour aller vérifier à intervalle régulier les décisions "à prendre" et "prises" par le responsable et signaler chaque changement dans ces champs par un bip et un message.

    Cordialement.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci EricDgn,
    J'ai pu résoudre le problème. J'ai créé un champ oui/non dans la table des articles. La valeur par défaut du champ est sur non. Donc si la quantité restante après sortie est supérieure ou égale au besoin, ça passe. Mais si la quantité un inférieure, un message apparaît à l'opérateur lui notifiant que cette sortie de stocks ne peut être effectuée et qu'il/elle doit contacter le responsable. Le responsable, lui peut afficher la liste de tous les articles disponibles. Sur le formulaire, un bouton est devant chaque article pour lui permettre d'autoriser (passer la valeur du champ à oui). L'opérateur peut aller réessayer l'opération de sortie de stocks. Après l'opération de sortie, le champ passe automatiquement à non. Ce que j'aimerais savoir (un complément), c'est s'il est possible que le message soit envoyé directement au responsable (au lieu d'attendre l'appel de l'opérateur). Je m'explique : si l'opérateur essaie de faire une sortie de stock qui amènera la quantité en dessous du seuil de sécurité, que le message s'affiche au niveau du responsable également.

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonjour,
    Citation Envoyé par Binatom Voir le message
    Je m'explique : si l'opérateur essaie de faire une sortie de stock qui amènera la quantité en dessous du seuil de sécurité, que le message s'affiche au niveau du responsable également.
    Pour cela il faut une table des messages à diffuser (destinataire, contenu du message, envoyé oui/non) et une procédure en exécution périodique qui scrute cette table pour savoir si un nouveau message est arrivé
    La session du magasinier écrit le message dans la table
    La session du responsable voit qu'il y a un message pour lui et le lui communique puis le coche comme envoyé

  5. #5
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 605
    Points
    5 605
    Par défaut
    A mon avis la solution la plus simple est d'exploiter l'événement "sur minuterie" pour aller consulter les données, par exemple chaque minute, et s'il le faut afficher un message.
    Si vous utilisez Windows 10 Entreprise, ce qui n'est pas mon cas, il est peut-être possible d'utiliser la commande msg.
    Cordialement.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci EricDgn,
    Le fait est qu'ici, le message ne peut être déclenchée que si l'opérateur tente de faire une sortie de stocks spécifique. Soit je ne comprends pas bien le rôle de la table qui sera scrutée (en fonction de la minuterie). Pour donner un exemple (histoire de mieux m'expliquer): on suppose qu'on enregistre du papier hygiénique avec un seuil de sécurité de 15. Le stock entré est de 100. Si, à un moment donné, la quantité restante est de 30 et que l'opérateur tente de sortir 20 unités (le stock qui restera sera inférieur au seuil de sécurité). À ce moment là, un message apparaît lui indiquant qu'il ne peut pas réaliser cette opération et qu'il lui faut une autorisation du responsable. Jusque là je m'en sors. S'il contacte le responsable et lui indique de quel article il s'agit, ce dernier depuis son formulaire peut autoriser la sortie. Je veux améliorer le système. Au lieu de contacter le responsable par téléphone ou par un autre système, j'aimerais savoir s'il est possible, lorsque le message qui indique à l'opérateur que l'opération est impossible s'affiche, qu'un message apparaisse automatiquement au niveau du responsable. Si oui, comment le faire ?

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par nico84 Voir le message
    Bonjour,

    Pour cela il faut une table des messages à diffuser (destinataire, contenu du message, envoyé oui/non) et une procédure en exécution périodique qui scrute cette table pour savoir si un nouveau message est arrivé
    La session du magasinier écrit le message dans la table
    La session du responsable voit qu'il y a un message pour lui et le lui communique puis le coche comme envoyé
    Est-ce possible d'avoir le code?

  8. #8
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Citation Envoyé par Binatom Voir le message
    Est-ce possible d'avoir le code?
    Non car je ne l'ai pas écrit...
    Il faut un bout de code pour écrire le message dans la table évoquée plus haut et comme le dit Eric un évènement "sur minuterie" qui va scruter si un nouveau message est arrivé. Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Form_Timer()
    Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM messages WHERE nouveau and qui='" & MonUser & "'", dbOpenDynaset)
    while not rst.eof
      msgbox rst!message
      rst.edit
      rst!nouveau=false
      rst.update
      rst.movenext
    wend
    set rst=nothing
    End Sub
    Là où ça se complique un peu c'est que pour que cet évènement soit actif il faut une fenêtre toujours ouverte (soit une fenêtre de menu soit une fenêtre cachée qui ne sert qu'à ça)

    On peut améliorer le truc en posant une question plutot que de juste balancer le message et selon la réponse ça autorise la sortie de stock ou non

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2020
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci. Je vais essayer voir. Pour le moment, ça reste un peu flou, mais je vais vous relire et essayer quelque chose.

  10. #10
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 605
    Points
    5 605
    Par défaut
    Bonjour,
    En attaché un petit exemple utilisant l'événement "sur minuterie". Cela devrait pouvoir vous donner quelques idées.
    Il faudra commencer par faire une copie du fichier StockOp.accdb et la nommer StockRsp.accb.
    StockOp sera ouvert par l'opérateur, StockRsp sera ouvert par le responsble.
    Il faudra refaire les attaches des tables sur le fichier StockData.accdb
    Cordialement.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Communication entre deux formulaires liés
    Par coolanso dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 28/11/2013, 18h11
  2. Communication entre formulaire et ss formulaire
    Par Flow56 dans le forum VBA Access
    Réponses: 8
    Dernier message: 18/04/2008, 12h30
  3. [c#] Problème de communication entre formulaires
    Par OpenGG dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/11/2007, 09h04
  4. Réponses: 4
    Dernier message: 13/06/2007, 17h41
  5. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05

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