Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 15/04/2009, 13h27   #1 (permalink)
XLDnaute Nouveau
 
Date d'inscription: janvier 2008
Messages: 15
Par défaut Macro pour convertir plusieurs feuilles en CSV

Bonjour !

Voilou j'ai beaucoup de fichiers excel avec de nombreuses feuilles. Je souhaiterais mettre le contenu de ces fichiers sur une base de donnée MySQL.

Pour cela, passer par le format CSV est parfait. Mon soucis est que faire enregistrer sous... pour chaque feuille sur chaque classeur c'est la galère...

J'ai trouvé quelquechose du genre :

Code:
Sub ConvertXLStoCSV()

    Dim strXLSFile As String
    Dim strCSVFile As String
    
    'Change Input and Output folders to relevant location
    Const strInputFolder As String = "C:\Temp\XLS\"
    Const strOutputFolder As String = "C:\Temp\CSV\"
    
    strXLSFile = Dir(strInputFolder & "*.xls")
    
    Do While strXLSFile <> ""
        strCSVFile = Left(strXLSFile, InStrRev(strXLSFile, ".")) & "csv"
        Workbooks.Open strInputFolder & strXLSFile
        ActiveWorkbook.SaveAs strOutputFolder & strCSVFile, xlCSV
        ActiveWorkbook.Close False
        strXLSFile = Dir
    Loop
Pratique dans le sens qu'il traite tous les fichiers compris dans le dossier. Mais comment faire pour qu'il traite en plus chacune des feuilles ?

Merci beaucoup et excellent après-midi !

Fabs
Douane est déconnecté   Réponse avec citation
ANNONCES
Vieux 15/04/2009, 13h50   #2 (permalink)
XLDnaute Accro
 
Date d'inscription: mai 2008
Messages: 1 855
Par défaut Re : Macro pour convertir plusieurs feuilles en CSV

bonjour douane,

j'ai pas eu le tps de vérifier, je repars au taf.
en espérant que ça t'aidera :
Code:
Sub ConvertXLStoCSV()
    Dim curSheet As Worksheet, csvLine As String, csvSeparator As String, myFso, csvFile, i As Integer, j As Integer
    Dim strXLSFile As String
    Dim strCSVFile As String
    csvSeparator = ";"
    
    'Change Input and Output folders to relevant location
    Const strInputFolder As String = "C:\Temp\XLS\"
    Const strOutputFolder As String = "C:\Temp\CSV\"
    Set myFso = CreateObject("Scripting.FileSystemObject")

    strXLSFile = Dir(strInputFolder & "*.xls")
    
    Do While strXLSFile <> ""
        
        Workbooks.Open strInputFolder & strXLSFile
        For Each curSheet In ActiveWorkbook.Sheets
            With curSheet
                strCSVFile = Left((strXLSFile & "_" & .Name), InStrRev(strXLSFile, ".")) & "csv"
                Set csvFile = myFso.CreateTextFile(Filename:=strCSVFile, overwrite:=True)
                For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
                    'initialiser la ligne CSV
                    csvLine = vbNullString
                    'boucler sur les 4 colonnes
                    For j = 1 To .Cells(1, .Columns.Count).End(xlToLeft).Column
                        'créer la ligne
                        csvLine = csvLine & IIf(csvLine = vbNullString, vbNullString, csvSeparator) & .Cells(i, j).Text
                    Next j
                    'écrire la ligne dans le fichier
                    csvFile.WriteLine csvLine
                Next i
                csvFile.Close
            End With
        Next curSheet
        ActiveWorkbook.Close False
        strXLSFile = Dir
    Loop
End Sub

a+
mromain est déconnecté   Réponse avec citation
Vieux 15/04/2009, 14h05   #3 (permalink)
XLDnaute Nouveau
 
Date d'inscription: janvier 2008
Messages: 15
Unhappy Re : Macro pour convertir plusieurs feuilles en CSV

Salut,
Merci beaucoup pour ta réponse super rapide ! Par contre je ne sais pas si ça fonctionne, je me mange un grand "dépassement de capacité" entre les dents comme erreur de la macro...

Trouver un vrai ordinateur est peut-être nécessaire hm...


Edit :

Je sèche sur cette histoire, faudrait-il changer le type des variables ?

Dernière modification par Douane ; 15/04/2009 à 14h53.
Douane est déconnecté   Réponse avec citation
Vieux 16/04/2009, 14h17   #4 (permalink)
XLDnaute Nouveau
 
Date d'inscription: janvier 2008
Messages: 15
Par défaut Re : Macro pour convertir plusieurs feuilles en CSV

