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

Macros et VBA Excel Discussion :

[VBA-E] macro conversion excel vers csv


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 21
    Points : 14
    Points
    14
    Par défaut [VBA-E] macro conversion excel vers csv
    salut a tous,

    Situation

    j'ai créé une macro qui me permet d'exporter mes requetes (qui sont sous access) vers excel. Pour cela j'ai réalisé une macro copier vers
    Une fois cette opération faite, je me retrouve avec environs une quinzaine de fichiers excel.


    Actuellement

    avant j'ouvrais chacun de mes fichiers et les enregistrais en format ".csv" mais maintenant que j'ai beaucoup de fichiers je trouve ca assez contraignant, surtout que cette manipe je dois la réaliser plusieur fois par jour.


    Je voudrais....

    je voudrais créer une macro dans excel ou autre chose qui me permettrais de convertir à partir d'une manipulation simple tous mes fichiers excel en fichiers ".csv" (séparateur en ";").


    merci de votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    salut baboune,

    déja je voulais te féliciter pour ton post, si tous les post étaient comme les tiens ce serait le bonheur....

    Sinon pour ta question si tu crée une macro et que tu fais la manipe d'enregistrer ton fichier en csv cela te donne le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    ActiveWorkbook.SaveAs FileName:= _
            "C:\WINNT\Profiles\XXX\Bureau\Classeur1.csv", FileFormat:=xlCSV, _
            CreateBackup:=False
    tu dois pouvoir te servir de cette fonction pour faire l'enregistrement de tes fichiers automatiquement

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    ca marche ...... enfin presque.

    j'ai inserrer ton code comme tu me l'as dis.


    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 Migration_Click()
        Dim rep As String
        Dim OldName, NewName
        rep = Dir("D:\Projets\Projet Access-PostgreSQL\import\*.xls", vbDirectory)
        Do While (rep <> "")
            If (GetAttr("D:\Projets\Projet Access-PostgreSQL\import\" & rep) And vbDirectory) = vbDirectory Then
                MsgBox "Répertoire " & rep
            Else
                rep1 = Replace(rep, "xls", "csv")
                chemin_complet_old = "D:\Projets\Projet Access-PostgreSQL\import\" & rep
                chemin_complet_new = "D:\Projets\Projet Access-PostgreSQL\import\csv\" & rep1
                OldName = chemin_complet_old: NewName = chemin_complet_new    ' Définit les noms de fichiers.
                Name OldName As NewName    ' Renomme le fichier.
                SaveAs Filename:= _
            chemin_complet_new, FileFormat:=xlCSV, _
                CreateBackup:=False
           End If
            'passe à l'élément suivant
            rep = Dir
        Loop
       End Sub
    Le problème

    Tous mes fichiers sont vides.
    comment ca se fait???

    merci déjà de ton aide

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Mais tu ne prend pas le activeworkbook en compte dans ta méthode save as ??

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    J'ai essayé comme tu m'avais dis mais ca fonctionne toujours pas.

    on va reprendre peut etre depuis le début je me suis peut etre planté tout simplement quelque part.


    1ère étape
    sous access création des requetes, et EXportation de celles sous un format .XLS.


    2ème étape

    j'ai créé un nouveau document dans lequel j'ai mis une macro exécutant le code suivant : (ps j'ai remis le "ActiveWorkbook") :


    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 Migration_Click()
        Dim rep As String
        Dim OldName, NewName
        rep = Dir("D:\Projets\Projet Access-PostgreSQL\import\*.xls", vbDirectory)
        Do While (rep <> "")
            If (GetAttr("D:\Projets\Projet Access-PostgreSQL\import\" & rep) And vbDirectory) = vbDirectory Then
                MsgBox "Répertoire " & rep
            Else
                rep1 = Replace(rep, "xls", "csv")
                chemin_complet_old = "D:\Projets\Projet Access-PostgreSQL\import\" & rep
                chemin_complet_new = "D:\Projets\Projet Access-PostgreSQL\import\csv\" & rep1
         ActiveWorkbook.SaveAs Filename:= _
            chemin_complet_new, FileFormat:=xlCSV, _
                CreateBackup:=False
            End If
            rep = Dir
        Loop
      End Sub

    Explication du code (enfin de ce que je pense qu'il fait car le vb et moi ca fait deux)

    je recherche tous les fichiers .xls dans le répertoire "D:\Projets\Projet Access-PostgreSQL\import\"

    rep1 : prend le nouveau nom qu'aura mon fichier par exemple : avant sous excel c'etait toto.xls et maintenant ca sera toto.csv

    aprés à l'aide de la variable chemin_complet_new je lui indique le nom du répertoire avec son nouveau nom : chemin_complet_new = "D:\Projets\Projet Access-PostgreSQL\import\csv\" & rep1

    puis pour finir je le converti grace au bout de code que tu m'as donné.



    : : Le probleme : :

    Le probleme c'est aprés quand j'ouvre un des fichiers qui a été créé il est vide


    Merci encore de ta patiente

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    En fait j'ai compris ce qui ne va pas dans ta manière de faire:

    1)

    Deja voici un code qui marche et qui fait la modif sur un fichier

    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
     
     
    Sub tests()
        Dim rep As String
        Dim OldName, NewName
        Dim monclasseur As Workbook
        Set monclasseur = ActiveWorkbook
     
        chemin_complet_new = "C:\winnt\profiles\abottoli\bureau\Test1.csv" 
     
           monclasseur.SaveAs FileName:= _
           chemin_complet_new, FileFormat:=xlCSV, _
                CreateBackup:=False
     
    End Sub
    2)

    Ensuite ton problem viens du fait que ta macro ne marche que sur le fichier en cours, je m'explique:

    Dans ton code tu passes tes fichiers en revue mais a aucun moment tu les ouvre... La macro ne marche qu'a l'endroit (c'est a dire dans le fichier Excel ) ou elle est placée.

    Pour comprendre, prend mon code et place le dans un fichier excel rempli, si tu la lance il va te creer un fichier csv avec les données du fichier dans lequel est placée la macro =)

    Je vais faire une recherche pour voir si la suite est possible


  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Voici un code qui marche nickel pour faire ce que tu as demandé

    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
     
     
    Sub tests()
        Dim wbExcel As Workbook
        Dim rep As String
        Dim OldName, NewName
        rep = Dir("D:\Projets\Projet Access-PostgreSQL\import\*.xls", vbDirectory)
        Do While (rep <> "")
            If (GetAttr("D:\Projets\Projet Access-PostgreSQL\import\" & rep) And vbDirectory) = vbDirectory Then
            MsgBox "Répertoire " & rep
            Else
                rep1 = Replace(rep, "xls", "csv")
                Chemin_complet_old = "D:\Projets\Projet Access-PostgreSQL\import\" & rep
                Set wbExcel = Workbooks.Open(Chemin_complet_old)
                chemin_complet_new = "D:\Projets\Projet Access-PostgreSQL\import\csv\" & rep1
                wbExcel.SaveAs FileName:= _
                chemin_complet_new, FileFormat:=xlCSV, _
                CreateBackup:=False
                wbExcel.Close (False)
              End If
            rep = Dir
        Loop
     
    End Sub
    BYE !

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    J'aurai une petite question lié au même thème.
    J'ai un classeur avec plusieurs feuilles et je veux sauvegarder une de ces feuilles au format csv, pour finalement obtenir d'une part mon ancien classeur qui n'a pas changé et d'autre part un fichier csv avec les données de ma feuille ...
    J'ai fait cette macro mais je la trouve très lourde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Workbooks.Add
    ChDir "C:\DATA\PM Reader"
    ActiveWorkbook.SaveAs filename:="C:\DATA\PM Reader\library.csv", FileFormat:=xlCSV, CreateBackup:=False
    Windows("PM Reader v3.xls").Activate
    Sheets("Library").Select
    Sheets("Library").Copy Before:=Workbooks("library.csv").Sheets(1)
    ActiveWorkbook.SaveAs filename:="C:\DATA\PM Reader\library.csv", FileFormat:=xlCSV, CreateBackup:=False
    ActiveWindow.Close
    Quelqu'un a une idée pour simplifier ce code ?
    Merci

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Alors c'est tiré d'un cd d'accompagnement d'un Bouquin VBA

    il explike le format CSV mais j'ai pas encore tout lut

    voila deja le code si ca peux vous servir
    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
     
    Sub ExportARange()
        Set RangeToExport = ActiveWindow.RangeSelection
        If Application.CountA(RangeToExport) = 0 Then
            MsgBox "The selection is empty."
            Exit Sub
        End If
     
        Dim CSVFile As New CSVFileClass
        On Error Resume Next
        With CSVFile
            .ExportRange = RangeToExport
            .Export CSVFileName:=ThisWorkbook.Path & "\temp.csv"
            If Err <> 0 Then MsgBox "Cannot export" & ThisWorkbook.Path & "\temp.csv"
        End With
    End Sub
     
    Sub ImportAFile()
        Dim CSVFile As New CSVFileClass
        On Error Resume Next
        With CSVFile
            .ImportRange = ActiveCell
            .Import CSVFileName:=ThisWorkbook.Path & "\temp.csv"
            If Err <> 0 Then MsgBox "Cannot import " & ThisWorkbook.Path & "\temp.csv"
        End With
    End Sub

  10. #10
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    merci c'est nickel.

    C'est exactement ce qu'il me fallait.



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

Discussions similaires

  1. [VBA-E] macro conversion excel vers csv
    Par abdelhamidem dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/10/2008, 16h48
  2. conversion excel vers access
    Par k_boy dans le forum Access
    Réponses: 4
    Dernier message: 01/10/2007, 15h23
  3. Utilisation de VBA et macros WORD/EXCEL
    Par baptx dans le forum VBA Word
    Réponses: 1
    Dernier message: 17/07/2007, 13h27
  4. conversion excel vers open office
    Par djedje37et28 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/05/2007, 14h29
  5. [VBA-E] Export de Excel vers fichier texte
    Par lipaika dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/01/2007, 09h57

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