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 :

Suppression lignes sur fichier CSV depuis Access


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Suppression lignes sur fichier CSV depuis Access
    Bonjour

    Avant d'importer dans une table ACCESS un fichier CSV, je désires le modifier en supprimant la première ligne (qui ne contient pas les noms de champ) car elle n'a rien à voir avec la suite du fichier.

    J'ai essayé avant le code suivant :

    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
    Sub SupLignes()
    Dim Ligne As String, intI As Integer
     
      Open "c:\temp\export\592.csv" For Input As #1
      Open "c:\temp\export\5923.csv" For Output As #2
    intI=1
     
      Do While Not EOF(1)
            Line Input #1, Ligne
        If intI <> 1 Then Print #2, Ligne
     
    intI=intI +1
     
         Loop 
     
      Close #1, #2
     
    End Sub
    Celà ne fonctionne pas car le numéro de ligne (intI) ne s'incremente pas.

    Merci pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Bonjour ,

    Il est dommage que tu n'as pas pris le temps de faire une recherche sur developpez ... page 2 des recherche on y trouve exactement ton même problème ...

    http://www.developpez.net/forums/d96...chier-csv-vba/

    Comportant une résolution et une explication.

    Cordialement ,
    Si ma réponse ou ma question vous semble pertinente un clique sur le pouce vert.
    La base des Expression Access à Connaitre : http://office.microsoft.com/fr-ca/ac...295.aspx?CTT=3
    Un livre de chevet parfait : "Développement Android": http://www.editions-eyrolles.com/Livre/9782212125870/

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    J'avais bien cherché sur le forum et trouvé cette solution.

    Sauf qu'il me semble que ce code est incomplet non ?

    Cela ne concerne que la lecture du fichier source. Quid de l'écriture via output? C'est là que je peche avec la condition du numero de ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Dim F As Integer, s_Ligne As String
        F = FreeFile
        Open "tonFichier" For Input As #F
            Do While Not EOF(F)
                Line Input #F, s_Ligne
            Loop
        Close #F

  4. #4
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Bonjour,

    Il est bien écrit dans le post dont MisterS à publié l'adresse que ce n'est pas complet et qu'il suffit de seulement lire la première puis lire et écrire les suivantes.

    Une solution simple pourai être celle-ci

    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
     
        Dim F As Integer
        Dim G As Integer
        Dim s_Ligne As String
     
        'Attribution d'un numéro pour les descripteurs de fichier
        F = FreeFile
        G = FreeFile
     
        'Ouverture des descripteurs de fichier
        Open "tonFichier" For Input As #F
        Open "fichierDeSortie" For Output As #G
     
         Line Input #F, s_Ligne ' on lit la première ligne sans l'ecrire
         Do While Not EOF(F) ' On lit et écrit les suivantes 
            Line Input #F, s_Ligne
            Print #G, s_Ligne
        Loop
     
        'Fermeture des descripteurs de fichier
        Close #F
        Close #G
    Attention si on veux copier une plage de lignes il faut poser plus de conditions. Et il serrait même mieux dans ce cas de charger le fichier source en mémoire en le lisant, faire les opérations de traitement en mémoire et écrire la plage voulue dans un nouveau fichier (ou dans le fichier d'origine selon le besoin).

    Cordialement,
    loi de LeBlanc : Plus tard signifie jamais. extrait de Coder proprement Auteur:Robert C. Martin

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Merci pour ton aide

    Je viens d'adapter ce code à mon cas (chemin des fichiers) et je bute toujours sur une erreur 55 "fichier déjà ouvert" qui concerne la ligne d'ouverture du fichier cible en output (Open "c:\temp\export\xxx.csv" For Output As #G) ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Ton fichier d'arriver est-il bien fermé ?
    Assure toi que le fichier d'arriver et le fichier de départ ne sont pas ouvert.
    (vérifie dans le Task manager si l'application n'aurais pas planter en douce !)
    Si ma réponse ou ma question vous semble pertinente un clique sur le pouce vert.
    La base des Expression Access à Connaitre : http://office.microsoft.com/fr-ca/ac...295.aspx?CTT=3
    Un livre de chevet parfait : "Développement Android": http://www.editions-eyrolles.com/Livre/9782212125870/

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Le fichier d'arrivée n'est pas ouvert puisqu'il n'est même pas encore créé. ??

  8. #8
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Si cette erreur surviens, elle signifie que le descripteur de fichier pointe déjà vers un fichier ouvert. Il peu s'agir d'un descripteur qui n'à pas été fermé et qui pointe toujours (probablement tout seul) sur ce fichier.

    Au pire, il faut essayer remplacer les numéros des descripteurs fournis par l'instruction FreeFile par des numéro arbitraires constant.
    Ne pas hésiter à redémarrer Access voir l'ordinateur. Un programme est sûrement en train d'accèder au fichier ou l'a laissé ouvert.
    loi de LeBlanc : Plus tard signifie jamais. extrait de Coder proprement Auteur:Robert C. Martin

  9. #9
    Membre actif
    Homme Profil pro
    Manager de Projet SAP
    Inscrit en
    Mars 2009
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Pologne

    Informations professionnelles :
    Activité : Manager de Projet SAP
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2009
    Messages : 210
    Points : 238
    Points
    238
    Par défaut
    Bonjour.

    J'avais ouvert une discussion en avril 2010 a l'adresse suivante a ce sujet :
    http://www.developpez.net/forums/d90...erer-nr-ligne/

    J'avais recu une reponse complete qui avait permis de resoudre mon probleme.

    Cdlt.

Discussions similaires

  1. [XL-2007] Remplacer les retours chariot et retour à la ligne dans un fichier csv depuis Excel.
    Par Pierrea4564 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/02/2011, 12h49
  2. Tracé graphique sur fichier excel depuis vba access
    Par kdestine dans le forum VBA Access
    Réponses: 0
    Dernier message: 26/09/2007, 12h37
  3. [VBA Excel Débutant] Tri d'un fichier Excel depuis Access
    Par elgringo2007 dans le forum Access
    Réponses: 3
    Dernier message: 07/08/2006, 16h21
  4. comment fermer un fichier Excel depuis Access?
    Par audrey_desgres dans le forum Access
    Réponses: 14
    Dernier message: 21/06/2005, 12h43
  5. Ouvrir un fichier excel depuis access
    Par ptitegrenouille dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 03/05/2005, 11h47

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