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

Macros Access Discussion :

MSGBox et macro de donnée [AC-2010]


Sujet :

Macros Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Points : 44
    Points
    44
    Par défaut MSGBox et macro de donnée
    Bonjour,

    Voila je me suis remis au développement sous access après presque 11 ans
    Que de changement
    Informaticien d'origine j'ai beaucoup utilisé votre site lors de développement en vbs. Vos réponses ayant toujours étaient précises et pertinentes, je reviens solliciter votre aide.

    Voici ce que je cherche à faire. Cela doit être simple pour les experts que vous êtes.
    J'ai besoin de gérer des dossiers comportant plusieurs étapes. Je souhaiterai lorsque je change d'étape, qu'access m'alerte sur le fait qu'une étape n'a pas été inscrite.

    En gros et pour tenter d'être clair:
    3 tables dont une table de jointure qui historise les changements d'état, 1 listant les dossiers et 1 l'étape du dossier
    1 formulaire pour changer les paramètres du dossier avec un sous formulaire pour l'ajout d'une étape dans la table de jointure.

    Je souhaite qu'a l'ajout d'une étape particulière access m'alerte que je n'ai pas inscrit une autre étape particulière avant.
    Si c'est un oubli de ma part il supprime l'enregistrement en cours sinon je force l'inscription.

    Je pensé créer un macro de donnée sur la table de jointure. Hélas je suis confronter à un premier obstacle: Comment ouvrir une msgbox avec bouton OK Annuler.

    Pouvez-vous me venir en aide ou me dire si je me plante complètement?

    Si c'est pas clair n'hésitez pas à me demandé des compléments.

    Cordialement

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    je n'ai peut-être pas été assez clair dans ma demande. Elle était peut-être un peu brouillon.
    En résumé, je cherche à vérifier la présence de certaines données dans une table avant d'insérer la nouvelle.

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Re-,

    Une première démarche serait pour moi de limiter les étapes présentées dans le combo de choix des étapes par rapport à celles qui n'ont pas encore été franchies.

    Modifier la source du combo Num_étape dans ton sous-formulaire SF_CHG_Etape par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T_Etapes.N°, T_Etapes.Nom_Etape
    FROM T_Etapes
    WHERE (((T_Etapes.N°) Not In (SELECT J_CHG_Etape.Num_Etape FROM J_CHG_Etape WHERE (((J_CHG_Etape.N°change)=[Formulaires]![F_Modification_changement]![CmbChange])) )));
    Je ne sais pas si ça te va, mais il serait peut-être possible de choisir l'étape juste après la dernière qui a été franchie (ça me prendra un peu de temps).

    @+

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Points : 44
    Points
    44
    Par défaut
    Bonjour madefemere,

    Géniale ton idée, je n'avais pas pensé au remplissage conditionnel de la liste déroulante.

    Je n'ai pas pu répondre ce WE trop occupé sans internet. Mais j'ai réfléchi et j'ai commencé à modifier la structure de la table T_Etapes afin d'y ajouter 2 champs:
    Facultatif: champ OUI/NON indiquant l'arrêt obligatoire sur cette étape
    Position: champ numérique indiquant la position de l'étape dans le processus.
    Je vais essayer de créer une requête qui listera toutes les étapes qui suivent la dernière saisie et ce jusqu'à la suivante obligatoire.

    Plus tard, je me suis noté de pouvoir modifier le carractére obligatoire en fonction du contenu de dossier traité ce sera une V2 de la base enthousiasme quand tu nous tiens

    Je te tiens au courant des évolutions

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    J'ai progressé
    J'ai généré 3 requêtes imbriquées (je ne suis pas encore un pro)

    la première SR1_Liste_Etape:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT T_Etapes.N°, T_Etapes.Nom_Etape, T_Etapes.Position, T_Etapes.Facultatif
    FROM T_Etapes
    WHERE ((T_Etapes.N° Not In (SELECT J_CHG_Etape.Num_Etape FROM J_CHG_Etape WHERE J_CHG_Etape.N°change=[Formulaires]![F_Modification_changement]![L_Change])) AND
                  (T_Etapes.Position > (SELECT Max(T_Etapes.Position) AS MaxDePosition FROM T_Etapes INNER JOIN J_CHG_Etape ON T_Etapes.N° = J_CHG_Etape.Num_Etape GROUP BY J_CHG_Etape.N°change HAVING (((J_CHG_Etape.N°change)=[Formulaires]![F_Modification_changement]![L_Change])))))
    ORDER BY T_Etapes.Position;
    Une deuxième SR2_Liste_Etape:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Min(T_Etapes.Position) AS MinDePosition
    FROM SR1_Liste_Etape INNER JOIN T_Etapes ON SR1_Liste_Etape.N° = T_Etapes.N°
    GROUP BY SR1_Liste_Etape.Facultatif
    HAVING (((SR1_Liste_Etape.Facultatif)=True));
    Enfin la dernière R_Liste_Etape:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT SR1_Liste_Etape.N°, SR1_Liste_Etape.Nom_Etape, SR1_Liste_Etape.Position, SR1_Liste_Etape.Facultatif
    FROM SR1_Liste_Etape, SR2_Liste_Etape
    WHERE (((SR1_Liste_Etape.Position)<=[SR2_Liste_Etape].[MinDePosition]))
    ORDER BY SR1_Liste_Etape.Position;
    Grace à cette imbrication (qui doit pouvoir être optimisée), j'obtiens bien la liste des étapes post-étape en cours et ce jusqu'à la prochaine étape obligatoire.

    Mon soucis et le suivant:
    Quand j'affecte cette requête à mon SF_CHG_Etape, le formulaire fonctionne. Il me demande bien le numéro du changement puis affect la bonne liste dans le contrôle: Num_Etape

    Quand j'ouvre le formulaire F_Modification_changement, le SF n'affiche pas la liste.

    Quelqu'un aurai une idée? Pour plus de compréhension je vous joins ma base actuelle

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 178
    Points : 175
    Points
    175
    Par défaut
    Bonjour

    Ton "Num_Etape" n'existe pas dans ta requête "R_Liste_Etape".
    Ton contrôle ne peux rien afficher car la source n'existe pas.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Points : 44
    Points
    44
    Par défaut
    Bonjour et merci JeanYves70,

    Je ne comprends pas très bien.

    La requête source du contenu de ma liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT A.N°, A.Nom_Etape
    FROM (SELECT T_Etapes.N°, T_Etapes.Nom_Etape, T_Etapes.Position, T_Etapes.Facultatif FROM T_Etapes WHERE ((T_Etapes.N° Not In (SELECT J_CHG_Etape.Num_Etape FROM J_CHG_Etape WHERE J_CHG_Etape.N°change=[Formulaires]![F_Modification_changement]![L_Change])) AND               (T_Etapes.Position > (SELECT Max(T_Etapes.Position) AS MaxDePosition FROM T_Etapes INNER JOIN J_CHG_Etape ON T_Etapes.N° = J_CHG_Etape.Num_Etape GROUP BY J_CHG_Etape.N°change HAVING (((J_CHG_Etape.N°change)=[Formulaires]![F_Modification_changement]![L_Change]))))) ORDER BY T_Etapes.Position)  AS A, (SELECT Min(T_Etapes.Position) AS MinDePosition FROM SR1_Liste_Etape INNER JOIN T_Etapes ON SR1_Liste_Etape.N° = T_Etapes.N° GROUP BY SR1_Liste_Etape.Facultatif HAVING (((SR1_Liste_Etape.Facultatif)=True)))  AS B
    WHERE (((A.Position)<=[B].[MinDePosition]))
    ORDER BY A.Position;
    Cette dernière affiche:
    A.N°, A.Nom_Etape issue de la table T_Etapes

    Mon champs T_Etapes.N° (clé primaine) est relié au champs J_CHG_Etape.Num_Etape

    Le formulaire SF_CHG_Etape a pour source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT J_CHG_Etape.Clé, J_CHG_Etape.N°change, J_CHG_Etape.Num_Etape, J_CHG_Etape.Date_Action FROM J_CHG_Etape ORDER BY J_CHG_Etape.Date_Action DESC;
    La liste a pour source contrôle le champ: Num_Etape
    Et pour contenu la requête: R_Liste_Etape

    Pourquoi access dans mon formulaire ne fait pas la liaison entre la colonne lié de la liste (N°) avec le SourceContrôle Num_Etape

    Je n'ai pas du comprendre certain engrenage

    J'ai regardé dans un autre version plus ancienne de ma base.

    Le formulaire SF_CHG_Etape avez la même requête pour source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT J_CHG_Etape.Clé, J_CHG_Etape.N°change, J_CHG_Etape.Num_Etape, J_CHG_Etape.Date_Action FROM J_CHG_Etape ORDER BY J_CHG_Etape.Date_Action DESC;
    La liste avez pour source contrôle le même champ: Num_Etape
    La différence était le contenu de la liste: la table T_Etapes

    Dans mon formulaire principal je pouvais parfaitement ajouter des étapes à un changement????

    Pouvez-vous m'expliquer ce qui ce passe?

    Auriez-vous une ou des idées?

    Cordialement

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 83
    Points : 44
    Points
    44
    Par défaut [RESOLU]
    Ca y est j'ai trouvé

    Pour faire fonctionner mon sous formulaire il m'afallu recréer une liste déroulante en lieu et place de l'existante.

    Peut-être un bug en tout cas merci à tous pour votre aide précieuse

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

Discussions similaires

  1. Problème macro compilation données
    Par pasdomidf dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/03/2009, 17h07
  2. Réponses: 2
    Dernier message: 26/02/2009, 10h52
  3. [OpenOffice][Tableur] [macro] comparer donnée fichier extern
    Par luxcibel dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 06/10/2008, 23h24
  4. Macro Copier données d'une feuille vers une feuille cible
    Par La Zélie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/09/2008, 10h01
  5. une macro "enregistrer donnée en cours"
    Par copainvince dans le forum Access
    Réponses: 14
    Dernier message: 19/01/2007, 16h54

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