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

Access Discussion :

[VBA][CSV]copie d'un fichier csv vers un fichier csv


Sujet :

Access

  1. #1
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut [VBA][CSV]copie d'un fichier csv vers un fichier csv
    Bonjour,

    j'essai de copier plusieurs fichiers csv en un seul.

    Pour simplifier, disons que je veux par code VBA copier un fichier csv dans un autre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    '--App : mon fichier source
    '--Application : mon fichier destination
     
    '--je sélectionne la première ligne
    App.Rows("1:1").Select
     
    App.Selection.Copy
     
    '--coller dans le deuxième fichier
    Application.Range("A1").Activate
    Application.ActiveSheet.Paste
    Application.CutCopyMode = False
    Pour simplifier encore, je n'ai copier que la première ligne contenant les titres !!

    Le Problème : dans mon fichier destination, tout n'est pas copier !!
    dans le fichier source, tous les noms des colonnes sont écrites dans la première cellule séparé par des virgules, dans le fichier destination, je ne trouve même pas la moitiée !!

    Est ce que c'est dû à une taille de buffer ou a quelques choses du genre par ce que j'ai passé beaucoup de temps à cherhcer sans résultat !!

    Merci de votre aide !
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Dans le premier fichier tous les entêtes sont dans la cellule A1 ? ... lorsque tu colle dans les second fichier ... tous est collé dans A1? ou un "split" auomatique est effectué par excel .. et les entêtes divisés en plusieurs colonnes ?







    PS : ... eu je crois que t pas sur le bon forum... ?

  3. #3
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    ils sont tous collé dans A1 (tous, en fait ce qui a été copié) !!

    PS : ou dois je aller alors c'est du VBA
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bizarre..
    et il n'y as vraiment rien dans les celulles adjaçente ... B1 , C1.du fichier destination..?
    il y as combien de colonne ?
    :

  5. #5
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    dans l'original 38 (tous collé dans A1 séparé par des virgules)

    dans la copie, il y en a 20 à peu prés !!

    oui c'est bizarre
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

  6. #6
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    je ne pige pas un truc, un CSV c'est un fichier texte ... alors pourquoi passer par Excel ?
    pour fusionner des fichiers ... il suffit d'ouvrir la source en lecture et la destination en écriture ....
    ou alors j'ai mal compris la question ...
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  7. #7
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    tu me donnes des idées !! finalement c'est peut être moi qui a mal compris le problème

    en ouvrant le csv, windows l'ouvre par défaut sous Excel, c'est peut être pour cela que j'ai pensé à travailler sous excel

    mais les csv sont bien des fichiers texts !!

    cependant, on ne veut pas toucher à la base Access, disant qu'il est trés préférable qu'on a un fichier Excel et qu'à l'ouverture, une macro fusionne le tout !! je vais explorer comment en Excel VBA ouvrir des fichiers texts, lire et écrire dans un autre fichier



    Merci tous le monde !
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    je pense que tu vas y arriver sans encombre soit avec l'objet TextStream soit avec un bon vieux Line Input des familles ...
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  9. #9
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    Citation Envoyé par cafeine
    je pense que tu vas y arriver sans encombre soit avec l'objet TextStream soit avec un bon vieux Line Input des familles ...


    je vous tiendrais au courant !!
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

  10. #10
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    cafeine, je te remerci beaucoup !!

    la solution était trés simple et surtout trés éfficace : je choisit mon répertoire qui contient les fichiers csv à concaténer et en résultat j'ai un joli fichier csv qui contient le résultat de tout ça !

    tout ceci se déroule sur l'ouverture de mon fichier Excel.

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Private Sub workbook_open()
    Dim CheminIWR As String
    Dim NomNewFichier As String
     
    CheminIWR = GetDirectory
     
    If CheminIWR = "" Then Exit Sub
     
    CheminIWR = CheminIWR & "\"
     
    NomNewFichier = "concat_" & Month(Now) & "_" & Year(Now) & ".csv"
     
    '--rechercher tous les fichiers dans le répertoire cheminIWR
        Set fs = Application.FileSearch
     
        With fs
            .LookIn = CheminIWR
            .Filename = "*"
            .Execute
            For i = 1 To .FoundFiles.Count
                LitDonnee .FoundFiles(i), CheminIWR & NomNewFichier
                Message2 = Message2 & .FoundFiles(i) & vbCrLf
            Next i
        End With
     
    Message1 = CheminIWR & NomNewFichier
     
     
    UserForm1.Show
    End Sub
     
    Public Sub AjoutDonnee(strContent As String, strChemFich As String)
         Dim F As Integer
     
         F = FreeFile 
         Open strChemFich For Append As #F 
         Print #F, strContent 
         Close #F
    End Sub
     
     Public Sub LitDonnee(strChemFich As String, CheminSave As String)
         Dim F As Integer
         Dim strLigne As String
     
         F = FreeFile '1er numéro libre
         Open strChemFich For Input As #F 
         While Not EOF(F)
              Line Input #F, strLigne 
              '--l'écrire dans le fichier destination
              AjoutDonnee strLigne, CheminSave
         Wend
         Close #F
    End Sub
    j'ai toujours tendance à chercher midi à 14h

    Encore merci pour tous !
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

  11. #11
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    petit problème avec ce code, il ne fonctionne pas avec Excel 97

    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

  12. #12
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    .FileSearch ne me semble pas être dispo sous Acc97, essaie un bon vieux Dir() ...
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  13. #13
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    yes yes cafeine !! pour les curieux voici la version qui marche avec toute version d'Excel
    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
    44
    45
    46
    47
    48
    49
    50
    51
    Private Sub workbook_open()
    Dim CheminIWR As String
    Dim NomNewFichier As String
    Dim i As Integer
    Dim j As Integer
     
    CheminIWR = GetDirectory
     
    If CheminIWR = "" Then Exit Sub
     
    CheminIWR = CheminIWR & "\"
     
    NomNewFichier = "concat_" & Month(Now) & "_" & Year(Now) & ".csv"
     
    '--rechercher tous les fichiers dans le répertoire cheminIWR
    '    Set fs = Application.FileSearch
     
    '    With fs
    '        .LookIn = CheminIWR
    '        .Filename = "*"
    '        .Execute
    '        For i = 1 To .FoundFiles.Count
    '            LitDonnee .FoundFiles(i), CheminIWR & NomNewFichier, i
    '            Message2 = Message2 & .FoundFiles(i) & vbCrLf
    '        Next i
    '    End With
     
        Dim rep As String
     
        rep = Dir(CheminIWR & "*.csv", vbNormal)
        j = 0
        Do While rep <> ""
            rep = Dir
            j = j + 1
        Loop
     
        rep = Dir(CheminIWR & "*.csv", vbNormal)
        i = 1
        Do While rep <> "" And i < j + 1
     
            LitDonnee CheminIWR & rep, CheminIWR & NomNewFichier, i
            Message2 = Message2 & CheminIWR & rep & vbCrLf
            rep = Dir
            i = i + 1
        Loop
     
    Message1 = CheminIWR & NomNewFichier
     
     
    UserForm1.Show
    End Sub
    j'ai ajouté une boucle sur le nombre des fichiers par ce que la méthode dir prend en compte le fichier qui vient d'être créé.

    j'espère que c'est définitivement résolu
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

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

Discussions similaires

  1. Image : copie d'un champ image vers un fichier
    Par xXLeManXx dans le forum WinDev
    Réponses: 3
    Dernier message: 01/04/2010, 16h23
  2. Réponses: 2
    Dernier message: 04/06/2007, 15h39
  3. [VBA-E] Copier une feuille excel d'un fichier A vers un fichier B
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 28
    Dernier message: 22/03/2007, 10h49
  4. [VBA-E]copie spéciale d'un tableau vers un autre
    Par gojira dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/10/2006, 16h21
  5. [VBA Excel] Copie d'une feuille dans un autre fichier
    Par nattyman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/08/2006, 10h35

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