Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ouverture de fichiers CSV non conforme

1 réponse
Avatar
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

1 réponse

Avatar
Brunos
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" a écrit dans le message de news:
%
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