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

IHM Discussion :

Convertir état vers ".txt" [AC-2010]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Points : 21
    Points
    21
    Par défaut Convertir état vers ".txt"
    Bonjour
    j'utilise une application qui génère des fichier .txt
    à partir d'une état voir image
    le problème c'est que le fichier texte contient des lignes vides pas comme l’état
    existe t'il une astuce pour l’éliminer
    Images attachées Images attachées    

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Vu que tu as une requête qui alimente ton état, il serait préférable d'utiliser directement ta requête, pour cela regarde du coté de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransfertText ...
    Philippe

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Points : 21
    Points
    21
    Par défaut deux rêquetes
    merci Philippe pour votre réponse
    mais le problème c'est que le résultat afficher dans l’état est l'ensemble des deux requêtes
    Requête1.txt pour la première ligne
    et DETAIL.txt pour les enregistrements
    tu peux voir les images pour mieux me comprendre
    cordialement

  4. #4
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour.
    Si ça peut t'aider, voici la méthode que j'utilise pour supprimer les lignes vides dans un fichier .txt
    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
    ' Le code qui suit recherche et supprime les lignes vides du fichier texte
        Dim Enrgt As String
        Dim NomFichierOriginal
        Dim NomFichierResultat
     
        NomFichierOriginal= "C:\.......\TonFichier.txt"
        NomFichierResultat =  "C:\.......\Resultat.txt"
     
    Open NomFichierOriginal For Input As #1
    Open NomFichierResultat 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
    Cordialement
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Points : 21
    Points
    21
    Par défaut autre solution
    je cherche une solution de telle façon
    lorsque je click sur le bouton j'obtenir un fichier texte sans ligne vide
    est ce que c'est possible
    ci-joint la macro que j'utilise maintenant
    cordialement
    Images attachées Images attachées  

  6. #6
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Si tu ne vois pas comment utiliser le code que j'ai posté, c'est que tu n'as jamais utilisé le VBA. Souhaites-tu que je t'explique comment utiliser ce code? Il faudra créer un module, y créer une fonction de suppression des lignes vides, et l'appeler à l'aide de ta macro. Est-ce que ça te convient si je t'explique comment faire "pas à pas"?
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Points : 21
    Points
    21
    Par défaut explication
    Merci bien RobiPMS
    je suis débutant en VBA et j'aimerai bien que tu m'aide
    je t'explique mieux mon besoin étape par étape :
    1- je rempli la formulaire
    2- je clic sur le bouton qui active le Macro 1
    Macro 1 génère un fichier texte a partir d'une état VIREMENT (l’état comporte deux résultats de deux requête différents)
    lorsque je clic sur le bouton une fenêtre windows s'ouvre qui me permet vérifier le chemin d'enregistrement et de modifier le nom de fichier texte par exemple "VIREMENT 23022013"
    donc a travers votre code que tu a déjà me proposer j'ai remarqué que qu'il bien définir les noms des fichiers donc si je vais utiliser votre code risque de ne pas trouver le fichier défini dans le code VBA
    comment faire !!!

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Points : 21
    Points
    21
    Par défaut il reste que le premier ligne vide
    j'ai essayé ce matin de réduire la hauteur des deux champs dans l’état virement (de 0,5 cm à 0,3 cm)
    résultat obtenir 0 lignes vides entre les enregistrements sauf le premier ligne qui reste vide
    Comment faire
    Images attachées Images attachées  

  9. #9
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut ligne Vide
    karwafmhz bonjour,


    Modifie ta ligne 14 de cette façon et fais moi un retour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If len(EnrGt)>2 and not isnull(EnrGt) Then
    JimBoLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  10. #10
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour jimbolion et karwafmhz.
    Si cette solution te convient, karwafmhz, parfait. Sinon j'avais préparé une adaptation de mon code qui correspond à tes besoins.
    Si tu en as besoin, dis-le et je la poste.
    Cordialement.
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Points : 21
    Points
    21
    Par défaut robiPMS
    Merci jimbolion pour votre reponse
    j'attend votre réponse robiPMS

  12. #12
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut fichier txt
    karwafmhz,

    La modification ligne 14 n'a rien donné de satisfaisant ?

    Bonne soirée

    JimBoLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  13. #13
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    OK.
    On va commencer par créer un module, où l'on va définir une fonction permettant d'utiliser la boîte de dialogue "Enregistrer sous".
    Pour faire ceci : Ruban -> Créer -> Module
    Quand tu cliques sur Module, Access cré un Module1 et l'ouvre dans l'éditeur VBA.
    Au dessus de Option Compare Database, tu colles ceci

    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
    Private Declare Function GetSaveFileName Lib "comdlg32.dll" _
            Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) _
            As Long
     
     ' Structure du fichier
    Private Type OPENFILENAME
      lStructSize As Long
      hWndOwner As Long
      hInstance As Long
      lpstrFilter As String
      lpstrCustomFilter As String
      nMaxCustFilter As Long
      nFilterIndex As Long
      lpstrFile As String
      nMaxFile As Long
      lpstrFileTitle As String
      nMaxFileTitle As Long
      lpstrInitialDir As String
      lpstrTitle As String
      Flags As Long
      nFileOffset As Integer
      nFileExtension As Integer
      lpstrDefExt As String
      lCustData As Long
      lpfnHook As Long
      lpTemplateName As String
    End Type
    Et en dessous tu colles ceci
    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
    Function EnregistrerUnFichier(Handle As Long, Titre As String,  _
                        NomFichier As String, Chemin As String) As String
     
     ' EnregistrerUnFichier est la fonction à utiliser dans votre formulaire pour ouvrir _
    la boîte de dialogue d'enregistrement d'un fichier.
     ' Explication des paramètres
        ' Handle = le handle de la fenêtre (Me.Hwnd)
        ' Titre = titre de la boîte de dialogue
        ' NomFichier = nom par défaut du fichier à enregistrer
        ' Chemin = chemin par défaut du fichier à enregistrer
     
    Dim structSave As OPENFILENAME
     
    With structSave
        .lStructSize = Len(structSave)
        .hWndOwner = Handle
        .nMaxFile = 255
        .lpstrFile = NomFichier & String$(255 - Len(NomFichier), 0)
        .lpstrInitialDir = Chemin
        .lpstrFilter = "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0) ' Définition du filtre (aucun)
        .Flags = &H4  'Option de la boite de dialogue
    End With
     
    If (GetSaveFileName(structSave)) Then
        EnregistrerUnFichier = Mid$(structSave.lpstrFile, 1, InStr(1, structSave.lpstrFile, vbNullChar) - 1)
    End If 
     
    End Function
    Ceci fait, tu disposes maintenant d'un fonction qui te permets d'utiliser selon tes besoins la boîte de dialogue Windows Enregistrer sous.
    Tout ceci est dans la faq http://access.developpez.com/faq/?pa...AffBoitEnregSs.
    Fais déjà ceci et je poste la suite dans un petit moment.
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  14. #14
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Deuxième et dernière étape :
    Tu vas remplacer ta macro par une procédure événementielle.
    Pour cela, tu affiches les propriétés de ton bouton, onglet Evénement, Sur clic, tu effaces la macro et tu choisis à la place [Procédure événementielle]. Puis tu cliques sur le bouton avec ... au bout de la ligne à droite, et entre Private Sub Nom_du_bouton_Click() et End Sub, tu colles ceci :
    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
     
        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, "VIREMENT", "MS-DOSText(*.txt)", NomRepertBD & "VIREMENT.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 & "VIREMENT.txt"
        sTraitement = NomRepertBD & "VIREMENTBis.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, "", "VIREMENTBis.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
    Tu enregistres, et tu essaies...
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  15. #15
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Points : 21
    Points
    21
    Par défaut remerciement
    1000000 MERCI robiPMS
    ça marche très bien
    cordialement

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

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