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 :

Utiliser variable pour appeler un Etat [AC-2016]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur Production
    Inscrit en
    Novembre 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Production

    Informations forums :
    Inscription : Novembre 2018
    Messages : 35
    Points : 37
    Points
    37
    Par défaut Utiliser variable pour appeler un Etat
    Bonjour,

    Je planche sur un problème depuis plusieurs heures et je ne trouve pas la solution sur le forum ou sur la FAQ...

    J'ai un formulaire : frmOrdoSuiviLivraison qui contient un état : rptOrdoSuiviLivraison.

    Le formulaire contient des cases à cocher et selon le choix, la source de l'état change.
    ex : si case "Atelier" cochée : Me.rptOrdoSuiviLivraison.SourceObject = État.srptOrdoSuiviLivraisonAtelier

    Enfin j'ai un liste déroulante cboChoixClient. Je souhaiterais appliquer un filtre après mis à jour de cette liste.

    Pour le code de ce filtre je souhaiterais un même code qui fonctionne quel que soit la source de l'état.
    J'ai pensé à ça :

    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
     
     
        strSQL = ...
        strFiltre = ...
     
        strSourceEtat = Me.rptOrdoSuiviLivraison.SourceObject
        strNomEtat = Mid(strSourceEtat, 6)
        strNomEtatVB = "Report_" & strNomEtat
     
        'je vide la source objet pour pouvoir ouvrir l'état en mode design
        Me.rptOrdoSuiviLivraison.SourceObject = ""
     
       'jusque là tout va bien mais ensuite je n'arrive pas à utiliser une variable dans le nom de l'état
     
        'on ouvre l'état en mode Design+Caché pour effectuer les modifications, on sauvegarde, on le ferme et on le réouvre
        'DoCmd.OpenReport strNomEtat, acViewDesign, , , acHidden
        'j'effectue les modifs sur l'état et je change le recordsource
        strNomEtat.lblTitre.Caption = "OK"
        strNomEtat.RecordSource = strSQL & strFiltre
        'strNomEtatVB.Report.RecordSource = strSQL & strFiltre
        'DoCmd.Save acReport, strNomEtat
        'DoCmd.Close acReport, strNomEtat
        'Me.rptOrdoSuiviLivraison.SourceObject = strSourceEtat
        Me.Requery
        Me.Refresh
    Quelle que soit la variable que j'utilise pour remplacer le nom de l'état je n'obtiens que des erreurs.
    Pourriez vous m'indiquer la synthaxe à utiliser?

    Je vous remercie,

    Anthony

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Autant que je sache tu ne peux filtrer un rapport qu'en modifiant le SQL de sa source ou via la commande DoCmd.OpenReport.
    Comme là comme tu n'utilises pas DoCmd.OpenReport, il te reste à changer le SQL qui alimente le rapport AVANT d'ouvrir le rapport.
    Cela va probablement te poser un problème si tu as plusieurs utilisateur qui peuvent demander le même rapport.

    Pourquoi utiliser un sous-rapport et pas un sous-formulaire ?

    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.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur Production
    Inscrit en
    Novembre 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Production

    Informations forums :
    Inscription : Novembre 2018
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    Bonjour Marot,

    Si j'utilise bien DoCmd.OpenReport (lorsque j'ai copié le code plusieurs ligne comporte un ' mais c'était seulement pour faire des tests j'ai oublié de les retirer avant de copier...)

    En fait j'arrive à mes fins quand j'utilise le nom du formulaire
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DoCmd.OpenReport "srptOrdoSuiviLivraison", acViewDesign
    Mais afin d'automatiser le code, je souhaiterais enregistrer le nom du report dans une variable et ensuite appeler cette variable pour ouvrir le report
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     strNomEtat = "srptOrdoSuiviLivraison" 
    DoCmd.OpenReport strNomEtat, acViewDesign
    De même lorsque je fais une modif dans l'état cela fonctionne avec le nom du formulaire
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Report_srptOrdoSuiviLivraison.RecordSource = strSQL & strFiltre
    Et je souhaiterais utiliser une variable mais cela ne fonctionne pas.
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     strNomEtatVBA = "Report_srptSuiviLivraison"
    strNomEtatVBA.RecordSource = strSQL & strFiltre

    Par contre il est vrai que je n'avais pas pensé au fait que si plusieurs utilisateurs effectue cette action en même temps, l'état sera ouvert sur un autre poste et ne pourra être modifié...

    Peux tu me donner les réels avantage d'un sous-formulaire dans mon cas?
    J'avais pensé à utiliser un état car cette page est sensé donner des statistiques et l'état permet de faire des groupes et j'ai l'impression que j'arrive mieux à faire des calculs complexes sur un état que sur un formulaire sans générer d'erreurs. Mais il est possible que je ne me serve pas bien de ces outils...

    Merci pour tes réponses !

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reports(strNomEtatVBA).RecordSource = strSQL & strFiltre
    Et comme cela à l'air "en mémoire" l'ouvrir sur plusieurs postes ne devrait pas poser de problème.

    À valider, je n'ai jamais fait cela.

    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.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur Production
    Inscrit en
    Novembre 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Production

    Informations forums :
    Inscription : Novembre 2018
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    Bonjour Marot,

    Merci pour ta réponse, c'était presque ça mais vraiment aidé !
    Tu n'utilisais pas la bonne variable mais la synthaxe est la bonne.

    Le code fonctionne avec la variable : strNomEtat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     reports(strNomEtatVBA).RecordSource = strSQL & strFiltre
    En tout cas merci pour ton aide !

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

Discussions similaires

  1. Utiliser une variable pour appeler une routine ?
    Par black bulldog dans le forum Langage
    Réponses: 7
    Dernier message: 14/09/2014, 04h30
  2. Réponses: 10
    Dernier message: 11/05/2014, 15h19
  3. Réponses: 1
    Dernier message: 20/06/2012, 14h07
  4. [AC-2007] Utiliser une variable pour appeler les propriétés d'un objet?
    Par Vhalar dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/09/2011, 19h19
  5. Comment utiliser une variable pour appeler un objet ?
    Par kikou63 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/10/2010, 17h54

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