Supprimer un fichier s'il es vide Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
s
slakhdin
Jeune membre
Jeune membre
Messages : 29
Appréciation reçue : 1
Inscrit le : 2 mai 2019
Version d'Excel : 2013 FR

Message par slakhdin » 23 mai 2019, 10:10

bonjour tout le monde je reviens vers .si vous pourriez m'aider à résoudre mon problème je serai très reconnaissant
je souhaite supprimer un fichier si il est vide après l'avoir créer . j'ai utilisé "Kill " mais je crois que vu que le ficher se trouve sur un emplacement réseau ou parce avec mon programme il s'ouvre automatiquement après la création du coup l'erreur me dit permission refusé voici le code :
Function sms_non_envoyes()

Dim str, LePath As String
Dim Dl2, x As Long
    ' récupération nombre lignes non vides dans la page DATA pour extraire à partir de la ligne suivante
    With ws
    Dl = ws.Range("T" & ws.Rows.Count).End(xlUp).Row

        Set WBsms = Workbooks.Add
        WBsms.SaveAs Filename:=ThisWorkbook.Path & "\SMS NON ENVOYES DU " & Format(Now(), "dd mm yy") & ".xlsx"
        ' boucle allant de 1 jusqu'à la dernière ligne non vide de la feuille DATA
            For x = Dl To 1 Step -1
                Dl2 = WBsms.Sheets(1).Range("A" & ws.Rows.Count).End(xlUp).Row

                ' si la cellule en T1 ... Tx est vide alors on copie la ligne entière dans le fichier wb_sms_non_envoyes
                str = ws.Range("T" & x)
                If ws.Range("T" & x) = "" Then
                ws.Rows(x).Cut Destination:=WBsms.Sheets(1).Rows(Dl2 + 1)
                ws.Rows(x).Delete
                Else
                    LePath = Dir("P:\PROG CREATION SMS\SMS NON ENVOYES DU " & Format(Now(), "dd mm yy") & ".xlsx")
                    Do While LePath <> ""
                        Kill "P:\PROG CREATION SMS\" & LePath
                        LePath = Dir
                    Loop
                'suppression
                End If
            Next x
    End With
WBsms.Save
WBsms.Close
End Function
merci par avance
cdlt
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 11'086
Appréciations reçues : 335
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 25 mai 2019, 06:23

Bonjour,

:bv:

Avant de plonger dans ta macro ...

Supprimer un fichier s'il est vide ...

signifie que tu as la possibilité de déterminer qu'un fichier est vide ...

Pourrais-tu expliquer par quel moyen tu identifies tes fichiers vides ...?
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'936
Appréciations reçues : 464
Inscrit le : 27 août 2012
Version d'Excel : O365 32 bits

Message par Jean-Eric » 25 mai 2019, 16:19

Bonjour,
Une proposition à étudier.
Cdlt.
Public Sub SMS_non_envoyes()
Dim wb As Workbook
Dim ws As Worksheet, ws2 As Worksheet
Dim strPath As String, strFilename As String
Dim rw As Long, LastRow As Long, lRow As Long

    Application.ScreenUpdating = False
    
    Set ws = ActiveSheet
    LastRow = ws.Cells(Rows.Count, 20).End(xlUp).Row
    strPath = ws.Parent.Path
    Set wb = Workbooks.Add(xlWBATWorksheet)
    Set ws2 = wb.Worksheets(1)
    
    For rw = LastRow To 1 Step -1
        If IsEmpty(ws.Cells(rw, 20)) Then
            lRow = lRow + 1
            With ws
                .Rows(rw).Copy Destination:=ws2.Cells(lRow, 1)
                .Rows(rw).Delete
            End With
        End If
    Next rw
    
    If lRow > 0 Then
        strFilename = strPath & "\SMS NON ENVOYES DU " & Format(Date, "yyyy-mm-dd") & ".xlsx"
        wb.SaveAs Filename:=strFilename, FileFormat:=51
    Else
        wb.Close savechanges:=False
    End If
    
End Sub
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
s
slakhdin
Jeune membre
Jeune membre
Messages : 29
Appréciation reçue : 1
Inscrit le : 2 mai 2019
Version d'Excel : 2013 FR

Message par slakhdin » 27 mai 2019, 08:57

James007 a écrit :
25 mai 2019, 06:23
Bonjour,

:bv:

Avant de plonger dans ta macro ...

Supprimer un fichier s'il est vide ...

signifie que tu as la possibilité de déterminer qu'un fichier est vide ...

Pourrais-tu expliquer par quel moyen tu identifies tes fichiers vides ...?
bonjour. James ,merci d'abord pour ta réactivité . un fichier vide c'est qu'il ne contient aucune donnée ( feuilles vides )
cdlt
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 11'086
Appréciations reçues : 335
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 27 mai 2019, 09:03

slakhdin a écrit :
27 mai 2019, 08:57
bonjour. James ,merci d'abord pour ta réactivité . un fichier vide c'est qu'il ne contient aucune donnée ( feuilles vides )
cdlt
Bonjour,

Merci beaucoup pour ton aide ... :lol: :lol: :lol:

Pour supprimer ton fichier ... il doit être fermé ...

Donc ... au risque de me répéter ...

Pourrais-tu expliquer par quel moyen tu identifies tes fichiers vides ...???
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'936
Appréciations reçues : 464
Inscrit le : 27 août 2012
Version d'Excel : O365 32 bits

Message par Jean-Eric » 27 mai 2019, 09:11

Bonjour,
Pas de retour sur ma proposition ?
On enregistre le nouveau classeur s'il comporte des données, sinon on le ferme sans l'enregistrer.
On a donc pas à le supprimer. :oops:
Cdlt.
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
s
slakhdin
Jeune membre
Jeune membre
Messages : 29
Appréciation reçue : 1
Inscrit le : 2 mai 2019
Version d'Excel : 2013 FR

Message par slakhdin » 27 mai 2019, 09:18

James007 a écrit :
27 mai 2019, 09:03
slakhdin a écrit :
27 mai 2019, 08:57
bonjour. James ,merci d'abord pour ta réactivité . un fichier vide c'est qu'il ne contient aucune donnée ( feuilles vides )
cdlt
Bonjour,

Merci beaucoup pour ton aide ... :lol: :lol: :lol:

Pour supprimer ton fichier ... il doit être fermé ...

Donc ... au risque de me répéter ...

Pourrais-tu expliquer par quel moyen tu identifies tes fichiers vides ...???
Désolé j'ai pas bien compris votre question .en fait je retire l'idée de supprimer le fichier .c'est mieux que si il ne me trouve pas des cellules vides sur la feuille DATA c'est pas la peine de le créer . voici une partie du code
' si la cellule en T1 ... Tx est vide alors on copie la ligne entière dans le fichier wb_sms_non_envoyes
                str = ws.Range("T" & x)
                If ws.Range("T" & x) = "" Then
                ws.Rows(x).Cut Destination:=WBsms.Sheets(1).Rows(Dl2 + 1)
                ws.Rows(x).Delete 
                'suppression
                End If
mais je ne sais pas comment ne pas créer le fichier dans ce cas.
s
slakhdin
Jeune membre
Jeune membre
Messages : 29
Appréciation reçue : 1
Inscrit le : 2 mai 2019
Version d'Excel : 2013 FR

Message par slakhdin » 27 mai 2019, 09:33

Jean-Eric a écrit :
27 mai 2019, 09:11
Bonjour,
Pas de retour sur ma proposition ?
On enregistre le nouveau classeur s'il comporte des données, sinon on le ferme sans l'enregistrer.
On a donc pas à le supprimer. :oops:
Cdlt.
merci Jean Eric pour ta proposition . j'ai testé ton code il n'efface pas le fichier même s'il est vide ::(
pic.PNG
Avatar du membre
James007
Fanatique d'Excel
Fanatique d'Excel
Messages : 11'086
Appréciations reçues : 335
Inscrit le : 30 août 2014
Version d'Excel : 2007 EN

Message par James007 » 27 mai 2019, 09:39

Re,

Salut Jean-Eric :wink:

@slakhdin

Je vois que tu as une idée bien précise du chemin à suivre ... :wink:
A+

:)

Quand on n’a qu’un marteau, tous les problèmes deviennent des clous…
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'936
Appréciations reçues : 464
Inscrit le : 27 août 2012
Version d'Excel : O365 32 bits

Message par Jean-Eric » 27 mai 2019, 10:05

Bonjour,
J'ai pourtant l'impression que la proposition répond à tes attentes.
A tester !... ;;)
Cdlt.
slakhdin.xlsm
(16.26 Kio) Téléchargé 1 fois
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message