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
Le problème survient à la ligne "ActiveCell.CurrentRegion.TextToColumns Comma:=True"
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
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 !
Partager