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 :

[E-00] format CSV


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut [E-00] format CSV
    Bonjour!

    je vais continuer avec mes questions d'amateur...désolé.

    Ma situation est la suivante: j'ai un programme qui sauve des données dans un fichier CSV. Jusqu'à maintenant, j'utilisait un ";" comme séparateur pour pouvoir l'ouvrir avec excel.

    Jusque la, tout roule.

    Maintenant j'ai fait une petite macro - domaine dans lequel je débute- qui ouvre le csv, copie son contenu et le mets dans un xsl. Pour pouvoir faire ca, étant donné ma version vetuste d'office et, d'après ce que j'ai pu lire sur le net, une problématique de "régionalité", il faut que le séparateur soit une virgule à présent. Je modifie mon csv et ca marche, mais, résultat, je peux plus ouvrir "benoitement" mon csv en double cliquant dessus.

    Est-ce que quelqu'un connaitrait une solution à tout ca? (en tenant compte du fait que la macro doit pas etre dépendante de problèmes de régions, etc. (doit pouvoir etre executée aussi bien aux US qu'en Europe...))

    Merci d'avance

  2. #2
    Membre expérimenté
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Par défaut
    bonjour

    pour ouvrir ton fichier csv utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks.Open Filename:= _
            Chemin & "\" & Fichier_à_Analyser, local:=True
    consulte l'aide VBA sur Open, méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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).
    à plus

  3. #3
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut
    Hello,

    merci pour ta réponse. D'après c'que j'ai vu, Local:=True n'existe qu'à partir de la version 02 et comme précisé dans l'intitulé de mon post, j'ai la version 2000...

    mes infos sont peut etre mauvaises, je vais revérifier.

    [Edit] C'est testé et effectivement Local n'est pas accepté

  4. #4
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut
    J'ai une fois de plus pas été suffisemment explicite ou alors il n'y a pas de solution à mon problème?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 52
    Par défaut
    bonjour,

    je ne connais pas bien excel 2000 et je ne suit pas expert dans les macros mais personnellement j'ai résolu ce problème en passant par un import de donnée externe

    ci joint un bout de code que j'utilisait pour faire un import de fichier .csv dont le séparateur était un |

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set feuille = ActiveWorkbook.Sheets(1)
     
    feuille.Activate
     
        With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT; 'chemin du fichier à importer " _
            , Destination:=Range("A1"))
            .TextFileOtherDelimiter = ","
            .Refresh BackgroundQuery:=False
        End With
    End Sub
    j'espère que cela pourra t'aider

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Par défaut
    QueryTables est parfois capricieux ceci dit, j'ai parfois eu de mauvaises surprises avec. Eventuellement tu peux l'ouvrir "brut" en colonne A et le convertir après coup, une fois le séparateur identifié.

    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
    33
     
    Dim monFichier As String, varLigne As String
     
    monFichier = "D:\files\sample.csv"
     
    ActiveSheet.Cells.Select
    Selection.NumberFormat = "@"
     
    'Etape 1 : on met le csv dans la feuille excel
    i = 1
    Open monFichier For Input As #1
    Do While Not EOF(1)
        Line Input #1, varLigne
        ActiveSheet.Cells(i, 1) = varLigne
        i = i + 1
    Loop
    Close #1
     
    'Etape 2, on identifie le séparateur (virgule ou point-virgule ?) et on scinde en fonction
    If InStr(ActiveSheet.Cells(1, 1), ";") <> 0 Then
        ActiveSheet.Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=True, Comma:=False, Space:=False, Other:=False
    ElseIf InStr(ActiveSheet.Cells(1, 1), ",") <> 0 Then
        ActiveSheet.Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=True, Space:=False, Other:=False
    Else
        MsgBox "Erreur : le séparateur n'a pas pu être identifié."
        End
    End If

  7. #7
    Membre très actif Avatar de TheCaribouX
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 255
    Par défaut
    Merci deuxmains pour ta réponse! (qui plus est quand on voit que c'est ton premier message du forum!)

    j'ai essayé ton bout de code et tout comme toi je suis loin d'etre un as des macros, et j'ai une erreur avec la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Refresh BackgroundQuery:=False
    Saurais-tu m'expliquer ce que c'est sensé faire?

    Nouveau message apparu pendant que j'écrivais le mien
    Neupon merci également! Je me demandais efffectivement si y'avait moyen de faire du traitement "brut". Juste une petite quesion concernant ton code, le "OR" n'existe pas en VBA ou alors il y a une différence de traitement entre les deux cas "virgule" et "point-virgule" qui m'a echappé?

    Je vais tenter tout ca tres bientot! (la c'est un long week-end dont je compte bien profiter )

    En vous souhaitant une bonne soirée et un excellent week end!
    encore

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

Discussions similaires

  1. [phpMyAdmin] Exporter une requête au format CSV
    Par nicoaix dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 07/02/2006, 18h05
  2. Exportation d'une bd mysql vers un format csv
    Par derric8016 dans le forum Outils
    Réponses: 5
    Dernier message: 13/01/2006, 21h58
  3. [CSV] Exploitation du format csv
    Par flopad dans le forum Langage
    Réponses: 17
    Dernier message: 08/11/2005, 16h36
  4. query format csv
    Par tiopan dans le forum Access
    Réponses: 3
    Dernier message: 29/09/2005, 14h27
  5. [D6][Excel] Comment enregistrer en format csv ?
    Par ShinGaruda dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 04/05/2005, 19h59

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