Sub test()
Dim plage As Range, EXT As String, chemin As String
Set plage = Range("A1:C10")' preciser la plage ici (activesheet.usedrange pour tout la partie utilisée)
chemin = "C:\Users\" & Environ("username") & "\Desktop\" & Replace(plage.Address, ":", "-")
EXT = ".csv"
RangeToFichierTexT plage , ";", chemin, EXT'si pas de chemin précisé c'est le desktop de l'user par défaut
'RangeToFichierTexT plage , separateur de colonne , chemin, EXTENTION
End Sub
Function RangeToFichierTexT(Rng, Optional separateur As String = ";", Optional chemin As String = "", Optional EXT As String = ".csv")
Dim T, clearall, fichier As String
If chemin = "" Then chemin = "C:\Users\" & Environ("username") & "\Desktop\" & Replace(Rng.Address, ":", "-")
With CreateObject("htmlfile")
clearall = .parentwindow.clipboardData.setData("Text", "") 'on vide le clipboard au cas ou il y aurait quelque chose
Rng.Copy 'on copy la plage tout simplement
'on recupere le texte de la plage dans le cliboard on fait un replace vbtab par le separateur en parametre injecté dans la fonction";" par defaut
T = Replace(Replace(.parentwindow.clipboardData.GetData("TEXT"), vbTab, separateur), vbCrLf, separateur & vbCrLf): End With
Application.CutCopyMode = False 'on relache la plage copiée
'on créé le ficher avec open for....
fichier = chemin & EXT
x = FreeFile
Open fichier For Output As #x
Print #x, T
Close #x
End Function