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 :

Ouverture automatique de fichiers CSV [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Chargée de missions
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargée de missions

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Par défaut Ouverture automatique de fichiers CSV
    Bonjour,

    Je développe actuellement une application Excel permettant d'ouvrir en deux clics, un fichier CSV.
    Par un UserForm, en deux clics, le fichier CSV est automatiquement converti (en gros, le traditionnel "DONNEES" > "Fichier Texte" > "Convertir") est codé dans ma macro et devient donc une action transparente pour l'utilisateur final.

    La macro fonctionne bien, mais j'ai une erreur 1004 ("Microsoft Excel ne peut convertir qu'une colonne à la fois") lorsque j'ouvre un CSV avec séparateur virgule et je n'arrive pas à la résoudre !! Malgré cette erreur, le fichier CSV avec séparateur virgule s'ouvre correctement... Etrange donc. Le "Application.DisplayAlerts = False" ne neutralise pas le message d'erreur.

    Voici le code qui me permet d'éxécuter l'ouverture du CSV
    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
    ' Bouton ouvrir fichier
    Private Sub Ouvrir_Click()
    Application.DisplayAlerts = False
    If (Me.Chemin = "Faux" Or Me.Chemin = "Chemin + nom + extension du fichier ouvert") Then   'Si aucun fichier n'est sélectionné alors
    MsgBox "Choisissez un fichier !"                                    'Message d'erreur précisant qu'il faut choisir un fichier
    Else                                                                'Si tout ok, on lance la conversion du fichier csv
    Workbooks.OpenText Filename:=Me.Chemin, Origin:=xlWindows, _
                    StartRow:=1, DataType:=xlDelimited, Semicolon:=True, Comma:=True
     
    ActiveCell.CurrentRegion.TextToColumns Comma:=True
     
    Ouverture.Hide
    Workbooks("Outil_ouverture_V2.xlsm").Save
    'Workbooks("Outil_ouverture_V2.xlsm").Close
    End If
    End Sub
    Le problème survient à la ligne "ActiveCell.CurrentRegion.TextToColumns Comma:=True"

    Pour information : le "Me.Chemin" me permet d'obtenir l'adresse complète du fichier à importer (exemple : "D:\User\Doc.csv") et est inscrit dans un TextBox de l'userform.
    La macro bloque lorsqu'il n'y a aucun fichier sélectionné (donc, quand le texte "par défaut" est présent) et lorsque on annule la sélection du fichier (dans la fenêtre "ouvrir", en cliquant sur "annuler").

    J'espère que ces explications sont assez claires pour vous...

    Encore merci pour votre aide future !

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Pour le fichier, utilise la fonction Dir() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Dir(Me.Chemin) <> "" Then
    Pour le reste, étant sur un Smartphone, je ne peux pas t'aider pour l'instant !

  3. #3
    Membre confirmé
    Femme Profil pro
    Chargée de missions
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargée de missions

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Par défaut
    Bonjour,

    Merci pour ta réponse. Je vais tester ça dans la soirée !

    Malgré tout, j'ai continué à me creuser la tête et en ajoutant "On error Resume Next" juste avant la ligne qui bloque et ça semble fonctionner maintenant ! Alors je sais pas si ce sera stable sur la durée, mais pour le moment ça tient.

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    en utilisant la propriété currentregion, tu récuppères la plage rectangulaire des données qui contient ta cellule active.
    Ce qui pourrait expliquer que tu te retrouves avec plusieurs colonnes au lieu d'une seule

    en isolant sur une seule colonne, ça raconte quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.CurrentRegion.Columns(1).TextToColumns Comma:=True

  5. #5
    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.

    Citation Envoyé par Pix_elle Voir le message
    en ajoutant "On error Resume Next"
    Au risque de masquer d'autres problèmes et de perdre des données …

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  6. #6
    Membre confirmé
    Femme Profil pro
    Chargée de missions
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargée de missions

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    en utilisant la propriété currentregion, tu récuppères la plage rectangulaire des données qui contient ta cellule active.
    Ce qui pourrait expliquer que tu te retrouves avec plusieurs colonnes au lieu d'une seule

    en isolant sur une seule colonne, ça raconte quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.CurrentRegion.Columns(1).TextToColumns Comma:=True
    Et bien écoutes, ça semble fonctionner ! Je ferai faire des tests aux collègues lundi pour voir si ils me remontent un quelconque problème mais en tout cas, tu me sauves de la panade ! Merci beaucoup.


    Citation Envoyé par Marc-L Voir le message
    Bonjour.

    Au risque de masquer d'autres problèmes et de perdre des données …

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …
    Oui, ça me semblait bien que ça pouvait poser problème. Merci en tout cas

  7. #7
    Membre confirmé
    Femme Profil pro
    Chargée de missions
    Inscrit en
    Janvier 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargée de missions

    Informations forums :
    Inscription : Janvier 2016
    Messages : 73
    Par défaut
    Bonjour à tous,

    Voici un petit retour : La macro fonctionne hyper bien ! Mais mes collègues m'ont fait la remarque que lors de l'export, tous les accents sautaient et laissaient leur place à des caractères bizarres.

    Aussi, je me suis rendue compte que j'avais omis de préciser dans mon code que je voulais l'import en encodage UTF-8. Comment et où dois-je placer cet attribut ?

    Merci de votre aide !
    Bonne soirée !

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 27/10/2008, 10h15
  2. Réponses: 4
    Dernier message: 13/02/2008, 09h34
  3. macro à l'ouverture d'un fichier ".csv"
    Par Tibaldus dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/09/2007, 12h36
  4. Ouverture d'un fichiers csv
    Par coolest dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/05/2007, 13h32
  5. [Macro] ouverture d'un fichier csv par macro différent du double-clic
    Par Caro-Line dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/04/2007, 17h36

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