Bonjour à toutes et à tous,

Je rencontre actuellement un point bloquant dans un fichier excel codé en vba.

Contexte : Le fichier .xlsm utilisé doit enregistrer un fichier créé par le programme en .csv avec comme séparateur le ";"

Solution première apportée : Local:=True
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ActiveWorkbook.SaveAs Filename:=nomFichier, FileFormat:=xlCSV, CreateBackup:=False, local:=True
Problème rencontré : Utilisateurs ayant déjà auparavent configuré leurs paramètres régionaux manuellement en anglais et ne pouvant pas modifier les paramètres régionaux des machines utilisées ...

Solution deuxième apportée : Modification des paramètres régionaux automatiquement à partir du vba
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
Option Explicit
Private Const LOCALE_SLIST = &HC 
Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Long
 
sub ChangementCSV ()
    SetLocaleInfo LOCALE_USER_DEFAULT, LOCALE_SLIST, ";"
    ActiveWorkbook.SaveAs Filename:=nomFichier, FileFormat:=xlCSV, CreateBackup:=False, local:=True
End Sub
Problème rencontré :
  • les modifications sont prises en compte sur le panneau de configuration / Région et langue / Paramètres supplémentaires / Séparateur de liste
  • MAIS aucun changement lorsque le programme est lancé lors de la création du csv. Il garde le dernier délimiteur entré manuellement par l'utilisateur dans le panneau de config'


Par contre, dès que changement manuel dans le panneau de configuration, pas de problème pour le programme qui le prend en compte.

J'ai pensé à un problème d'application des modifications mais honnêtement je ne sais plus quoi faire !

Merci beaucoup d'avance pour vos solutions/messages