Lors de la création d’un fichier CSV en utilisant les menus pour exporter une feuille de calcul, Arkadiusz a noté qu’il peut spécifier qu’il souhaite utiliser un point-virgule (;)

comme délimiteur de champ. Cependant, s’il enregistre un fichier CSV à l’aide d’une macro (FileFormat: = xlCSV ou xlCSVWindows), il ne peut pas spécifier de point-virgule comme délimiteur.

Cela fonctionne de cette façon par conception dans VBA. L’implémentation Excel des routines d’exportation pour VBA utilise toujours les paramètres régionaux de Windows pour déterminer comment les éléments d’un CSV doivent être séparés.

Plus précisément, la routine examine le champ Séparateur de liste pour le délimiteur. Cela signifie que vous pouvez, si vous le souhaitez, remplacer le séparateur par un point-virgule en modifiant le paramètre Séparateur de liste dans la configuration de vos paramètres régionaux.

Si vous ne souhaitez pas modifier les paramètres régionaux, vous pouvez à la place écrire votre propre macro qui produira le fichier de la manière que vous souhaitez.

Considérez, pendant un moment, la macro suivante, qui affichera le fichier:

Sub CreateFile()

FName = ActiveWorkbook.Name     If Right(FName, 4) = ".xls" Then         FName = Mid(FName, 1, Len(FName) - 4)

End If

Columns(1).Insert Shift:=xlToRight

For i = 1 To Range("B65000").End(xlUp).Row         TempString = ""

For j = 2 To Range("HA1").End(xlToLeft).Column             If j <> Range("HA1").End(xlToLeft).Column Then                 TempString = TempString & _                   Cells(i, j).Value & ";"

Else                 TempString = TempString & _                   Cells(i, j).Value             End If         Next         Cells(i, 1).Value = TempString     Next

Columns(1).Select     Selection.Copy     Workbooks.Add     Range("A1").Select     ActiveSheet.Paste     Application.CutCopyMode = False

ActiveWorkbook.SaveAs Filename:=FName & ".txt", _       FileFormat:=xlPrinter End Sub

Cette macro adopte une approche unique pour créer le fichier de sortie. Ce qu’il fait, c’est insérer une colonne à gauche de votre feuille de calcul, puis concatène toutes les données à droite de cette colonne dans la colonne nouvellement insérée A. Il ajoute un point-virgule entre chaque champ. Une fois que cela est fait, il récupère les informations qu’il a placées dans la colonne A et les écrit dans un nouveau classeur. Ce classeur est ensuite enregistré sur le disque en utilisant le format de fichier xlPrinter, ce qui signifie qu’il est sorti « tel quel » sans aucune modification.

Si vous préférez une approche plus directe, en écrivant les informations directement dans un fichier sans apporter de modifications à votre feuille de calcul, jetez un œil à la macro sur ce billet de blog:

https://web.archive.org/web/20060302021412/http:/www.dicks-blog.com:80/archives/2004/11/09/roll-your-own-csv/

La macro utilise des virgules entre chaque champ, mais elle peut être facilement modifiée afin d’utiliser des points-virgules à la place.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (3232) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Specifying_a_Delimiter_when_Saving_a_CSV_File_in_a_Macro [Spécification d’un délimiteur lors de l’enregistrement d’un fichier CSV dans une macro].