XL 2016 VBA: Conversion Excel vers CSV (Séparateur : point-virgule)

MisterT

XLDnaute Occasionnel
Bonjour à vous ! Étant peu connaissant en VBA, j'ai besoin de votre aide. J'ai fait beaucoup de recherches pour tenter d'y arriver par moi-même mais en vain.

Ma VBA montre bien le fichier qui apparait qui a bien respecté les commandes VBA avec les datas dans les bonnes cellules et avec la fenêtre de sauvegarde en premier plan où il est bien inscrit CSV (Séparateur : point-virgule) (*.csv) pour la sauvegarde. Je clique enregistrer. . Je ferme ce fichier puis le ré-ouvre à partir de son emplacement avec Excel en CSV et tout est bien disposé, mais quoique j'ai essayé, le séparateur demeure toujours la virgule.

Dans les paramètres régionaux, "séparateur de liste" est bel et bien avec un point-virgule. J'ai essayé avec Local:=True pour respecter les paramètres et cela n'est pas respecté. J'ai lu à quelque part que c'est le setting du langage VBA en anglais qui prévaut et qui force le séparateur à virgule, ne tenant donc pas compte de la commande Local:=True.

Est-ce qu'il y aurait une façon de forcer la commande à utiliser les paramètres régionaux ?

Comme je souhaite que tout cela soit automatisé, j'ai pensé aussi à la possibilité suivante: Faire en sorte que dès que la sauvegarde et fermeture du fichier se fasse automatiquement par la VBA, que cette même VBA fasse ré-ouvrir instantanéement le fichier CSV à partir du même nom et emplacement sauvegardé et qui sera donc avec des virgules, puis ensuite, que la VBA fasse la fonction de Remplacer partout les virgules par des points-virgules.

J'ai essayé avec l'enregistreur de macros mais sans résultat, je manque beaucoup trop de connaissances VBA.

Voici donc le code de sauvegarde et le fichier est joint...
VB:
fname = Application.GetSaveAsFilename(InitialFileName:=Range("A2").Value & "_" & Range("G4").Value & Range("H4").Value & "_" & Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2), FileFilter:="CSV (Séparateur : point-virgule) (*.csv), *.csv", Title:="Save As")
    
    ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlCSV
Merci beaucoup à ceux qui prendront de leur expertise et précieux temps pour m'aider !
MisterT
 

Pièces jointes

  • TEST_CSV_Fr.xlsm
    40.1 KB · Affichages: 24

MisterT

XLDnaute Occasionnel
Bonsoir job25, le forum,

Effectivement, il manquait le .Sheets(1), merci beaucoup et très bon sens de l'observation. Le code est donc comme suit avec seulement la fin de mon code et le tient qui m'impressionne:
VB:
fname = Application.GetSaveAsFilename(InitialFileName:=Range("A2").Value & "_" & Range("G4").Value & Range("H4").Value & "_" & Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2), FileFilter:="CSV (Séparateur : point-virgule) (*.csv), *.csv", Title:="Save As")
    
    ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlCSV, CreateBackup:=False, Local:=True
    ActiveWorkbook.Close savechanges:=False
    
Dim i&, x$, j%
Application.ScreenUpdating = False
'ThisWorkbook.FollowHyperlink fname '(essais)
'With ActiveWorkbook.Sheets(1)  '(essais)
With Workbooks.Open(fname).Sheets(1)
    For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
        x = .Cells(i, 1)
        For j = Len(x) To 1 Step -1
            If Mid(x, j, 1) <> ";" Then Exit For
        Next j
        .Cells(i, 1) = Left(x, j) 'enlève les points-virgules à droite du texte
    Next i
    .Parent.Close True 'enregistre et ferme le fichier CSV
End With
End Sub

Dans mon contexte, ça ne donne pas le résultat souhaité comme tu peux voir sur les images suivantes avec résultats en ordre chronologique du code qui opère sans bloquer. Il y a donc des ajustements que je ne saurais faire. Le fichier est joint...
1) Ouverture du fichier: "With Workbooks.Open(fname).Sheets(1)":
1609982221800.png

2) Résultat de l'ouverture du CSV
1609982297691.png

3) Résultat en version txt...
1609982340749.png

Je ne comprends pas trop ce qui se passe. Les boucles effacent des point-virgules mais il en reste à la fermeture du fichier. C'est ce que j'ai vu en pas à pas.

Est-ce possible pour toi de voir avec le fichier joint ce qui se passe de ton côté ?
Merci beaucoup pour le suivi, j'apprécie !
MisterT
 

Pièces jointes

  • TEST_CSV_Fr_6janv16h00_Job75.xlsm
    43.9 KB · Affichages: 3

MisterT

XLDnaute Occasionnel
Merci beaucoup job25, sylvanu, chris et Staple 1600 pour votre aide, cela est très apprécié !!!

Je vais m'amuser à voir avec le code de job25 pour voir si j'arrive à faire des ajustements adaptés à mon contexte.

Bonne journée,
MisterT
 

Discussions similaires

Statistiques des forums

Discussions
312 080
Messages
2 085 152
Membres
102 794
dernier inscrit
espinata