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 :

Eclater un fichier excel en csv


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Eclater un fichier excel en csv
    Bonjour,

    Chaque semaine je reçois un fichier excel avec +/- 10 onglets :

    Ce fichier est à éclater en autant de fichier que d'onglets. (si 10 feuilles alors 10 fichiers à générer).

    A noter on dispose au départ d'un fichier XLS ou XLSX .

    L'éclatement doit générer autant de fichiers CSV que de feuilles dans le fichier de départ.

    Autre contrainte .

    Le code VB doit être indépendant du fichier excel. C'est à dire un script en dehors du fichiers excel. En somme le code VB est à taper sur un bloc note et devra porter l'extension ".vb".

    J'ai mis la main sur un code que j'avais , mais celui ci ne fait pas exactement ce que je veux :

    Code vb : 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
    Private Sub CommandButton1_Click()
     
    Dim nom_feuille_classeur As String
    Dim nom_document As String
    Dim trigramme_apv As String
    Dim nouveau_fichier As String
    Dim repertoire_de_sauvegarde As String
    Dim lien_nouveau_fichier As String
     
     
     Dim Ws As Worksheet
     Dim Wb As Workbook
     
    Set Ws = ActiveSheet
    'nom_feuille_classeur = ActiveSheet.Name ' recuperation nom de la feuille dans le classeur de départ
    Set Wb = Workbooks.Add
    trigramme_apv = Range("D6").Value ' recuperation nom de AVP
     
    Ws.Copy before:=Wb.Sheets(1)
     
    repertoire_de_sauvegarde = "M:\" ' nom repertoire ou mettre le nouveau fichier
     
    nouveau_fichier = Format(Date, "yyyymmdd") & " " & Ws.Range("D6") & " APV " & Ws.Name & " adherents .xlsm " ' nom du nouveau document
     
    lien_nouveau_fichier = repertoire_de_sauvegarde & nouveau_fichier ' nouveau document
     
    Wb.SaveAs Filename:=lien_nouveau_fichier ' lien nouveau fichier >> problème avec le ActiveSheet.SaveAs et le Filename:= , c est l erreur 1004
    Wb.Close False
    End Sub

    Merci de m'aiguiller
    Dernière modification par ProgElecT ; 03/12/2014 à 22h58.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    Techniquement, quelle est la question, la difficulté rencontrée ?!

    Un code effectue uniquement ce qu'on lui demande et rien d'autre !

    Pour rappel, ici c'est un forum Excel VBA, pas VB ni VBScript ! …

  3. #3
    Invité
    Invité(e)
    Par défaut
    A mince ,

    Pourtant ici je cherche à faire du VB/VBscript

    Le code VB est indépendant du fichier ,

    Si vous pouviez déplacer

    Merci

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, effectivement ce n'était pas le bon forum, à tout hasard un xlsb qui fait cela en pj, à adapter éventuellement à ton contexte.
    Fichiers attachés Fichiers attachés

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Merci de votre proposition mais en faite cela est bien plus compliquer à gérer.

    Je m'explique :

    - 1 fois par semaine un robot me déposé un fichier zip à une adresse donnée http/https donnée. Ce fichier est un zip au départ.
    - une fois le fichier zip téléchargé , on extrait le fichier dedans qui est un fichier xls/xlsx.
    - le code VB que cherche à faire exécuter doit automatique :
    > ouvrir le fichier excel
    > éclater le fichier excel en autant de fichier csv qu'il y a d'onglets

    Par conséquent le clic bouton de l'utilisateur je doit m'en passé , le programme doit s’exécuter de nuit sur un serveur automatiquement.

    En utilisant la solution proposé c'est comme ci que le fichier que je recevait avait du VB inclu , hors non justement. Je dois faire mon code VB à partir d'un VB indépendamment de mon fichier.

    Je vais poster un code e vous me dirais ce que vous en pensez

    Merci d'avance

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonsoir

    Voici un bout de code que j'ai commencé à faire mais je bloque :

    Code vb : 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 eclateur_de_fichier()
     
    dim classeur1 ,  classeur2, classeur3, classeur4, classeur5 as Workbook
    dim feuille1 ,   feuille2 , feuille3 , feuille4 , feuille5 as worksheet
    dim chemin1, chemin2, chemin3 as string
    dim requete1 , requete2 , requete3 as string
     
    chemin1 = "D:\fichier_a_eclater.xls" ' nom du fichier de départ a éclater
     
    chemin2= "D:\rep_test\fichier_de_fin.csv" ' nom du fichier de destination ou ranger les feuilles
     
    Set classeur1 = CreateObject("Workbook") ' création du classeur1 avec un seul onglet
     
    xlApp.SheetsInNewWorkbook = 1 ' on crée un seul onglet
     
    'On créer l objet onglet dans le nouveau classeur créé
     
    Set feuille1 = classeur1.Worksheets(1)
     
    'On affecte un nom aux onglets
     
    feuille1.Name = "DONNEES_TRANSIT"
     
    end sub

    Merci de m'aiguiller
    Dernière modification par ProgElecT ; 03/12/2014 à 23h04.

Discussions similaires

  1. Comment exporter un fichier Excel vers CSV
    Par machipot dans le forum VBA Access
    Réponses: 0
    Dernier message: 09/06/2008, 22h09
  2. Réponses: 1
    Dernier message: 30/12/2007, 14h51
  3. Convertion fichier excel en CSV
    Par ceaser dans le forum Excel
    Réponses: 1
    Dernier message: 23/05/2007, 14h56
  4. Exporter fichier Excel en .csv
    Par pierre.coudert dans le forum Windows
    Réponses: 7
    Dernier message: 27/02/2007, 13h45
  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