IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

suppression d'un fichier en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut Permission de supprimer un fichier refusée
    Bonjour a tous

    J'ai un code qui fonctionne tres bien qui donne des noms à des fichiers excels présent dans un classeur. Le voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     Sub change_le_nom_des_xls()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
      Dim chemin As Variant
    Dim filtre As Variant
    Dim fichiers As Variant
    Dim Workbook As Variant
    Dim objFSO As Variant
     
     
     
     
    chemin = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"                        ' chemin a adapter
       'on va lister tout les fichiers de type excel en filtrant l'extention
       filtre = "*.xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*"
     
       fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché
       'c'est parti
       Do While fichiers <> "" '
     
        Workbooks.Open (chemin & fichiers)
     
        If Range("B13") = "" Then
     
        'Macro pour la date et le sens de l'odre
     
        Range("E15") = "=YEAR(R[-8]C[-3])"
     
        Range("F15") = "=MONTH(R[-8]C[-4])"
     
        Range("G15") = "=DAY(R[-8]C[-5])"
     
        Range("D25") = "=R[-10]C[1]&R[-10]C[2]&R[-10]C[3]"
     
        If Range("C20") = "Vente" Then Range("C20").Value = "SELL"
        If Range("C20") = "Achat" Then Range("C20").Value = "BUY"
     
      'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B8") & "_" & Range("D25") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     ActiveWorkbook.Close
     
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
         fichiers = Dir
     
     
     
       End If
     
       If Range("B13") = "OPERATION N°" Then
     
       'Macro pour la date et le sens de l'ordre
     
       Range("E15") = "=YEAR(R[-7]C[-3])"
     
        Range("F15") = "=MONTH(R[-7]C[-4])"
     
        Range("G15") = "=DAY(R[-7]C[-5])"
     
        Range("D25") = "=R[-10]C[1]&R[-10]C[2]&R[-10]C[3]"
     
     
        If Range("C20") = "Vente" Then Range("C20").Value = "SELL"
        If Range("C20") = "Achat" Then Range("C20").Value = "BUY"
     
     
       'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B9") & "_" & Range("D25") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     ActiveWorkbook.Close
     
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
     fichiers = Dir
     
     End If
     
     Loop
     
    End Sub
    J'aimerais juste rajouter une condition If directement apres (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open (chemin & fichiers)
    ) pour qu'il me supprime les fichiers qui ne date pas de la veille, avant d'avancer dans le code

    Pour cela j'ai crée of course une fonction veillle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Function Veille() As Date
    Dim d As Byte
     
    d = DatePart("w", Date, vbSunday)                'Si Date est Dimanche ou Lundi, on prend Vendredi comme étant la veille. 'Sinon, on prend j-1
    Veille = Date - IIf(d <= 2, d + 1, 1)
    End Function
    Et je pensais rajouté juste apres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open (chemin & fichiers)
    quelque chose comme ça pour supprimer les fichiers qui ne correpondent pas à la "veille".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If Range("C16") <> Veille Then
     
     
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(chemin & fichiers)
     f.Delete
     
     End If
    Mais ça me dis Permission refusée donc je ne vois pas bien pourquoi

    Je pense qu'il s'agit d'un petit truc assez stupide mais bon là je bloque !!

    Have a good day

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une fois le fichier ouvert, tu ne peux pas le supprimer !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks.Open (chemin & fichiers)
    Il te faut dabords le refermer.

    Hervé.

  3. #3
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut
    Hey aaaa ok ok

    donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     If Range("C16") <> Veille Then
     
     Workbooks.Close (chemin & fichiers)
     
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(chemin & fichiers)
     f.Delete
     
     End If
    Mais quand je met ça il me met nb d'argument ou propriété incorect?
    Et quand j'essaye ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     If Range("C16") <> Veille Then
     
     Workbooks.Close
     
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(chemin & fichiers)
     f.Delete
     
     End If
    Il me ferme mon fichier excel sur lequel est enregistrer la macro

    Comment reussir a fermer mes dossier excel present dans mon classeur?

    Merci

    Ma macro globale je l'a remet ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    Dim objoutlook As Outlook.Application
        Dim olns As Outlook.Namespace
        Dim mItem As Outlook.MailItem
        Dim att As Outlook.Attachment
        Dim fld As Outlook.MAPIFolder
        Dim Compteur As Integer
        Dim message, Repertoire, NomDeFichierSurDisque, NomDeFichier, Taille, Emetteur As String
         Dim AncienNom As String, NouveauNom As String
     
     
     
     
        Option Explicit
     
        Public Sub TransfertPJ()
     
        'Création de l'objet Outlook
        Set objoutlook = CreateObject("Outlook.application")
        'Récupération de l'espace de nom d'outlook
        Set olns = objoutlook.GetNamespace("MAPI")
        'Récupération du répertoire "boite de réception" par défault
        Set fld = olns.GetDefaultFolder(olFolderInbox)
        ' Initialisation du reperetoire de sauvegarde
        ' ne pas oublier l'anti-slash à la fin du repertoire
        Repertoire = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"
        'Inialisation des variables Message, NomDeFichier, NomDeFichierSurDisque, Taille, Emetteur
        message = NomDeFichierSurDisque = NomDeFichier = Taille = Emetteur = ""
     
        ' Sauve les pieces jointes des mails se trouvant dans la boîte de réception.
        ' Pour adresser un dossier dans la boite de réception on pourrait utiliser :
        ' fld.Folders("Nom_Du_Dossier").Items
    For Each mItem In fld.Folders("Confirmation Oddo").Items
     
        For Each att In mItem.Attachments
        If att.Type = olByValue Then
     
        ' Nom du fichier modifié pour l'enregistrement. Evite les controles superflus en renommant.
     
        NomDeFichier = att.Filename
        NomDeFichierSurDisque = NomDeFichier
        att.SaveAsFile Repertoire & NomDeFichierSurDisque
     
     
     
     
     
     
        End If
        Next
        Next
     
     
     
     
        Exit Sub
     
        End Sub
     
     
      Sub change_le_nom_des_xls()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
      Dim chemin As Variant
    Dim filtre As Variant
    Dim fichiers As Variant
    Dim Workbook As Variant
    Dim objFSO As Variant
     
     
    chemin = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"                        ' chemin a adapter
       'on va lister tout les fichiers de type excel en filtrant l'extention
       filtre = "*.xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*"
     
       fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché
       'c'est parti
       Do While fichiers <> "" '
     
        Workbooks.Open (chemin & fichiers)
     
        If Range("C16") <> Veille Then
     
     Workbooks.Close (chemin & fichiers)
     
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(chemin & fichiers)
     f.Delete
     
     End If
     
        If Range("B13") = "" Then
     
        'Macro pour la date et le sens de l'odre
     
        Range("E15") = "=YEAR(R[-8]C[-3])"
     
        Range("F15") = "=MONTH(R[-8]C[-4])"
     
        Range("G15") = "=DAY(R[-8]C[-5])"
     
        Range("D25") = "=R[-10]C[1]&R[-10]C[2]&R[-10]C[3]"
     
        If Range("C20") = "Vente" Then Range("C20").Value = "SELL"
        If Range("C20") = "Achat" Then Range("C20").Value = "BUY"
     
      'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B8") & "_" & Range("D25") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     ActiveWorkbook.Close
     
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
         fichiers = Dir
     
     
     
       End If
     
       If Range("B13") = "OPERATION N°" Then
     
       'Macro pour la date et le sens de l'ordre
     
       Range("E15") = "=YEAR(R[-7]C[-3])"
     
        Range("F15") = "=MONTH(R[-7]C[-4])"
     
        Range("G15") = "=DAY(R[-7]C[-5])"
     
        Range("D25") = "=R[-10]C[1]&R[-10]C[2]&R[-10]C[3]"
     
     
        If Range("C20") = "Vente" Then Range("C20").Value = "SELL"
        If Range("C20") = "Achat" Then Range("C20").Value = "BUY"
     
     
       'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B9") & "_" & Range("D25") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     ActiveWorkbook.Close
     
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
     fichiers = Dir
     
     End If
     
     Loop
     
    End Sub
     
    Private Function Veille() As Date
    Dim d As Byte
     
    d = DatePart("w", Date, vbSunday)                'Si Date est Dimanche ou Lundi, on prend Vendredi comme étant la veille. 'Sinon, on prend j-1
    Veille = Date - IIf(d <= 2, d + 1, 1)
    End Function

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonsoir,

    utilise une variable workboook pour agir sur ton classeur


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim wk As workbook 
    (...)
    set wk = Workbooks.Open (chemin & fichiers)
     
    (....)
     
    wk.close 'Fermeture du classeur

  5. #5
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut
    Donc quelque chose comme ça pour le début mais ça ne semble pas fonctionner quand je veux deleter le fichier que je viens de fermer parce que C16 est différent de ma fonction veille??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     Sub change_le_nom_des_xls()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
      Dim chemin As Variant
    Dim filtre As Variant
    Dim fichiers As Variant
    Dim Workbook As Variant
    Dim objFSO As Variant
     
    Dim wk As Workbook
     
     
     
     
     
     
     
    chemin = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"                        ' chemin a adapter
       'on va lister tout les fichiers de type excel en filtrant l'extention
       filtre = "*.xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*"
     
       fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché
       'c'est parti
       Do While fichiers <> "" '
     
        Workbooks.Open (chemin & fichiers)
     
        If Range("C16") <> Veille Then
     
    Set wk = Workbooks.Open(chemin & fichiers)
    wk.Close
     
     wk.DeleteFile (chemin & fichiers)
     
     
     
     End If
     
        If Range("B13") = "" Then ect ect

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ... mais que veut tu faire ? pourquoi ouvrir le fichier dans excel pour le fermer ensuite immédiatement ?

  7. #7
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut suppression d'un fichier en VBA
    Bonjour

    J'ai creer un programe VBA qui m'enregistre mes pieces jointes d'un sous dossier de ma boite de reception dans un dossier du disque dur, puis qui les ouvre pour les renommer en fonction des informations qu'il y a à l'interieur des fichiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     Sub change_le_nom_des_xls()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
      Dim chemin As Variant
    Dim filtre As Variant
    Dim fichiers As Variant
    Dim Workbook As Variant
    Dim objFSO As Variant
     
     
     
    chemin = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"                        ' chemin a adapter
       'on va lister tout les fichiers de type excel en filtrant l'extention
       filtre = "*.xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*"
     
       fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché
       'c'est parti
       Do While fichiers <> "" '
     
        Workbooks.Open (chemin & fichiers)
     
     
        If Range("B13") = "" Then
     
        'Macro pour la date et le sens de l'odre
     
        Range("E15") = "=YEAR(R[-8]C[-3])"
     
        Range("F15") = "=MONTH(R[-8]C[-4])"
     
        Range("G15") = "=DAY(R[-8]C[-5])"
     
        Range("D25") = "=R[-10]C[1]&R[-10]C[2]&R[-10]C[3]"
     
        If Range("C20") = "Vente" Then Range("C20").Value = "SELL"
        If Range("C20") = "Achat" Then Range("C20").Value = "BUY"
     
      'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B8") & "_" & Range("D25") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     ActiveWorkbook.Close
     
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
         fichiers = Dir
     
     
     
       End If
     
       If Range("B13") = "OPERATION N°" Then
     
       'Macro pour la date et le sens de l'ordre
     
       Range("E15") = "=YEAR(R[-7]C[-3])"
     
        Range("F15") = "=MONTH(R[-7]C[-4])"
     
        Range("G15") = "=DAY(R[-7]C[-5])"
     
        Range("D25") = "=R[-10]C[1]&R[-10]C[2]&R[-10]C[3]"
     
     
        If Range("C20") = "Vente" Then Range("C20").Value = "SELL"
        If Range("C20") = "Achat" Then Range("C20").Value = "BUY"
     
     
       'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B9") & "_" & Range("D25") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     ActiveWorkbook.Close
     
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
     fichiers = Dir
     
     End If
     
     Loop
     
    End Sub
    Mais j'aimerais rajouté 1 chose

    1) Supprimer les fichiers qui ne correspondent pas a la date de la veille sachant que dans chaque fichier la date de la veille est en C16.

    Pour cela j'ai crée un fonction veille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Function Veille() As Date
    Dim d As Byte
     
    d = DatePart("w", Date, vbSunday)                'Si Date est Dimanche ou Lundi, on prend Vendredi comme étant la veille. 'Sinon, on prend j-1
    Veille = Date - IIf(d <= 2, d + 1, 1)
    End Function
    et je pensais intercaller des l'ouverture de mes fichiers, ce bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If Range("C16") <> Veille Then
     
       Workbooks.Close (chemin & fichiers) 'Je ferme le fichier pour pouvoir le supprimer
     
    'Et je le suprimme
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
    mais il ne fonctionne pas, c'est pas de cette façon que l'on supprime un fichier en VBA?

  8. #8
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    crees un tableau de ta liste d'objet
    ou une boucle qui balayes le repertoire avec un test
    si vrai tu supprimes
    ou estc la commande de suppression qui manque?

  9. #9
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 65
    Par défaut
    Salut,
    Moi j'utilises "Kill" qui marche trés bien pour supprimer des fichiers

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       if Range("C16") <> Veille Then 
           Kill ThisWorkbook.Path & "\nomdelafeuille.doc"
        End If
    A voir si ca peut marcher, faudrait peut etre faire des modifications du code!!!

  10. #10
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut
    @ Daranc

    Ma boucle est déjà créee

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Do While fichiers <> "" '
     
        Workbooks.Open (chemin & fichiers)
     
    LA J'INTERCALLE MON BOUT DE CODE POUR SUPPRIMER MON FICHIER qui ne fonctionn pas.
     
     'Et je continue mais conditions si la date de la veille = C16
        If Range("B13") = "" Then
     
        'Macro pour la date et le sens de l'odre
     
        Range("E15") = "=YEAR(R[-8]C[-3])"
    @Ozer

    J'avais aussi vu Kill mais je ne connais pas le nom de mon fichier puisqu'il arrive de ma boite mail sur un dossier de mon disque dur. Mon code plus haut les passe en revue et j'aimerais qu'avant tous il supprime ceux qui correspondent pas a ma fonction veille.

  11. #11
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
    c'est pourtant correct
    a moins que
    (chemin & "/" & fichier)
    a voir

  12. #12
    Membre très actif
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 118
    Par défaut
    Voici mon code où je rentre la condition C16<>Veille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    Sub change_le_nom_des_xls()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
      Dim chemin As Variant
    Dim filtre As Variant
    Dim fichiers As Variant
    Dim Workbook As Variant
    Dim objFSO As Variant
    Dim objFSOA As Variant
     
     
     
     
    chemin = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"                        ' chemin a adapter
       'on va lister tout les fichiers de type excel en filtrant l'extention
       filtre = "*.xls" ' ou le filtre que tu veux ... par exemple "*.txt" ou même "toto*.*"
     
       fichiers = Dir(chemin & filtre, vbNormal Or vbHidden) 'on prend meme ce qui sont caché
       'c'est parti
       Do While fichiers <> "" '
     
        Workbooks.Open (chemin & fichiers)
     
        If Range("C16") <> Veille Then
     
       Workbooks.Close (chemin & fichiers) 'Je ferme le fichier pour pouvoir le supprimer
     
    'Et je le suprimme
    Set objFSOA = CreateObject("Scripting.FileSystemObject")
    objFSOA.DeleteFile (chemin & fichiers)
     
     
        If Range("B13") = "" Then
     
        'Macro pour la date et le sens de l'odre
     
        Range("E15") = "=YEAR(R[-8]C[-3])"
     
        Range("F15") = "=MONTH(R[-8]C[-4])"
     
        Range("G15") = "=DAY(R[-8]C[-5])"
     
        Range("D25") = "=R[-10]C[1]&R[-10]C[2]&R[-10]C[3]"
     
        If Range("C20") = "Vente" Then Range("C20").Value = "SELL"
        If Range("C20") = "Achat" Then Range("C20").Value = "BUY"
     
      'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B8") & "_" & Range("D25") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     ActiveWorkbook.Close
     
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
         fichiers = Dir
     
     
     
       End If
     
       If Range("B13") = "OPERATION N°" Then
     
       'Macro pour la date et le sens de l'ordre
     
       Range("E15") = "=YEAR(R[-7]C[-3])"
     
        Range("F15") = "=MONTH(R[-7]C[-4])"
     
        Range("G15") = "=DAY(R[-7]C[-5])"
     
        Range("D25") = "=R[-10]C[1]&R[-10]C[2]&R[-10]C[3]"
     
     
        If Range("C20") = "Vente" Then Range("C20").Value = "SELL"
        If Range("C20") = "Achat" Then Range("C20").Value = "BUY"
     
     
       'on sauve le classeur sous le nom
        ActiveWorkbook.SaveAs Filename:=chemin & Range("C22") & "_" & Range("C20") & "_" & Range("B9") & "_" & Range("D25") & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     ActiveWorkbook.Close
     
       'on va supprimer le fichier portant l'ancien nom
       Set objFSO = CreateObject("Scripting.FileSystemObject")
    objFSO.DeleteFile (chemin & fichiers)
     
     fichiers = Dir
     
     End If
     
     Loop
     
    End Sub
     
    Private Function Veille() As Date
    Dim d As Byte
     
    d = DatePart("w", Date, vbSunday)                'Si Date est Dimanche ou Lundi, on prend Vendredi comme étant la veille. 'Sinon, on prend j-1
    Veille = Date - IIf(d <= 2, d + 1, 1)
    End Function
    Il me sort que sur cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Close (chemin & fichiers) 'Je ferme le fichier pour pouvoir le supprimer
    Le nombre d'argument ou l'affectation de propriété est incorrect!! C'est pour ça je ne comprend pas

  13. #13
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par Naoned005 Voir le message
    Re

    J'avais déjà essayé. Tu proposes quelque chose comme ça$
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
        Workbooks.Open (chemin & fichiers)
     
        If Range("C16") <> Veille Then
     
       Workbooks(chemin & fichiers).Close  'Je ferme le fichier pour pouvoir le supprimer
    ...

    Citation Envoyé par bbil Voir le message
    bonsoir,

    utilise une variable workboook pour agir sur ton classeur


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim wk As workbook 
    (...)
    set wk = Workbooks.Open (chemin & fichiers)
     
    (....)
     
    wk.close 'Fermeture du classeur

Discussions similaires

  1. Suppression de toutes les macros VBA d'un fichier Excels
    Par PJ_VBA dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/09/2012, 18h35
  2. [VBA-E]Empécher la suppression d'un fichier excel
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/02/2007, 20h55
  3. Réponses: 8
    Dernier message: 14/11/2003, 22h51
  4. Réponses: 2
    Dernier message: 11/08/2003, 13h43
  5. [LG]suppression dans un fichier
    Par cedrick essale dans le forum Langage
    Réponses: 5
    Dernier message: 10/08/2003, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo