Enregistrement d'un fichier xlsx en csv

Bonjour

j'ai chercher le moyen de mettre mais donnée de mon tableur en csv en appuyant sur un bouton sachant que pour le moment mon tableur fais 3003 ligne pour AT colonne

j'avais trouver ce sujet la https://forum.excel-pratique.com/excel/enregistrer-un-fichier-en-csv-t93096.html qui normalement devrait fonctionner mais j'ai des message d'erreur

merci d'avance pour votre réponse

Quels messages d'erreur ?

Peux-tu nous mettre ton fichier de façon anonymisée ?

As-tu essayé un enregistrement direct en csv sans passer par macro ?

bonjour

mon message d'erreur et le suivant (je n'ai jamais toucher a un code vba c'est juste un copier/coller ) :

erreur de compilation:

Sub ou Function non définie

Sub enregistrement()

    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 TEMPLATEFB01 As String
    Dim I As Long
    Dim J As Long
    Const MdP As String = "Anonyme"

    Dossier = "C:\test\"

    With Worksheets("Feuil1")

        TEMPLATEFB01 = Dossier & _
                       Replace(.Range("B3").Value, "/", "-") & "_" & _
                       .Range("B4").Value & "_" & _
                       Format(Now, "dd-mm-yyyy...hh-mm-ss") & ".csv"

    End With

    If MsgBox("Voulez-vous créer le fichier '" & TEMPLATEFB01 & "' ?", vbQuestion + vbYesNo, "Fichier .CSV") = vbNo Then Exit Sub

    'ôte la protection si le mdp est juste sinon, message et fin !
   Worksheets("TEMPLATE_FB01").Unprotect MdP

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

    'copie la feuille afin de préserver l'originale
   Worksheets("TEMPLATE_FB01").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 TEMPLATEFB01 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("A_remplir").Activate

    'rétabli
   Application.ScreenUpdating = True

    'vérifie que le fichier est bien sur le disque sinon, message d'erreur
   If Dir(TEMPLATEFB01) <> "" Then

        'message de confirmation
       MsgBox "Le fichier '" & TEMPLATEFB01 & "' a bien été créé et enregistré dans le dossier '" & Dossier & "' !", vbInformation

    Else

        MsgBox "Une erreur c'est produite durant la création du fichier .csv !", vbExclamation

    End If

    'protège à nouveau
   Worksheets("TEMPLATE_FB01").Protect MdP

End Sub

merci encore d'avoir répondu a mon problème

Duck_ArMyx a écrit :

bonjour

mon message d'erreur et le suivant (je n'ai jamais toucher a un code vba c'est juste un copier/coller ) :

erreur de compilation:

Sub ou Function non définie

et donc tu n'as pas tout recopier ... retrouve l'auteur pour savoir ce qu'il y a dans DefPlage

on ne pourra pas t'aider ! et puis c'est bien compliqué pour enregistrer en .csv !

d'accord merci quand meme je vers lui demander bonne journée en revoir

Voici un exemple de code bien plus simple pour enregistrer en pdf

Sub editerpdf()
Dim nompdf As String
Dim dossier As String

    dossier = "C:\Users\Michel\Downloads"
    nompdf = dossier & "\" & ActiveSheet.Name & " " & Format([I1], "yyyy-mm-dd")
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nompdf & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

End Sub

tu personnalises dossier et nompdf comme tu veux ...

Rechercher des sujets similaires à "enregistrement fichier xlsx csv"