Rebonjour,
Je n'arrive pas à me débarasser de ce dépacement de capacité... Quelqu'un aurait-il une idée ?

Merci !
Douane est déconnecté   Réponse avec citation
Vieux 16/04/2009, 14h41   #5 (permalink)
XLDnaute Accro
 
Date d'inscription: mai 2008
Messages: 1 855
Par défaut Re : Macro pour convertir plusieurs feuilles en CSV

Bonjour Douane

j'ai fait une petite modif, ce code marche chez moi :
Code:
Sub ConvertXLStoCSV()
On Error GoTo erreur
Application.ScreenUpdating = False
Dim curSheet As Worksheet, csvLine As String, csvSeparator As String, myFso, csvFile, i As Integer, j As Integer
Dim strXLSFile As String, strInputFolder As String, strOutputFolder As String
Dim strCSVFile As String
csvSeparator = ";"

'Change Input and Output folders to relevant location
strInputFolder = ThisWorkbook.Path & "\"
 strOutputFolder = ThisWorkbook.Path & "\"
Set myFso = CreateObject("Scripting.FileSystemObject")

strXLSFile = Dir(strInputFolder & "*.xls")

Do While strXLSFile <> ""
    If Not strInputFolder & strXLSFile = ThisWorkbook.Path & "\" & ThisWorkbook.Name Then
        Workbooks.Open strInputFolder & strXLSFile
        For Each curSheet In ActiveWorkbook.Sheets
            With curSheet
                strCSVFile = Left((strXLSFile), InStrRev(strXLSFile, ".") - 1) & "_" & .Name & ".csv"
                Set csvFile = myFso.CreateTextFile(Filename:=strCSVFile, overwrite:=True)
                For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
                    'initialiser la ligne CSV
                    csvLine = vbNullString
                    'boucler sur les 4 colonnes
                    For j = 1 To .Cells(1, .Columns.Count).End(xlToLeft).Column
                        'créer la ligne
                        csvLine = csvLine & IIf(csvLine = vbNullString, vbNullString, csvSeparator) & .Cells(i, j).Text
                    Next j
                    'écrire la ligne dans le fichier
                    csvFile.WriteLine csvLine
                Next i
                csvFile.Close
            End With
        Next curSheet
        ActiveWorkbook.Close False
    End If
    strXLSFile = Dir
Loop
erreur:
Application.ScreenUpdating = True
End Sub
il crée un fichier pour chaque feuille de chaque classeur
nomClasseur_nomFeuille.csv

a+
mromain est déconnecté   Réponse avec citation
Vieux 16/04/2009, 15h27   #6 (permalink)
XLDnaute Nouveau
 
Date d'inscription: janvier 2008
Messages: 15
Thumbs up Re : Macro pour convertir plusieurs feuilles en CSV

Joint Technologies ltd Blog Archive Batch convert XLS to CSV

J'ai trouvé ceci qui marche niquel.

Merci encore pour le coup de main !
Douane est déconnecté   Réponse avec citation
Vieux 25/06/2010, 16h10   #7 (permalink)
XLDnaute Nouveau
 
Date d'inscription: juin 2010
Messages: 1
Par défaut Re : Macro pour convertir plusieurs feuilles en CSV

excuse moi je suis débutant en excel et VBA
où est ce que je récupère les fichiers CVS
saad0n est déconnecté   Réponse avec citation
Vieux 28/06/2010, 15h02   #8 (permalink)
XLDnaute Nouveau
 
Date d'inscription: juin 2010
Messages: 35
Par défaut Re : Macro pour convertir plusieurs feuilles en CSV

Bonjour à tous,
J'ai testé la macro proposé dans le lien de Douane et j'ai une erreur à la ligne:
logWks.Cells(oRow, "b").Value = .Name

me disant que la méthode Name de l'objet Worksheet a échoué

Quelqu'un sait réparer ça?
Newbe est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Tags
convertir, csv, macro, mysql

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Macro pour un TCD sur plusieurs feuilles franck70 Forum Excel 7 24/09/2009 09h52
Pb pour convertir plusieurs feuilles Excel ds un PDF Jul95 Forum Excel 11 28/08/2009 17h00
Macro excel pour convertir plusieurs pdf et y récupérer des données Fatifleur Forum Excel 1 09/07/2008 16h20
une macro pour plusieurs feuilles archi Forum Excel 15 18/10/2006 19h34
Macro pour plusieurs feuilles... tinel Forum Excel 5 07/07/2005 20h37


Fuseau horaire GMT +2. Il est actuellement 15h51.


(C) 2006 Excel Downloads