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 :

Problème avec open() [Excel VBA]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 63
    Points : 44
    Points
    44
    Par défaut Problème avec open() [Excel VBA]
    Bonjour à tous !

    Dans mon application actuelle, je dois ouvrir dans Excel un nouveau document pour travailler dessus.

    Ce nouveau document est un fichier CSV, délimité par des ";"...

    Si je l'ouvre directement dans Excel, il n'y a pas de soucis, il me sépare bien les champs par colonnes... Mais si je l'ouvre à partir de mon petit code en VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim appexcel As New Application
    appexcel.Workbooks.Open fic_source
    avec fic_source, le fichier... Bon, y a pas de soucis là dessus... Mais sur la façon dont il me l'ouvre... A savoir qu'au lieu de prendre les ";" comme séparateurs, il me prends les "," !

    Même après ajout des options pour le forcer à ouvrir avec le bon délémiteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    , Format:=6, delimiter:=";"
    Le résultat est le même...

    Si vous avez des idées, je suis preneur, car ça me bloque assez !

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    Change son extension en .txt et ouvres-le en spécifiant séparateur "virgule"
    Je ne sais pas si j'ai essayé mais je crois...
    Tu dis

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 99
    Points : 110
    Points
    110
    Par défaut
    J'ai eu le même principe de soucis en enregistrant un fichier xls en csv. Cela viens du fait que VB utilise le principe anglais des fichiers csv c'est à dire utiliser "," comme séparateur.

    Je n'ai malheureusement pas de solution à t'apporter.

    Bon courage.

  4. #4
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    bon en effet... ça chie pas mal sur ce coup...

    alors, en le transformant en txt et en lui demandant de séparer avec le ";", ça passe bien...

    Bon, bin comme je dois conserver les extensions, je vais faire des temporaires renommé en txt... merci à vous...

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    Extrait de l'aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OldName = "ANCFICH.CSV": NewName = "ANCFICH.TXT"
    Name OldName As NewName	' Renomme le fichier.
    et tu récupères ANCFICH.CSV à la fin
    A+

  6. #6
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    rah la crise ! Il me disait que le fichier existait déjà !
    Moi, comme un con, j'interprète ça comme : "Le fichier CSV existe déjà, donc je peux pas le renommer" ce qui était un comble pour une fonction de renommage

    Mais j'avais oublié que j'avais cré le txt juste avant pour tester le délémiteur, et que je ne l'avais pas supprimé... éh... éh...éh

  7. #7
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Salut,
    Je sais pas si ça peux t'aider mais lors d'un développement d'une appli en Juillet, je devais ouvrir un fichier texte (c'est un fichier.txt mais le principe est le même je pense pour un fichier CSV)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Workbooks.OpenText Filename:=file_select, _
            Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array( _
            Array(0, 1), Array(23, 1), Array(33, 1), Array(39, 1), Array(40, 1), Array(44, 1), Array(47 _
            , 1), Array(53, 1), Array(77, 1)), TrailingMinusNumbers:=True
    file_select est le nom du fichier (sélectionné auparavant par une boite de dialogue spécifique (version 2003)).
    Alors si ton fichier a toujours la même forme tu peux coder en dur tes zones (Array) Moi le format du fichier était toujours identique.

    C'est pas des plus joli, mais ça marche. Il est vrai que si tu ouvres des fichiers de format différent ("," pas à la même place) là, cela ne marchera plus.

    Voilà ce que j'ai développé, si ça peut t'aider ...

    Igloobel
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  8. #8
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Igloobel
    Salut,
    Je sais pas si ça peux t'aider mais lors d'un développement d'une appli en Juillet, je devais ouvrir un fichier texte (c'est un fichier.txt mais le principe est le même je pense pour un fichier CSV)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Workbooks.OpenText Filename:=file_select, _
            Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array( _
            Array(0, 1), Array(23, 1), Array(33, 1), Array(39, 1), Array(40, 1), Array(44, 1), Array(47 _
            , 1), Array(53, 1), Array(77, 1)), TrailingMinusNumbers:=True
    file_select est le nom du fichier (sélectionné auparavant par une boite de dialogue spécifique (version 2003)).
    Alors si ton fichier a toujours la même forme tu peux coder en dur tes zones (Array) Moi le format du fichier était toujours identique.

    C'est pas des plus joli, mais ça marche. Il est vrai que si tu ouvres des fichiers de format différent ("," pas à la même place) là, cela ne marchera plus.

    Voilà ce que j'ai développé, si ça peut t'aider ...

    Igloobel
    Merci, et désolé de répondre si tard

    Ta solution est intéressante, mais j'ai confirmé la solution de facilité (modification du fichier CVS en TXT temporairement...), question de délai, c'est mieux comme ça

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

Discussions similaires

  1. Problème avec Find(), Excel Vba
    Par mmmxtina dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 28/05/2009, 11h57
  2. Problème avec un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/10/2007, 16h43
  3. problème avec open()
    Par aliassaf dans le forum Général Python
    Réponses: 1
    Dernier message: 26/06/2006, 00h27
  4. Problème avec opener.location.reload
    Par Joooooon dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/06/2006, 18h58
  5. Problème avec fichier Excel génère erreur
    Par Yanmeunier dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/02/2006, 11h53

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