'---------------------- ' Conversion ansi-ascii '---------------------- Private Declare Function ChartoOem Lib "user32.dll" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long Private Declare Sub ExitProcess Lib "Kernel32" (ByVal uExitCode As Long) Declare Function GetStdHandle Lib "Kernel32" (ByVal nStdHandle As Long) As Long Declare Function WriteFile Lib "Kernel32" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long ' Procédure principale '--------------------- Sub Main() ' Déclaration variables '---------------------- Dim f_syst As Object Dim f_obj As Object Dim ret As Long Dim res As Integer Dim guill As Variant Dim muet As Boolean Dim ok As Boolean Dim f_nom As String Dim txti As String Dim txto As String Dim msg As String Dim é As String Const lecture = 1, écriture = 8, ascii = 0, ansi = -2, créa = True é = Chr(130) ' Test présence commutateur V '---------------------------- f_nom = RTrim(LTrim(Command())) If Mid(f_nom, 1, 2) = "/V" Or Mid(f_nom, 1, 2) = "/v" Then muet = False f_nom = LTrim(Mid(f_nom, 3)) Else muet = True End If ' Supression guillemets éventuels '-------------------------------- guill = InStr(f_nom, """") Do While guill <> 0 f_nom = Mid(f_nom, 1, guill - 1) + Mid(f_nom, guill + 1) guill = InStr(f_nom, """") Loop ' Instanciation objet file system '-------------------------------- Set f_syst = CreateObject("Scripting.FileSystemObject") ' Recherche fichier '------------------ On Error Resume Next Set f_obj = f_syst.Opentextfile(f_nom, lecture, ansi) If Err.Number = 0 Then ok = True Else ok = False End If ' Appel fonction conversion si trouvé '------------------------------------ If Err.Number = 0 Then txti = f_obj.readall f_obj.Close Set f_obj = f_syst.GetFile(f_nom) txto = String(Len(txti), Chr(0)) ret = ChartoOem(txti, txto) f_obj.Delete Set f_obj = f_syst.Opentextfile(f_nom, écriture, créa, ascii) f_obj.write txto f_obj.Close msg = "Le fichier " & f_nom & vbCrLf & "a " & é & "t" & é & " converti en ASCII" & vbCrLf & vbCrLf Else msg = "Le fichier " & f_nom & vbCrLf & "n'a pas " & é & "t" & é & " trouv" & é & vbCrLf & vbCrLf End If ' Épilogue '--------- Set f_obj = Nothing Set f_syst = Nothing If Not muet Then affich (msg) If Not ok Then ExitProcess 1 End Sub ' Procédure affichage messages '----------------------------- Sub affich(txt As String) ' Déclaration variables '---------------------- Dim nb_car As Long Dim nb_dep As Long Dim aff As Long Const STD_OUTPUT_HANDLE = -11& ' Affichage '---------- aff = WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), txt, Len(txt), nb_car, nb_dep) End Sub