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

Access Discussion :

Changement dans État selon des Paramètres de la Requête Analyse Croisée [AC-2013]


Sujet :

Access

  1. #1
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut Changement dans État selon des Paramètres de la Requête Analyse Croisée
    Bonjour à tous,

    J'ai un État que j'aimerais qu'il se modifie automatiquement selon une Requête Analyse Croisées, je m'explique:

    1- Actuellement j'ai un Forms! que je complète afin d'alimenter ma Requête Analyse Croisée et qui ouvre automatiquement mon État. Avec 4 champs Texte.
    exemple :
    a) Date 1 (date début première année)
    b) Date 2 (date fin première année)
    c) Date 3 (date début deuxième année)
    d) Date 4 (date fin deuxième année)

    Donc comme vous avez pu le comprendre mon analyse sert à comparer 2 année,

    2- Maintenant dans mon État j'ai insérer un champ texte afin de calculé la différence des montants entre les 2 années. jusque la tout fonctionnes, sauf que la formule que j'ai entrée dans le champ texte (Différence) est bonne pour cette année, mais l'an prochain cette formule ne seras donc plus bonne.

    3- j'aimerais savoir si c'est possible de faire en sorte que :
    a) Mon État soit paramétrable en se servant des données de mon Forms! (Change la formule du champ Texte (Différence) avec les années choisi dans mon Forms!)
    b) Changerais aussi le titre de mon État selon les années choisi de mon Forms! (exemple: Rapport Comparatif "2014" vs "2015") vous voyez le genre.

    Est-ce que celà se fait en VBA ou avec une Macro ?

    Merci de votre aides à l'avance!
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  2. #2
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonsoir,

    Oui il est possible de paramétrer et/ou de changer des infos via VBA dans un état. On peux même affecter des valeur ou des formule à l'ouverture, etc ...

    Mais le plus simple pour que l'ion puisse t'aider correctement, serait de nous montrer ce genre de formule. Car parfois, une formule générique dans l'état peut suffire et ce peux être juste de changer des critère dans une requête en utilisant des alias de nom de colonne comme MontantA1 et MontantA2, ainsi la formule qui fait référence à ces deux montant sera toujours la même. en revanche les critère de sélection pour remplir ces montant sera peut-être différent d'une année sur l'autre
    @+


    Pensez au tag

  3. #3
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Bonjour Didier L,

    Effectivement avec des formules cela vous aiderait un peu !

    Voici le code de SQL de ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PARAMETERS [Formulaires]![Plage de date Année Dollars]![date 1] DateTime, [Formulaires]![Plage de date Année Dollars]![date 2] DateTime, [Formulaires]![Plage de date Année Dollars]![date 3] DateTime, [Formulaires]![Plage de date Année Dollars]![date 4] DateTime;
    TRANSFORM Sum(T_SRemise.Montants) AS Vente
    SELECT T_Concession.[Nom Concession], T_SRemise.IDProduits, T_SRemise.IDSProduits
    FROM T_Concession INNER JOIN (T_Remise INNER JOIN T_SRemise ON T_Remise.IDRemise = T_SRemise.IDRemise) ON T_Concession.IDConcession = T_Remise.IDConcession
    WHERE (((T_Remise.RemiseDate) Between [Formulaires]![Plage de date Année Dollars]![date 1] And [Formulaires]![Plage de date Année Dollars]![date 2] Or (T_Remise.RemiseDate) Between [Formulaires]![Plage de date Année Dollars]![date 3] And [Formulaires]![Plage de date Année Dollars]![date 4]))
    GROUP BY T_Concession.[Nom Concession], T_SRemise.IDProduits, T_SRemise.IDSProduits
    PIVOT Format([RemiseDate],"yyyy");
    je t'inclus une partie en PDF de mon état par cette requête 1- Requête Comparatif Année Dollars.pdf

    la formule que j'ai dans colonne Différence dans le champ Source control =[2015]-[2014]
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  4. #4
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonsoir,

    Effectivement dans ton cas, ta requête Pivot te renverra des Noms de colonnes différents selon le choix des dates.
    L'idée serait par exemple de donner la première année en paramètre lors de l'ouverture de ton état :
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "MonEtat", , , , , Format([Formulaires]![Plage de date Année Dollars]![date 1], "yyyy")
    supposons que tu crée dans ton état 3 champs indépendant Champ1,Champ2 et Champ3 pour faire afficher tes valeurs et ton calcul.
    Tu les laisse indépendant car tu ne sais pas sur quel année ils porteront.
    Tu crée aussi deux étiquettes Et_Champ1 et Et_Champ2 vide pour les titre de tes années.

    Ensuite a l'ouverture de l'état tu aura le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Report_Open(Cancel As Integer)
        Et_Champ1.Caption = Me.OpenArgs 'Libellé de l'étiquette 2014
        Et_Champ2.Caption = Me.OpenArgs + 1 'Libellé de l'étiquette 2015
        Champ1.ControlSource = "[" & Me.OpenArgs & "]" '[2014] dans ton exemple
        Champ2.ControlSource = "[" & Me.OpenArgs + 1 & "]" '[2015] dans ton exemple
        Champ3.ControlSource = "=[" & Me.OpenArgs + 1 & "]-[" & Me.OpenArgs & "]" '=[2015]-[2014] dans ton exemple
    End Sub
    Et ton état sera bien dynamique
    @+


    Pensez au tag

  5. #5
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Pas sur de bien comprendre Didier,

    mon formulaire "Plage de date Année Dollars" sur le bouton "Ok" il appelle une macro. a quel endroit je met le code ? oublie pas je suis Access 2013

    A+
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  6. #6
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Que fait ta macro sur le bouton Ok?

    Ensuite a l'ouverture de l'état tu aura le code suivant :
    Ce code est à copier dans l'état

    oublie pas je suis Access 2013
    Oui et ou est le problème ?
    @+


    Pensez au tag

  7. #7
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Bonjour Didier.

    Que fait ta macro sur le bouton Ok?
    La Macro ouvre mon État, selon les date que j'ai insérer dans le formulaire.
    Ce code est à copier dans l'état
    à quel endroit je copie le code?

    merci!
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  8. #8
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    La Macro ouvre mon État, selon les date que j'ai insérer dans le formulaire.
    Peux tu me montrer ta macro ?
    Car j'avais compris que les dates que tu saisissais dans ton formulaire te servaient surtout dans ta requête analyse croisée source de ton état ?
    Donc pourquoi et/ou comment tu t'en sert dans ta macro ?

    le code suivant sert aussi à ouvrir ton état et pourrait remplacer ta macro.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "MonEtat", , , , , Format([Formulaires]![Plage de date Année Dollars]![date 1], "yyyy")
    Il est plus simple de faire du VBA que des macro.
    Plus facile à relire et a maintenir

    Mais as tu déjà fait du VBA ?
    car le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Report_Open(Cancel As Integer)
        Et_Champ1.Caption = Me.OpenArgs 'Libellé de l'étiquette 2014
        Et_Champ2.Caption = Me.OpenArgs + 1 'Libellé de l'étiquette 2015
        Champ1.ControlSource = "[" & Me.OpenArgs & "]" '[2014] dans ton exemple
        Champ2.ControlSource = "[" & Me.OpenArgs + 1 & "]" '[2015] dans ton exemple
        Champ3.ControlSource = "=[" & Me.OpenArgs + 1 & "]-[" & Me.OpenArgs & "]" '=[2015]-[2014] dans ton exemple
    End Sub
    Comme l'indique le titre de la procédure "Private Sub Report_Open" se colle sur l'événement "sur ouverture" de ton état
    @+


    Pensez au tag

  9. #9
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Oui j'ai déjà fait un peu de VBA dans excell. mais j'avoue que c'est plutôt du copier coller que je prenait dans des forums, puis après je l'ajustait à ma guise, (essaie, erreur)

    ce code je l'insère a mon bouton "Ok" ? donc remplace la macro?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Report_Open(Cancel As Integer)
        Et_Champ1.Caption = Me.OpenArgs 'Libellé de l'étiquette 2014
        Et_Champ2.Caption = Me.OpenArgs + 1 'Libellé de l'étiquette 2015
        Champ1.ControlSource = "[" & Me.OpenArgs & "]" '[2014] dans ton exemple
        Champ2.ControlSource = "[" & Me.OpenArgs + 1 & "]" '[2015] dans ton exemple
        Champ3.ControlSource = "=[" & Me.OpenArgs + 1 & "]-[" & Me.OpenArgs & "]" '=[2015]-[2014] dans ton exemple
    End Sub
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  10. #10
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    si je t'envoie mon formulaire , puis mon État ca serait pas plus facile ?
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  11. #11
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    dans mon état j'ai copier le code dans Sur Ouverture, mais il m'arrive une erreur de compilation "Variable non définie" "Et_Champ1.Caption est souligner dans le débogeur.
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  12. #12
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    ce code je l'insère a mon bouton "Ok" ? donc remplace la macro?
    Non pas ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Report_Open(Cancel As Integer)
        Et_Champ1.Caption = Me.OpenArgs 'Libellé de l'étiquette 2014
        Et_Champ2.Caption = Me.OpenArgs + 1 'Libellé de l'étiquette 2015
        Champ1.ControlSource = "[" & Me.OpenArgs & "]" '[2014] dans ton exemple
        Champ2.ControlSource = "[" & Me.OpenArgs + 1 & "]" '[2015] dans ton exemple
        Champ3.ControlSource = "=[" & Me.OpenArgs + 1 & "]-[" & Me.OpenArgs & "]" '=[2015]-[2014] dans ton exemple
    End Sub
    Qui comme je te l'ai déjà dit doit se mettre dans ton état sur l'événement "sur ouverture" !!!!

    Mais derrière ton bouton "Ok" tu doit avoir le code d'ouverture de l'état :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "MonEtat", , , , , Format([Formulaires]![Plage de date Année Dollars]![date 1], "yyyy")
    qui est sensé remplacer ta macro

    si je t'envoie mon formulaire , puis mon État ca serait pas plus facile ?
    Oui

    dans mon état j'ai copier le code dans Sur Ouverture, mais il m'arrive une erreur de compilation "Variable non définie" "Et_Champ1.Caption est souligner dans le débogeur.
    As tu lu cela dans mon post précédent ??
    supposons que tu crée dans ton état 3 champs indépendant Champ1,Champ2 et Champ3 pour faire afficher tes valeurs et ton calcul.
    Tu les laisse indépendant car tu ne sais pas sur quel année ils porteront.
    Tu crée aussi deux étiquettes Et_Champ1 et Et_Champ2 vide pour les titre de tes années.
    Je ne sais pas comment tu as appelé tes champs, donc à toi d'adapter le code en fonction des nom de tes champs !!!
    @+


    Pensez au tag

  13. #13
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Re salut Didier,

    j'ai essayer mais ca marche pas!

    j'ai enregistrer ma base sous un autres nom, et vider les renseignement non essantiel, voudrais-tu que je te l'envoie en .zip ?
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  14. #14
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Oui

    Aucun souci, attache le zip dans ton prochain post et je regarderai cela
    @+


    Pensez au tag

  15. #15
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    il est trop volumineux, je pourrais-te le partager avec OneDrive?
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  16. #16
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  17. #17
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Voila les objets corrigés que tu peux importer dans ton projet.

    testSuivie des clients_light.zip

    Il y avait plusieurs petites choses a modifier pour que cela marche.

    Je ne saurais dire pourquoi, mais dans la requête source il ne voulais pas prendre en compte la référence aux champs contenus dans ton formulaire, dès lors que l'on faisait une analyse croisée ???
    Si on faisait une requête sélection simple, cela marchait bien, donc la syntaxe était bonne, mais dès lors que l'on passait en Requête Analyse croisée, cela générait une erreur.
    Donc tu verra dans les critère pour éviter cela, j'ai créer une fonction RecupDate que j'ai définie dans le module .
    Dans le formulaire j'ai créer un autre bouton qui exécute le code que je t'avais fournis.
    Et dans l'état, pour m'assurer qu'il marche, j'ai fait référence aux année 2013 et 2014 dans les champs, j'ai renommé, les controls que je veux modifier par le VBA et j'ai rajouter aussi les champs qui affichent les sommes, dans le code sur ouverture, pour leur affecter les bonnes formules sources.

    Et normalement tout marche
    @+


    Pensez au tag

  18. #18
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Merci Didier,

    je vais importer tes fichiers et voir si tout fonctionne aussitôt que possible, je te donne des nouvelles.

    merci!
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  19. #19
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Bonjour Didier,

    Quand je l'essai dans la base que tu as modifier tout marche, Par contre quand j'importe la requête, L'État ainsi que formulaire dans ma base de données, il m'arrive une erreur quand je complete les dates dans mon formulaire, l'erreur est la suivante:
    "Erreur de compilation" "Sub ou Function non définie
    et dans la fenêtre VBA

    Private Sub Commande10_Click()
    DoCmd.OpenReport "1- Requête Comparatif Année Dollars", acViewPreview, , , , Format(RecupDate(1), "yyyy")
    End Sub
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

  20. #20
    Membre régulier Avatar de DidoFido
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 157
    Points : 73
    Points
    73
    Par défaut
    Ok Didier,

    J'avais oubleir de changer mon Module1 dans ma base, la sa semble fonctionner. toute mes excuses
    Office 365 Famille
    J'adore Access, mais j'aimerais bien maîtriser le VBA

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/06/2011, 10h05
  2. Réponses: 11
    Dernier message: 29/05/2008, 16h26
  3. Réponses: 2
    Dernier message: 04/07/2007, 20h33
  4. Calcul entre 2 dates selon des paramètres
    Par jibileg dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/05/2007, 12h48

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