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 :

40 Feuilles dans 1 fichier Excel = Autant de Fichier .CSV


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2006
    Messages : 45
    Par défaut 40 Feuilles dans 1 fichier Excel = Autant de Fichier .CSV
    Bonjour à tous

    Situation....
    J'ai un fichier de nom: xxxx.xls avec dedans 40 feuillets de nom tous différents.
    Chaque feuillet a une structure différente (Nombre de ligne, nombre de colonnes), avec des données différentes. La première ligne correspond au type de données, a partir de la 2eme ligne ce sont les données.

    Ce que je souhaite faire...
    Faire un script qui me permet d'enregistrer un fichier .CSV avec le nom du feuillet, avec en séparateur de champs "," et en séparateur de texte " " " , et répéter cette action autant de fois qu'il y a de feuillet (pour mon cas 40).

    L'utilisation finale...
    C'est 40 fichiers aaaa.CSV, bbbb.CSV, etc.... vont me permettre d'importer directement dans ma BDD (utilisation de LOAD DATA INFILE) les données, en sachant que Chaque nom de table = Nom du fichier.CSV

    Le gros soucis .... C'est que j'ai aucune connaissance en VB mais plus en C++ :s

    Merci de votre aide.
    Nissartis.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour enregistrer les feuilles d'un classeur en csv (comme en txt) chaque feuille doit être sélectionnée avant enregistrement.
    Le problème avec la version française d'Excel, est qu'un csv aura le point-virgule comme séparateur de données
    Le txt aurait la tabulation. Faudra remplacer l'un ou l'autre par des , dans le cvs ou le txt.
    Pour répéter un code pour chaque feuille du classeur, tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim LaFeuille as worksheet, Chemin as string
    Chemin = "D:\Ton répertoire\"
    For each LaFeuille in ActiveWorkbook.worksheets
         LaFeuille.select
         activeWorkbook.saveas Filename:=Chemin & Activesheet.name & ".csv", _
         FileFormat:=xlCSV, CreateBackup:=False
    Next
    Possible que sur la version 2007 d'office, on puisse sélectionner le séparateur. Regarde à Saveas dans l'aide en ligne si tu as cette version.
    A+

    Edit
    Avant ce code, ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.displayAlerts = False
    et après le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.displayAlerts = True
    Evite les messages intempestifs "Vous savez que vous ne pouvez n'enregistrer qu'une page à la fois OUI/NON YES/NO etc... etc..."

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2006
    Messages : 45
    Par défaut
    Je te remercie je vais tester le plus vite possible Je reviendrais pour marquer le Résolu ou pour encore vous embeter

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2006
    Messages : 45
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Pour enregistrer les feuilles d'un classeur en csv (comme en txt) chaque feuille doit être sélectionnée avant enregistrement.
    Le problème avec la version française d'Excel, est qu'un csv aura le point-virgule comme séparateur de données
    Le txt aurait la tabulation. Faudra remplacer l'un ou l'autre par des , dans le cvs ou le txt.
    Ou en plus simple, je laisse les TAB et les ";" dans les CSV et je remplace ma commande Import de fichier ?

    de ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LOAD DATA INFILE 'tttt.csv' INTO TABLE tttt FIELDS TERMINATED BY ',' ENCLOSED BY ' " ' LINES TERMINATED BY '\n';
    je passe a ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LOAD DATA INFILE 'tttt.csv' INTO TABLE tttt FIELDS TERMINATED BY ';' ENCLOSED BY '\t' LINES TERMINATED BY '\n';

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Effectivement. On peut également faire ça dans Excel en important les csv en tant que fichiers texte (VBA97-2003) car je crois qu'on n'a pas besoin de ça dans la version 2007.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2006
    Messages : 45
    Par défaut
    C'est parfait !!! Bon il n'y a plus les "..." entre les données mais je vais m'arranger.

    Par contre il y aurait un moyen d'executer le script autrement a par faire un bouton sur une des feuilles et le lié a une maccro ? (Désolé je suis débutant )
    Comme du stile une commande Dos où on mettrait en premier parametre le VBA et en 2eme le nom du fichier XLS

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tout dépend le moment auquel tu veux lancer la macro.
    Si c'est à l'ouverture du classeur, tu peux placer un appel à ta macro dans l'événement Open de "Thisworkbook"
    Deux clics sur Thisworkbook ouvre la fenêtre de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
         TaMacro 'cette simple ligne exécute "TaMacro"
    End Sub
    Si c'est à la fermeture du fichier, c'est dans l'événement "BeforeClose"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
    End Sub
    Tu as une liste des événements disponibles pour ThisWorkbook en haut à droite de sa fenêtre de code

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

Discussions similaires

  1. [XL-2010] vbaexcel recherche et envoye des données de fichier excelà un autre fichier excel
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/08/2011, 14h42
  2. inserer des nouvelles feuilles dans un classeur excel
    Par chamus dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/12/2006, 16h22
  3. [VBA-E]Existence d'une feuille dans un classeur EXCEL
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/04/2006, 15h58
  4. VB6 : création de feuilles dans un classeur Excel
    Par getea85 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/11/2005, 16h37
  5. Changer de feuille dans un classeur Excel
    Par couiss dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 09/05/2005, 10h05

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