Enregistrer Excel en txt sans fermer le fichier Excel encours

Bonsoir

quand j'enregistre une feuille de mon classeur excel en fichier txt , je reçois un message comme quoi des données incompatibles, je clique oui et le fichier excel sur le quel je travaillait se ferme et seule s'affiche la feuille convertie en Txt.

y a t il un moyen par macro ou autre pour que

  • la feuille s'enregistre en txt (mais ne s'affiche pas )
  • Mon fichier excel reste toujours ouvert

Merci

Bonjour,

Une piste. La feuille visée (voir la variable NomFeuille) est copiée, ses formules sont supprimées et les valeurs sont inscrites par l'intermédiaire d'un tableau et séparées par des point-virgules :

Sub FichierTexte()

    Dim Fe As Worksheet
    Dim Plage As Range
    Dim Cel As Range
    Dim Tbl() As String
    Dim Ligne As String
    Dim Dossier As String
    Dim FichierTXT As String
    Dim NomFeuille As String
    Dim I As Long
    Dim J As Long

    Dossier = ThisWorkbook.Path & "\"
    FichierTXT = "Nom du fichier Texte.txt"

    NomFeuille = "Feuil1"

    'gèle l'affichage
    Application.ScreenUpdating = False

    'copie la feuille afin de préserver l'originale
    Worksheets(NomFeuille).Copy , Sheets(Sheets.Count)

    'utilise une variable
    Set Fe = Worksheets(Sheets.Count)

    'défini la plage sur toute la feuille
    Set Plage = DefPlage(Fe, 1, 1)

    'supprime les formules
    Plage.Value = Plage.Value

    'redéfini la plage sur les valeurs en "dur"
    Set Plage = DefPlage(Fe, 1, 1)

    'crée les lignes pour les enregistrements tabulés avec comme séparateur le ;
    For I = 1 To Plage.Rows.Count: For J = 1 To Plage.Columns.Count

            Ligne = Ligne & Plage(I, J).Value & ";"

        Next J

        'supprime le ; de fin
        Ligne = Left(Ligne, Len(Ligne) - 1)

        'stocke dans un tableau
        ReDim Preserve Tbl(1 To I)
        Tbl(I) = Ligne

        'pour la suivante
        Ligne = ""

    Next I

    'création du fichier .csv
    Open Dossier & FichierTXT For Output As #1

        For I = 1 To UBound(Tbl): Print #1, Tbl(I): Next I

    Close #1

    'suspension du message d'alerte
    Application.DisplayAlerts = False

    Fe.Delete 'suppression de la feuille
    ThisWorkbook.Save 'enregistre

    Application.DisplayAlerts = True

    'réactive la feuille
    Worksheets(NomFeuille).Activate

    'rétabli
    Application.ScreenUpdating = True

End Sub

Function DefPlage(Fe As Worksheet, L As Long, C As Long) As Range

    On Error GoTo Fin

    With Fe

        Set DefPlage = .Range(.Cells(L, C), _
                       .Cells(.Cells.Find("*", .[A1], -4123, , _
                       1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
                       2, 2).Column))

    End With

    Exit Function

Fin:

    Set DefPlage = Nothing

End Function
Rechercher des sujets similaires à "enregistrer txt fermer fichier encours"