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

VBScript Discussion :

Conversion de fichiers xlsx en CSV point-virgule


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Par défaut Conversion de fichiers xlsx en CSV point-virgule
    Bonjour à tous !

    Je vous vois déjà me dire que ce sujet à été traité à plusieurs reprise mais j'ai écumé plusieurs discussion et même plusieurs forum sans succès...

    Je commence à utiliser le VBScript pour manipuler une quantité certaine de fichiers au format xlsx (2300) et les enregistrer au format CSV(séparateur point-virgule), après 2 semaines à me casser la tête à comprendre les différence entre le VBA, le VB et le VBS (merci au tutos du site d'ailleurs), j'ai réussi à assembler des bouts de code pour faire ce que j'avait envie.

    Le script fonctionne enfin, mais les fichiers que j'obtiens ne sont pas séparés par les bon séparateurs, et je ne sais pas pour quelle raison, ils s'enregistrent dans mes documents (alors qu'avant ils s'enregistraient dans le dossier Temp)

    Voici le code que j'utilise :

    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
    Dim Systeme, Dossier, Fichiers, Fichier, Nom_Dossier, Nom_Fichier
     
    Nom_Dossier = "C:\Users\Philippe\Desktop\Temp\Test"
     
    Set Systeme = CreateObject("Scripting.FileSystemObject")
    Set Dossier = Systeme.GetFolder(Nom_Dossier)
    Set Fichiers = Dossier.Files
     
    Dim xlWb, i, j: i=1: j=Fichiers.Count
     
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = False
    xlApp.DisplayAlerts = False
     
    For each Fichier In Fichiers
    	If i<=j-2 Then 
    'Le -2 s'explique par une différence que me done le "Fichiers.Count" et le nombre réel de fichier dans mon dossier. J'ai fais cette boucle parce que le script essayait d'ouvrir les fichier "caché" qui accompagne l'ouverture d'un fichier dans Microsoft Office...
    		If StrComp(Systeme.GetExtensionName(Fichier.Name), "xlsx", vbTextCompare) = 0 Then
        		Nom_Fichier = Nom_Dossier & "\" & Fichier.Name
    		Set xlWb = xlApp.Workbooks.Open (Nom_Fichier)
    		xlApp.ActiveWorkbook.SaveAs,6,Local=True
    		xlApp.ActiveWorkbook.Close savechanges=False
    		i=i+1
    		End If
    	End If
    Next
     
    xlApp.DisplayAlerts = True 
    xlApp.Quit
     
    Set xlWb = Nothing
    Set xlApp = Nothing
    J'ai donc essayé :
    - Le paramètre "local=True" qui ne change rien, j'ai vérifié mes paramètres régionaux
    - Les différents format de sauvegarde (valeur 6, 22, 23, 24) (D'ailleurs, quand j'écris "xlCSV" cela ne fonctionne pas, il faut absolument mettre la valeur numérique)
    - J'ai bien essayé de ne pas enregistrer les modifications sur le néo-fichier csv avec le "savechanges=false"
    - J'ai également remarqué des problèmes de fichiers qui sont en lecture seule après que le script ai fonctionné. Je n'ai pas encore creusé de ce côté là excepté de vérifier avant l'ouverture de mes fichiers, qu'il étaient bien tous non limité en écriture...

    Je désespère un peu, il me manque un gros background, j'en suis conscient... Mais je suis un peu pressé par le temps, j'ai eu la flemme de faire les 2300 fichier à la main, mais finalement ça m'aurait peut-être pris moins de temps...

    Merci d'avance pour l'aide et vos réponses !!

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Comme d’habitude, si on peut se passer d'Excel ça serait beaucoup mieux pour tout le monde.

    Voici un exemple :
    http://www.codeproject.com/Articles/...lsx-xls-to-csv

    Utilise :
    https://exceldatareader.codeplex.com/

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Par défaut
    Merci beaucoup pour la réponse,

    Malgré tout, ce que tu m'as indiqué m'envoie sur un exe qui me demande d'entrer à la main fichier par fichier et au final je n'ai pas le bon format de csv non plus. Mon but étant de faire la conversion de plus de 2000 fichiers, ça ne va pas être très pratique

    Après avoir passé tout ce temps à essayer de faire ce script, ça me fait repartir de 0 avec qqch qui est en C#, et donc que je ne connais pas du tout.

    ça à l'air d'être beaucoup plus rapide mais je ne saurais pas comment faire pour tout adapter à mon cas

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    il est effectivement beaucoup plus efficace de manipuler les fichiers xls ou xlsx
    directement sans créer une instance d'excel.
    cet article explique bien le principe
    note : les exemples donnés sont écrits en VBA et il faudra donc les adapter au vbscript
    (suppression du typage des variables déclarées)
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Par défaut
    Merci beaucoup,
    J'y jette un coup d'oeil !

Discussions similaires

  1. [XL-2007] Exporter csv point virgule
    Par wamkey dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/01/2014, 20h41
  2. Conversion de fichier xls en csv via php
    Par Realniggaz dans le forum Langage
    Réponses: 1
    Dernier message: 05/06/2013, 15h31
  3. Lecture fichier séparé par un point-virgule
    Par clampin dans le forum Débuter
    Réponses: 1
    Dernier message: 27/08/2009, 15h23
  4. vba - Conversion xls / csv : point virgule
    Par House MD dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/06/2008, 10h36
  5. conversion de fichier Excel en csv ,
    Par bounette dans le forum Excel
    Réponses: 2
    Dernier message: 26/01/2005, 08h42

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