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 :

Enregistrer un Etat avec comme nom le champ d'un formulaire. [AC-2013]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut Enregistrer un Etat avec comme nom le champ d'un formulaire.
    Bonjour

    Malgré plusieurs recherches sur intenet je n'ai pas trouvé la solution à mon problème.

    En deux mots.
    j'ai un formulaire qui permet de saisir des données qui alimentent un état.

    Je souhaite enregistrer cet état avec pour nom celui de la valeur du champ nommé "NumChrono" présent dans le formulaire.

    Le champ "NumChrono" est égal à la concaténation ="Lettre N°: " & "-" & Format([T01_Id];"0000")


    Le code ci-dessous ne fonctionne 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
    Private Sub Commande181_Click()
    Dim mypath As String
    Dim MyFileName As String
    Dim MyFileName_pdf  As String
     
    mypath = "C:\Data\X_Mail\Test\"
    MyFileName = [Forms]![F01_Demande]![NumChrono]
    MyFileName_pdf = "Lettre N°" & MyFileName & ".PDF"
     
    'Ouverture de l'état selon critère [T01_Id]
    DoCmd.OpenReport "E1_Lettre", acViewReport, "", "[T01_Id]=[Forms]![F01_Demande]![T01_Id]", acNormal
     
    'Enregistrement Etat
    DoCmd.OutputTo acOutputReport, "E1_Lettre", "PDFFormat(*.pdf)", mypath & MyFileName_pdf, False, "", , acExportQualityPrint
     
    DoCmd.Save
    DoCmd.Close acReport, "E1_Lettre"
    End Sub
    Ce qui est bizarre est que le code fonctionne si je remplace

    MyFileName = [Forms]![F01_Demande]![NumChrono]
    par
    MyFileName = [Forms]![F01_Demande]![T01_Id]

    [T01_Id] est le champ de type "NuméroAuto" de la table des enregistrements.

    D'avance merci pour votre aide.
    StSym

  2. #2
    Expert éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    A priori, c'est parce que le champ NumChrono n'est pas à jour au moment où la procédure est lancée.
    Mettre un NumChrono.Requery en début de procédure devrait résoudre.
    En même temps, vérifier avec Debug.print ou MsgBox la valeur contenue au lancement de la procédure devrait donner une piste.

    Cordialement,

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut
    Bonjour Madefemere,

    Merci pour ta réponse rapide.
    J'ai modifié le code en suivant tes conseils , mais il bloque toujours au niveau de la ligne.

    DoCmd.OutputTo acOutputReport, "E1_Lettre", "PDFFormat(*.pdf)", mypath & MyFileName_pdf, False, "", , acExportQualityPrint

    Par contre dans la boite de dialogue je vois bien la bonne valeur du champ "NumChrono".

    Code Modifié:


    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
    Private Sub Commande181_Click()
    Dim mypath As String
    Dim MyFileName As String
    Dim MyFileName_pdf  As String
     
    NumChrono.Requery
    MsgBox [Forms]![F01_Demande]![NumChrono]
     
    mypath = "C:\Data\X_Mail\Test\"
    MyFileName = [Forms]![F01_Demande]![NumChrono]
    MyFileName_pdf = "Lettre N°" & MyFileName & ".PDF"
     
    'Ouverture de l'état selon critère [T01_Id]
    DoCmd.OpenReport "E1_Lettre", acViewReport, "", "[T01_Id]=[Forms]![F01_Demande]![T01_Id]", acNormal
     
    'Enregistrement Etat
    DoCmd.OutputTo acOutputReport, "E1_Lettre", "PDFFormat(*.pdf)", mypath & MyFileName_pdf, False, "", , acExportQualityPrint
     
    DoCmd.Save
    DoCmd.Close acReport, "E1_Lettre"
    End Sub
    Cordialement
    StSym

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Re-,
    A priori, ça devrait fonctionner.
    Si ça marche avec NumChrono, le problème se situerait au niveau de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyFileName_pdf = "Lettre N°" & MyFileName & ".PDF"
    et sa concaténation avec le chemin après. Modifies le Lettre N° par Lettre_N° pour voir (supprimer l'espace).

    Cordialement

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut
    Re bonjour,

    Non ça ne fonctionne pas plus.

    Tu as écrit :

    "Si ça marche avec NumChrono, le problème se situerait au niveau de : "

    mais ça ne fonctionne pas avec NumChrono

    Je vois seulement la bonne valeur dans le message qui s'affiche avec le code MsgBox

    Merci encore pour ton aide.

  6. #6
    Expert éminent

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonsoir,

    Je crois que c'est le caractère "-" que tu utilises pour formater tes NumChrono qui te fait des misères.
    Peut-être il faudra s'en passer ou le changer en _.

    De même vu que tu mets déjà :
    NumChrono = "Lettre N°: " & "_" & Format([T01_Id];"0000")

    Dans ton code quand tu mets :
    MyFileName = [Forms]![F01_Demande]![NumChrono]
    MyFileName_pdf = "Lettre N°" & MyFileName & ".PDF"

    Si T01_Id = 1, tu vas avoir :
    NumChrono : Lettre N°:_0001
    MyFileName : Lettre N°:_0001
    MyFileName_pdf : Lettre N°Lettre N°:_0001.PDF <------à vérifier


    Bonne continuation

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    Tu m'as mis sur la piste avec tes remarques sur les "-" "_" espace et ...

    En fait le problème venait du ":" présent dans le NumChrono

    NumChrono = "Lettre N°: " & "_" & Format([T01_Id];"0000")

    Je l'ai supprimé, simplifié le code et tout fonctionne.
    Merci pour ton aide cordialement.

    StSsym

    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
    Private Sub Commande181_Click()
    Dim mypath As String
    Dim MyFileName As String
     
    mypath = "C:\Data\X_Mail\Test\"
    MyFileName = [Forms]![F01_Demande]![NumChrono] & ".pdf"
     
    'Ouverture de l'état selon critère [T01_Id]
    DoCmd.OpenReport "E1_Lettre", acViewReport, "", "[T01_Id]=[Forms]![F01_Demande]![T01_Id]", acNormal
     
    'Enregistrement Etat
    DoCmd.OutputTo acOutputReport, "E1_Lettre", "PDFFormat(*.pdf)", mypath & MyFileName, False, "", , acExportQualityPrint
     
    DoCmd.Save
    DoCmd.Close acReport, "E1_Lettre"
    End Sub

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

Discussions similaires

  1. [AC-2013] RechDom() avec une Variable comme Nom de Champ
    Par (2t0m) dans le forum Access
    Réponses: 1
    Dernier message: 26/09/2013, 14h07
  2. Réponses: 2
    Dernier message: 01/08/2006, 13h38
  3. requete sur 2 tables liées avec même nom de champs
    Par Australia dans le forum Access
    Réponses: 5
    Dernier message: 02/02/2006, 11h38
  4. [curseurs] utiliser une variable comme nom de champ
    Par Christian31 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2005, 14h12
  5. Réponses: 7
    Dernier message: 04/11/2004, 12h20

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