[résolu] Bouton pour Enregistrement d'un .CSV sans l'avertissement de comptabilité

Ctrl-Alt-Suppr

XLDnaute Junior
Bonjour à tous.

Le code ci-dessous ne fonctionne pas du tout :
Aucun fichier créé avec un "long" chemin ou un emplacement réseau.
Et sinon .csv est remplacé par .xlsm et j'ai des %20 au lieu des espaces.

Si quelqu'un est motivé pour corrigé ces quelques lignes.
Je veux juste enregistrer le fichier courant avec le même nom, dans le même dossier, en .CSV
(pas d'importance pour le séparateur virgule ou point-virgule ...)
Par avance, merci.

Code:
Dim DOSSIER As String
Dim NOM As String
Dim CHEMIN_File_name As String

Sub CSV()

DOSSIER = ThisWorkbook.Path
NOM = ActiveWorkbook.Name
CHEMIN = DOSSIER & NOM

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=CHEMIN, FileFormat:=xlCSVMSDOS, CreateBackup:=False
Application.DisplayAlerts = True

MsgBox " >    fichier .CSV enregistré    <  "

End Sub
 
Dernière édition:

Ctrl-Alt-Suppr

XLDnaute Junior
Re : Bouton pour Enregistrement d'un .CSV sans l'avertissement de comptabilité

Oui, j'avais commencé par regarder le code généré mais la sauvegarde se fait sur un chemin absolu ; alors que moi j'aimerai pouvoir enregistré dans le chemin relatif courant.

Code:
Sub Macro1()
' Macro1 Macro
    ChDir "D:\"
    ActiveWorkbook.SaveAs Filename:="D:\ABCD.csv", FileFormat:=xlCSVMSDOS, _
        CreateBackup:=False
    Sheets("Feuille1").Select
End Sub


Code:
CHEMIN = DOSSIER & "\" & NOM
J'avais déjà essayé.
La macro ne crée pas de nouveau fichier mais remplace le fichier source par un truc de 1Ko.
 

Ctrl-Alt-Suppr

XLDnaute Junior
Re : Bouton pour Enregistrement d'un .CSV sans l'avertissement de comptabilité

Merci pour ce lien qui m'a bien aidé et permis de bidouiller à mes heures perdues.
Mon classeur fonctionne maintenant comme je le souhaitais.
Je profite d'un passage sur xl-dl pour recopier mon code, sait-on jamais, ça pourrait servir à quelqu'un d'autre.

Code:
Sub BoutonCSV_Cliquer()

    Dim NOM As String
    Dim CHEMIN As String
    Dim WB1 As Workbook, WB2 As Workbook

    Set WB1 = ActiveWorkbook
    ActiveWorkbook.ActiveSheet.UsedRange.Copy

    Set WB2 = Application.Workbooks.Add(1)
    WB2.Sheets(1).Range("A1").PasteSpecial xlPasteValues

    ' la formule dans F1 est :=GAUCHE(STXT(CELLULE("nomfichier";A1);TROUVE("[";CELLULE("nomfichier";A1))+1;999);TROUVE("]";STXT(CELLULE("nomfichier";A1);TROUVE("[";CELLULE("nomfichier";A1))+1;999))-6)
    NOM = [F1].Value
    CHEMIN = WB1.Path & "\" & NOM & "--blablabla" & ".csv"

    Application.DisplayAlerts = False
       With WB2
        .SaveAs Filename:=CHEMIN, FileFormat:=xlCSV, CreateBackup:=False
        .Close True
    End With
    Application.DisplayAlerts = True

End Sub


Petite particularité ; lorsque l'on veut exporter en .csv une zone ciblée du tableau : Il faut faire en sorte que la cellule dans laquelle on inscrit le nom du fichier ne soit pas en dehors de cette zone. Et tenir compte pour la lettre de la colonne du décalage induit par notre ciblage de zone à exporter. En clair si le nom est dans la 5eme colonne (E1) mais que l'on sélectionne C D E, et donc qu'on enlève 2 colonnes, la ligne du code du nom doit porter sur (C1).
C'est sans doute évident pour 95% des gens, mais moi j'avais cherché 20 min avant de comprendre :-(
 

Discussions similaires