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 :

Exporter un état vers .txt [AC-2016]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Intégrateur ERP CRM
    Inscrit en
    Février 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Intégrateur ERP CRM

    Informations forums :
    Inscription : Février 2017
    Messages : 36
    Points : 17
    Points
    17
    Par défaut Exporter un état vers .txt
    Bonjour tout le monde,

    Je reviens vers vous car je souhaite, transformer un état en cours (après sauvegarde) en fichier .txt

    j'ai trouver ceci sur le forum:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OutputTo acOutputReport, "Etat Utilisateur", acFormatRTF, "c:\mes documents\tmp.doc", True
    modifier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OutputTo acOutputReport, "Etat Utilisateur", acFormatTXT, "c:\mes documents\tmp.txt", True
    Première question, où intégré ce code? Car je souhaite que ce soit une action manuel, càd que l'utilisateur doit cliquer sur un bouton pour lancer cette commande, et que le fichier se génère dans un dossier xxx.

    Sachant que chaque état doit être généré séparément, je ne peux pas avoir un fichier .txt avec xxx états.

    J'espère que mes questions sont correctement exprimées.

    Un grand merci.

    Cordialement

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

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

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

    Il est possible d'ajouter un bouton sur l'état qui lancera l'export vers un fichier txt.
    Il faudra cependant prévoir de masquer le bouton lors d'une impression normale de cet état, pour le réafficher ensuite.
    Une façon de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub BoutonCommande_Click()
       DoCmd.OutputTo acOutputReport, Me.Name, acFormatTXT, "D:\Access\" & Me.Name & ".txt"  '--- chemin et nom fichier à adapter
    End Sub
     
    Private Sub EntêteÉtat_Print(Cancel As Integer, PrintCount As Integer)
       '--- pour qu'à l'impression le bouton soit masqué
       Me.BoutonCommande.Visible = False
    End Sub
     
    Private Sub Report_Current()
       Me.BoutonCommande.Visible = True
    End Sub
    Bonne continuation.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Intégrateur ERP CRM
    Inscrit en
    Février 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Intégrateur ERP CRM

    Informations forums :
    Inscription : Février 2017
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Bonsoir,

    merci pour la solution, c'est fonctionnel, juste une modification:

    Est il possible que chaque état soit exporter de façon individuel?

    Est il possible de travailler directement sur le formulaire? afin d'éviter de naviguer entre l'état et le formulaire?

    Cordialement.

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

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

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

    Je ne sais pas si j'ai bien compris la question, mais il est tout à fait possible de poser un bouton sur le formulaire qui lance la commande BoutonCommande_Click() indiquée précédemment (et qui est équivalente à celle que vous aviez déjà donnée). Dans ce cas, il n'y a évidement plus à s'occuper de masquer le bouton placé sur l'état.

    Bonne continuation.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Intégrateur ERP CRM
    Inscrit en
    Février 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Intégrateur ERP CRM

    Informations forums :
    Inscription : Février 2017
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    C'est exactement ça, où dois je l'intégré dans le formulaire? dans le vba de "base" du formulaire ou je dois créer un bouton qui va enclenché le bouton situé dans l'état?

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

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 166
    Points : 5 485
    Points
    5 485
    Par défaut
    Il faut poser un bouton dans le formulaire qui sur l'événement "Sur clic" lance l'instruction DoCmd.OutputTo.

    Bonne continuation.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Intégrateur ERP CRM
    Inscrit en
    Février 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Intégrateur ERP CRM

    Informations forums :
    Inscription : Février 2017
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    J'ai bien créer le bouton, je rentre dans le vba,

    ensuite, j'ai
    mais je dois prendre quelle valeur pour pointer vers le bouton du formulaire?
    De plus lors de la génération de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OutputTo acOutputReport, Me.Name, acFormatTXT, "F:" & Me.Name & ".txt"
    J'ai des interlignes entre toute mes lignes, ma machine ne parviendra pas à les lires, donc j'ai essayer:

    (https://www.developpez.net/forums/d4...fichier-texte/)

    J'ai du oublier des fragments?

    Merci de votre aide

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

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

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

    En mode création de formulaire, vous déposer un bouton sur votre formulaire.
    Ce bouton étant sélectionné, dans la fenêtre des propriétés:
    - sélectionner l'onglet Autres et dans le champ Nom indiquer le nom que vous voulez donner à ce bouton (par exemple: btnText),
    - sélectionner l'onglet Format et dans le champ Légende indiquer le texte que doit afficher le bouton (par exemple: sauver en .txt)
    - sélectionner l'onglet Evénement et dans le déroulant Sur clic choisir [Procédure événementielle] puis cliquer sur le petit bouton [...]
    cela va vous faire passer dans l'éditeur VBA, dans la partie du code _Click() qui sera actionnée par ce bouton.
    C'est à cet endroit qu'il faut insérer le code, pour obtenir finalement quelque chose de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub btnText_Click()
       DoCmd.OutputTo acOutputReport, Me.Name, acFormatTXT, "F:\Dossier\sousdossier\" & Me.Name & ".txt"
    End Sub
    Attention: il faut placer des \ dans le chemin. Donc F:\ si cela va dans le dossier racine.

    Cordialement.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Intégrateur ERP CRM
    Inscrit en
    Février 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Intégrateur ERP CRM

    Informations forums :
    Inscription : Février 2017
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Merci c'est très clair, sur mon état cette commande fonctionne, je cherche à lancer cette commande depuis mon formulaire, qui va déclencher le bouton de mon état.

    est ce possible?

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

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 166
    Points : 5 485
    Points
    5 485
    Par défaut
    C'est un peu bizarre, mais bon.
    1) dans l'état il faut rendre Public la commande Private du bouton qui demande la sauvegarde sous txt, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub BoutonCommande_Click()
       ...
    End Sub
    2) dans le formulaire, dans le bouton qui doit lancer la commande, un code de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub btnText_Click()
       Call Report_NomEtat.BoutonCommande_Click
    End Sub
    Note: la commande va s'effectuer que l'état soit affiché ou non.

    Bonne continuation.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Intégrateur ERP CRM
    Inscrit en
    Février 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Intégrateur ERP CRM

    Informations forums :
    Inscription : Février 2017
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    je sais que ca peut paraître bizarre, mais l'état va servir d'interface user :/

    edit: c'est fonctionnelllll formidable
    merci

    Une dernière puis je vous laisses tranquille !

    Je souhaite supprimer les espaces du fichier généré par .txt.

    J'ai trouver ceci:
    https://www.developpez.net/forums/d4...fichier-texte/

    N'y aurait il pas plus "court"? Que de créer toute une macro, car là en l'état c'est super, je voudrais juste supprimer ces interligne :/

    Merci

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

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

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

    Non, je ne vous pas d'autre solution pour supprimer toutes ces lignes vides.
    Maintenant, je ne sais pas à quoi vont servir ces fichiers texte.

    Bonne continuation.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Intégrateur ERP CRM
    Inscrit en
    Février 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Intégrateur ERP CRM

    Informations forums :
    Inscription : Février 2017
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Bonjour,
    Le fichier généré est "lu" par une machine industriel qui imprime des étiquettes, un si gros projet pour un "simple" résultat.

    Cordialement

  14. #14
    Membre à l'essai
    Homme Profil pro
    Intégrateur ERP CRM
    Inscrit en
    Février 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Intégrateur ERP CRM

    Informations forums :
    Inscription : Février 2017
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Bonsoir,

    Y a t il un moyen d'exporter uniquement l'état en cours? L'export fonctionne mais il me sort tous les états...

    J'ai vu des commandes pour l'impression, mais pas pour l'export.

    Une idée?

    Cordialement

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

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

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

    Je ne comprends pas le problème soulevé.
    Je me demande cependant si la démarche suivie pour sortir ces textes en fichiers .txt est la bonne et s'il ne serait pas plus efficace d'exporter le résultat d'une requête produisant le texte souhaité en utilisant la commande DoCmd.TransferText (ce qui n'est pas tout à fait simple à mettre en oeuvre, comme on peut le voir dans cette discussion, mais qui une fois effectué ne demande plus qu'une ligne de code).

    Cordialement.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Intégrateur ERP CRM
    Inscrit en
    Février 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Intégrateur ERP CRM

    Informations forums :
    Inscription : Février 2017
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    En fait, j'ai créer mon état, qui reprend les informations d'un formulaire.

    Quand je lance mon code sur l'état, ca fonctionne, sauf qu'il m'extrait tout les autres états, j'aurais uniquement besoin de l'état sur lequel je suis :s Car j'ai plus de 120 états par jours et chacun doit généré 1 fichier .txt.

    Alors une idée?

    Cordialement

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

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

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

    Combien de rapports y a-t-il dans l'explorateur de projet ? 120 ?
    Nom : Report.jpg
Affichages : 357
Taille : 17,3 Ko
    Cordialement.

  18. #18
    Membre à l'essai
    Homme Profil pro
    Intégrateur ERP CRM
    Inscrit en
    Février 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Intégrateur ERP CRM

    Informations forums :
    Inscription : Février 2017
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    J'ai deux reports


    Nom : Report.png
Affichages : 345
Taille : 3,8 Ko

    Chacun étant lier entre eux par relation et choix en cascade

    Le formulaire créer un état pour la partie "administratif" et un état pour la partie "atelier".

    Le formulaire est "maitre" des choix en cascades, sauf que l'administratif à une section "A" et l'atelier une section "B", les deux séparé.

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

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 166
    Points : 5 485
    Points
    5 485
    Par défaut
    Il y a 2 points à regarder:
    - l'instruction qui ouvre le rapport (DoCmd.OpenReport .... )
    - les rapports contiennent-ils des filtres (onglet Données, propriété Filtre): lesquels ?

  20. #20
    Membre à l'essai
    Homme Profil pro
    Intégrateur ERP CRM
    Inscrit en
    Février 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Intégrateur ERP CRM

    Informations forums :
    Inscription : Février 2017
    Messages : 36
    Points : 17
    Points
    17
    Par défaut
    Le formulaire

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Option Compare Database
    Private Sub Lieu_abattage_et_n°_Dirty(Cancel As Integer)
    Me.Villes.Requery
    End Sub
    Private Sub Articles_Change()
    Me.Pays.Requery
    End Sub
    Private Sub Articles_Dirty(Cancel As Integer)
    Me.Pays.Requery
    End Sub
    Private Sub Biz_Click()
        Call Report_Atelier.BoutonCommande2_Click
    End Sub
    Private Sub form_load()
        Me.Combo0.AddItem Date + 5
        Me.Combo0.AddItem Date + 10
        Me.Combo0.AddItem Date + 15
        Me.Combo0.AddItem Date + 21
    End Sub
    Private Sub Pays_Change()
    Me.Villes.Requery
    Me.Types.Requery
    Me.Articles.Requery
    End Sub
    Private Sub Types_Change()
    Me.Pays.Requery
    End Sub
    Private Sub Types_GotFocus()
    Me.Villes.RowSource = "R_outil_T"
    Me.Pays.Requery
    End Sub
    Private Sub Types_LostFocus()
    Me.Villes.RowSource = "R_outil_T2"
    Me.Pays.Requery
    End Sub
    Private Sub Villes_GotFocus()
    Me.Villes.RowSource = "R_outil"
    End Sub
    Private Sub Villes_LostFocus()
    Me.Villes.RowSource = "R_outil2"
    End Sub
    et l'extraction

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Option Compare Database
    Private Sub txt_click()
    Public Sub boutoncommande_click()
       DoCmd.OutputTo acOutputReport, Me.Name, acFormatTXT, "F:" & Me.Name & "Bizerba.txt"  '--- chemin et nom fichier à adapter
    End Sub
    Public Sub BoutonCommande2_Click()
        Dim Msg As String, NomRepertBD As String
        NomRepertBD = CurrentProject.Path & "\" 'ParentDir(Application.CurrentDb.Name) ' récupération du chemin de l'application
        DoCmd.OutputTo acOutputReport, "Atelier", "MS-DOSText(*.txt)", NomRepertBD & "Backup.txt", False, "", , acExportQualityPrint    ' ceci est ce que faisait la macro
        Dim sEmplacementInitial As String, sTraitement As String, sEmplacementFinal As String      ' déclaration des variables contenant les emplacements des fichiers texte original, traité et enregistré en final
        sEmplacementInitial = NomRepertBD & "Backup.txt"
        sTraitement = NomRepertBD & "Data.txt"
        Dim Enrgt As String
    ' ce qui suit supprime toutes les lignes vides du fichier original
    Open sEmplacementInitial For Input As #1
    Open sTraitement For Output As #2
    While Not EOF(1)
        Input #1, Enrgt
        If Not Left(Enrgt, 1) = "" Then
            Print #2, Enrgt
        End If
    Wend
    Close #1
    Close #2
    Msg = "Voulez-vous sauvegarder le fichier sous un autre nom ou à un autre emplacement? " & vbCr & "Si c'est le cas, cliquez sur Oui. " _
    & vbCr & vbCr & "Si vous cliquez sur Non le fichier sera sauvegardé à l'emplacement " & sTraitement   ' Définit le message.
    Style = vbYesNo + vbCritical + vbDefaultButton2    ' Définit les boutons.
    Response = MsgBox(Msg, Style)
    If Response = vbYes Then    ' L'utilisateur a choisi Oui.
        sEmplacementFinal = EnregistrerUnFichier(Me.Hwnd, "", "Data.txt", NomRepertBD)
            If sEmplacementFinal = sTraitement Then    'cas où l'utilisateur ne choisit pas d'autre nom ou emplacement
            Exit Sub
            Else
            FileCopy sTraitement, sEmplacementFinal
            End If
    Else
        Exit Sub
    End If
    End Sub
    Private Sub EntêteÉtat_Print(Cancel As Integer, PrintCount As Integer)
       '--- pour qu'à l'impression le bouton soit masqué
       Me.BoutonCOmmande.Visible = False
    End Sub
    Ce sont les deux VBA que j'utilise :/ (on peut d'ailleurs remarqué mon manque de savoir, car je pense qu'il y a un paquets d'erreurs)

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

Discussions similaires

  1. [AC-2007] exporter un état vers excell en passant par le ruban
    Par mbo2 dans le forum IHM
    Réponses: 1
    Dernier message: 27/04/2013, 16h01
  2. [AC-2010] Convertir état vers ".txt"
    Par karwafmhz dans le forum IHM
    Réponses: 14
    Dernier message: 25/02/2013, 00h51
  3. [AC-2003] Exporter un état vers Excel
    Par Williamm dans le forum VBA Access
    Réponses: 3
    Dernier message: 30/06/2011, 13h23
  4. Export tableau Excel vers txt
    Par TheRealMike dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/05/2009, 09h53
  5. Exporter un état QuickReport vers Excel.
    Par abdelghani_k dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/06/2004, 15h22

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