XL 2016 Probleme CSV point virgule en trop

xsara63

XLDnaute Nouveau
Bonjour

merci déja pour votre futur aide

Je vous explique mon problème
J'ai un onglet sur excel avec des formules de calcul qui me permette de préparer une écriture comptable
Cette écriture est variable en nombre de ligne
En jaune les formules de calculs qui font apparaitre des blancs puisque que plus de données
Par contre quand je crée mon CSV, cela me prend aussi les lignes ou il y a les formules et donc des données vides, ce qui me pose un problème pour intégrer le fichier en compta
La solution via macro serait peut être soit
De mettre une formule dans l'onglet pour que les formules de calcules se mette pas si pas de données
ou de ne prendre que les lignes ou il y des données lors de la création du fichier CSV
Je précise je débute en macro

Merci de votre réponse
 

Pièces jointes

  • total.PNG
    total.PNG
    84.6 KB · Affichages: 17

fanch55

XLDnaute Barbatruc
Bonjour,
Vous ne dites pas comment vous faites pour créer le fichier Csv .
Si vous utilisez les option standards tels que "enregistrer sous", c'est normal, le standard enregistre une feuille entière .

Sélectionnez les lignes à sauvegarder et exécutez le code ci-dessous à mettre dans un module
VB:
Sub ExportToCsv()
Dim FileCsv
    
    FileCsv = Application.GetSaveAsFilename( _
            InitialFileName:=FileCsv, _
                 FileFilter:="CSV (*.csv), *.csv")
    If Not FileCsv = False Then
        Application.ScreenUpdating = False
        Selection.Copy
        With Sheets().Add
            .Paste
            Application.CutCopyMode = False
            Application.DisplayAlerts = False
            .SaveAs Filename:=FileCsv, FileFormat:=xlCSV, CreateBackup:=False
            .Delete
        End With
    End If
End Sub
 

xsara63

XLDnaute Nouveau
Le fichier est fait avec une macro
Copie de l'onglet, vers nouveau fichier, je renomme le fichier en format CSV
Voila la macro mis en place
VB:
Sub CreationFichiercomptable()
'
' Creation du fichier comptable avec le numéro de facture
'
    Sheets("Ecriture comptable").Select
    Sheets("Ecriture comptable").Copy
    With ActiveWorkbook.WebOptions
        .RelyOnCSS = True
        .OrganizeInFolder = True
        .UseLongFileNames = True
        .DownloadComponents = False
        .RelyOnVML = False
        .AllowPNG = True
        .ScreenSize = msoScreenSize1024x768
        .PixelsPerInch = 96
        .Encoding = msoEncodingUTF8
    End With
    With Application.DefaultWebOptions
        .SaveHiddenData = True
        .LoadPictures = True
        .UpdateLinksOnSave = True
        .CheckIfOfficeIsHTMLEditor = True
        .AlwaysSaveInDefaultEncoding = False
        .SaveNewWebPagesAsWebArchives = True
    End With
    ActiveWorkbook.SaveAs Filename:= _
        "Z:\COMPTABILITE\sociétéxxx\Factures d'achats\Factures xxx Intégration en compta\Facture xxx n° " & Sheets("Ecriture comptable").Range("C2") & ".csv" _
        , FileFormat:=xlCSV, local:=True, CreateBackup:=False
    ActiveWorkbook.Close
    Sheets("Sommaire").Select
End Sub
Du coup j'intègre ou votre complément de macro ?
et si j'ai bien compris, il faut faire une sélection des lignes
est t-il possible que cela prenne les lignes ou il y a des données et pas les blancs qui sont généré par des formule via une macro ?
car le nombre de ligne est variable de 100 a 250 tous les 15 jours

Merci de votre aide
 
Dernière modification par un modérateur:

fanch55

XLDnaute Barbatruc
Testez le code ci-dessous :
VB:
Sub CreationFichiercomptable()
'
' Creation du fichier comptable avec le numéro de facture
'
    Dossier = "Z:\COMPTABILITE\sociétéxxx\Factures d'achats\Factures xxx Intégration en compta\"
    Application.ScreenUpdating = False
  ' on copie la feuille dans un nouveau classeur
    With Worksheets("Ecriture comptable")
        .Select
        .Copy
        Application.CutCopyMode = False
        No_Fact = .[C2]
    End With
  ' on travaille la feuille dans le nouveau classeur
    With ActiveSheet
        Dim Cell As Range
       ' On cherche le dernier mot TOTAL en colonne E
        Set Cell = Columns("E").Find("TOTAL", Cells(Rows.Count, "E"), xlValues, xlWhole, xlByColumns, xlPrevious)
       ' On détruit toutes les lignes "en-dessous" de ce mot
        If Not Cell Is Nothing Then Rows(Cell.Row + 1 & ":" & Rows.Count).Delete
       ' On sauvegarde le nouveau classeur en Csv
        Application.DisplayAlerts = False
        .Parent.SaveAs Filename:=Dossier & "Facture xxx n° " & No_Fact & ".csv", _
               FileFormat:=xlCSV, CreateBackup:=False, local:=True
       ' On ferme le nouveau classeur
        .Parent.Close False
    End With
    Worksheets("Sommaire").Select
End Sub
 

xsara63

XLDnaute Nouveau
Bonjour

Merci de ton aide
j'ai juste rajouter les lignes suivantes dans ma macro
Dim Cell As Range
' On cherche le dernier mot TOTAL en colonne E
Set Cell = Columns("E").Find("TOTAL", Cells(Rows.Count, "E"), xlValues, xlWhole, xlByColumns, xlPrevious)
' On détruit toutes les lignes "en-dessous" de ce mot
If Not Cell Is Nothing Then Rows(Cell.Row + 1 & ":" & Rows.Count).Delete


CA MARCHE A PRIORI
MERCI BEAUCOUP
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 244
Membres
103 162
dernier inscrit
fcfg