Ouverture de fichiers CSV non conforme

Le
PAN GOT
Bonjour,



J'ai un problème d'ouverture de fichier qui ne me parait pas logique.

Pour ouvrir un fichier 'csv' manuellement avec Excel, pas de problème, le
format est proposé dans les filtres comme du txt. Mais quand je l'ouvre avec
une macro, le fichier n'est plus reconnu de la même façon et j'obtiens
différents résultats, mais aucun correspondant à une ouverture manuelle.

J'ai essayé les commandes

OPEN

OPEN avec format :=4

OPEN avec format :=6 et Delimiter :=";"



J'ai aussi essayé 'OPENTEXT' mais je n'ai pas trouvé les bons arguments.



Nota : J'ai supprimé le filtre dans mes lignes de code sur la boite de
dialogue, mais sans résultat.

Nous avons aussi fait des essais avec un collegue avec un de ces fichiers
csv qui n'avait aucun rapport avec mes fichiers. Même constat.



Voici les quelques lignes de code en question, si quelqu'un avait la bonté
de m'éclairer de ses lumières.

D'avance, un grand merci.





Sub ouverture()

'définition de la boite de dialogue

With Application.FileDialog(msoFileDialogOpen)

'definition du titre

.Title = "Selection du Fichier 'Chronopost'"

'option « choix multiple »

.AllowMultiSelect = True

'filtre sur les fichiers « csv »

.Filters.Add "Fichiers Chronopost", "*.csv", 1

'affichage de la boite

.Show



'ouverture pour chaque fichier sélectionné (max 2)

For lngCount = 1 To .SelectedItems.Count

Select Case lngCount

Case 1

' MsgBox .SelectedItems(lngCount)

Fichier1 = .SelectedItems(lngCount)

Application.Workbooks.Open Filename:=Fichier1, Format:=6,
Delimiter:=";"

Case 2

' MsgBox .SelectedItems(lngCount)

fichier2 = .SelectedItems(lngCount)

Application.Workbooks.Open fichier2

Case Else

MsgBox "Attention: seuls les 2 premiers fichiers sont
ouverts."

End Select

Next lngCount

End With

End sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Brunos
Le #5332581
Bonjour Pan got,
Je pense qu'il faut que tu ajoutes l'argument local après Open.
Workbooks.Open Filename:=MonFichier, local:=True
Ca marche pour moi en version Excel 2007.

La raison est dans l'aide :
- True enregistre les fichiers en fonction de la langue de Microsoft Excel
(y compris les paramètres du Panneau de configuration).
- False (valeur par défaut) enregistre les fichiers en fonction de la langue
deVBA (qui est généralement l'anglais des États-Unis...)

Or les fichiers csv sont séparés par des virgules aux US, et généralement
par des points virgules en France.

Brunos

"PAN GOT" %
Bonjour,



J'ai un problème d'ouverture de fichier qui ne me parait pas logique.

Pour ouvrir un fichier 'csv' manuellement avec Excel, pas de problème, le
format est proposé dans les filtres comme du txt. Mais quand je l'ouvre
avec une macro, le fichier n'est plus reconnu de la même façon et
j'obtiens différents résultats, mais aucun correspondant à une ouverture
manuelle.

J'ai essayé les commandes

OPEN

OPEN avec format :=4

OPEN avec format :=6 et Delimiter :=";"



J'ai aussi essayé 'OPENTEXT' mais je n'ai pas trouvé les bons arguments.



Nota : J'ai supprimé le filtre dans mes lignes de code sur la boite de
dialogue, mais sans résultat.

Nous avons aussi fait des essais avec un collegue avec un de ces fichiers
csv qui n'avait aucun rapport avec mes fichiers. Même constat.



Voici les quelques lignes de code en question, si quelqu'un avait la bonté
de m'éclairer de ses lumières.

D'avance, un grand merci.





Sub ouverture()

'définition de la boite de dialogue

With Application.FileDialog(msoFileDialogOpen)

'definition du titre

.Title = "Selection du Fichier 'Chronopost'"

'option « choix multiple »

.AllowMultiSelect = True

'filtre sur les fichiers « csv »

.Filters.Add "Fichiers Chronopost", "*.csv", 1

'affichage de la boite

.Show



'ouverture pour chaque fichier sélectionné (max 2)

For lngCount = 1 To .SelectedItems.Count

Select Case lngCount

Case 1

' MsgBox .SelectedItems(lngCount)

Fichier1 = .SelectedItems(lngCount)

Application.Workbooks.Open Filename:=Fichier1, Format:=6,
Delimiter:=";"

Case 2

' MsgBox .SelectedItems(lngCount)

fichier2 = .SelectedItems(lngCount)

Application.Workbooks.Open fichier2

Case Else

MsgBox "Attention: seuls les 2 premiers fichiers sont
ouverts."

End Select

Next lngCount

End With

End sub




Publicité
Poster une réponse
Anonyme