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 :

Probleme lors d'une conversion d'un fichier .xls vers .cvs [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Par défaut Probleme lors d'une conversion d'un fichier .xls vers .cvs
    Bonjour tout le monde,

    Je vais essayer de vous exposer mon problème.

    Dans un fichier Source Excel (stocker sur le réseau de l'Entreprise )j'exécute une macro qui a pour but de traité les données, puis de les mettre en forme et enfin de les enregistrer au format csv.

    Il faut savoir que ce fichier peut générer entre 20 et 50 fichiers csv qui sont mis sur le réseau.

    Donc dans "Feuil1" j'ai mes données. Je sélectionne une partie de ces données que j'importe dans une "Feuil2". Dans la "Feuil2" je traite ces dernières et une fois fini j'enregistre cette "Feuil2" au format csv avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveAs ("réseau/nomduclasseur.csv"), xlCSV
    Mon premier problème :

    - Lorsque j'ouvre le fichier csv nouvellement créer j'ai comme séparateur des virgules alors que je souhaite avoir des points virgules. Pourtant je suis aller dans panneau de configuration, options régionales et linguistiques. Et j'ai bien tout en français. J'ai même mis le séparateur de décimal en "." et le séparateur de liste ";". Car j'ai lu que cela pouvait être une source de problème.

    Mon deuxième problème :

    S'illustrera plus facilement avec un exemple. Quand j'ouvre mon fichier csv avec un bloc note j'obtiens le résultat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TOTO,,,,,,,
    TITI,,,,MEME,,,
    etc....
    Pour rappel je voudrais avoir des ";" à la place de ",". Ensuite je cherche à supprimer les virgules en rouge dans mon exemple. D'après ce que j'ai compris c'est que Excel 2003 traite les données par bloc de 16 lignes par 16 colonnes. Et le nombre de "," en trop à la fin de chaque ligne est du au fait qu'une donnée de cellule se trouve en colonne "H" dans le bloc 16x16.

    j'ai essayé différentes solutions qui consistent :

    - Effectivement, encadrer les données (un encadrement globlal de la zone
    suffit) je n'arrive pas à mettre en pratique cette solution, ne la comprenant pas
    - Appliquer un Format/Cellule/Nombre quelconque à l'ensemble de la plage
    vide
    - Remplir les cellules vides par un espace

    Pour selectionner d'un coup les cellules vides :
    - Se mettre sur une cellule
    - Touche F5
    - cliquer Cellules
    - Cocher "Cellules vides"
    - OK

    Si vous pouviez m'éclairer s'il vous plaît, car je coule un peu sur ce problème.
    Je n'ai peut être pas bien chercher sur le forum, mais je n'ai pas trouvé de solution. Par contre n'ayant pas le net, je ne pourrais répondre quand HO.

    Merci pour votre patience,

    cordialement,

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    j'ai comme séparateur des virgules alors que je souhaite avoir des points virgules.
    tu devrais peut-être mettre l'argument Local de SaveAs à True ?

    Local Argument de type Variant facultatif. La valeur True enregistre les fichiers en fonction de la langue de Microsoft Excel (y compris les paramètres du Panneau de configuration). La valeur False (valeur par défaut) enregistre les fichiers en fonction de la langue de Visual Basic pour Applications (VBA) (qui est généralement l'anglais des États-Unis, sauf si le projet VBA où Workbooks.Open est exécuté est un ancien projet VBA XL5/95 de niveau international).

    Exemple
    cordialement,

    Didier

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Par défaut
    Bonjour,

    Merci, effectivement cela marche beaucoup mieux maintenant. Mon problème de type de séparateur est résolu maintenant. Par contre auriez vous une idée quant à la suppression des ";" en trop?

    Cordialement,

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Par contre auriez vous une idée quant à la suppression des ";" en trop?
    Non car problème impossible à répliquer, OK chez moi..

    Donnes un exemple de code (entre balises) et de structure de tes données ?

    Didier

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Par défaut
    D'après ce que j'ai compris ce problème serait inhérent à Excel 2003. Lorsque le fichier au format csv est crée j'ai bien les données du type (en l'ouvrant ) avec excel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TOTO
    TITI         MEME
    ....
    mais quand je l'ouvre avec un éditeur de texte j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TOTO;;;;;;;
    TITI;;;MEME;;;
    Pour l'instant j'ai essayé une méthode qui consiste à supprimer les cellules vide à la suite des données, Avec le code suivant:

    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
    If InfoDO = "Nord" Then
        Worksheets("Feuil2").Copy
            ActiveWorkbook.SaveAs ("reseau" _
            & NomFichier & "_2-12_maxi_" & DateDujour & ".csv"), xlCSV, local:=True
        NomFeuil = NomFichier & "_2-12_maxi_" & DateDujour
        
        NbLigneCree = Worksheets(NomFeuil).Range("A1").CurrentRegion.Rows.Count
        NbLigneCree = NbLigneCree + 1
        Worksheets(NomFeuil).Rows(NbLigneCree & ":" & 65536).Select
        Selection.Delete
        Worksheets(NomFeuil).Range("B1:IV2").Select
    '    Selection.SpecialCells(xlCellTypeBlanks).Select
        Selection.Delete Shift:=xlToLeft
        Worksheets(NomFeuil).Range("G3:IV3").Select
        'Selection.SpecialCells(xlCellTypeBlanks).Select
        Selection.Delete Shift:=xlToLeft
        Worksheets(NomFeuil).Range("B4:IV4").Select
    '    Selection.SpecialCells(xlCellTypeBlanks).Select
        Selection.Delete Shift:=xlToLeft
        ActiveWorkbook.Close
    End If
    Application.DisplayAlerts = True
    Mais sans effet, car le fichier (.CSV) créé sera utilisé par d'autre service et utilisé au format (.txt). La ligne en bleu dans le code permet de supprimer les ";" en fin de feuille =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TOTO;;;;;;;
    TITI;;;;MEME;;;
    ...
    TATA;;;;
    ;;;;;;;;;;;
    ;;;;;;;;;;;
    ;;;;;;;;;;; ' ces ; sont effacés grâce au code en bleu
    Mais le reste du code ne marche pas pour les données précédentes.
    Je ne vois pas ce qui peut clocher.

    Cordialement,

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Ok ton souci est qu'il y a des cellules vides.

    Donc, il est normal que ton export en tienne compte, sinon si tu réimporte sous forme de tableau, tu auras des décalages de données

    Le plus simple serait de dire ce que tu veux obtenir plutôt que ce qui ne va pas

    Est ce que tu veux une suite de données séparées par des virgules qui ne tiennent pas compte de blancs ? et cette suite serait construite de droite à gauche, du haut en bas ect....

    cordialement,

    Didier

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/08/2011, 14h07
  2. Probleme lors d'une lecture de fichier XML VB2010
    Par nimbus629 dans le forum VB.NET
    Réponses: 6
    Dernier message: 17/06/2011, 12h51
  3. Réponses: 4
    Dernier message: 30/07/2009, 22h46
  4. Réponses: 13
    Dernier message: 10/05/2004, 16h49
  5. problem lors de l'ecriture d'un fichier
    Par gemai dans le forum C
    Réponses: 20
    Dernier message: 29/08/2003, 15h01

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