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

  1. #21
    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

  2. #22
    Membre Expert
    Avatar de Daranc
    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    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
    le nom du fichier ?
    possible que ce soit une interprétation sur le poste soit
    le PC ou tu es considère le classeur en tant que "Classeur" soit il faut lui donné le nom de "Classeur.xls"
    j'ai eu ce problème sur divers classeurs l'ouverture avec classeur marchait sur un PC mais la fermeture demandait l’extension ( et d'autre c'était le contraire )

  3. #23
    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
    Slt

    J'explique le contexte vite fait: Grace à une macro j'ai des PJ de mes mails qui arrivent dans un dossier du disque dur à partir de la je les renomme, mais avant ça j'aimerais les supprimer si en C16 la date est différente de la Veille

    @Daranc what???


    @bbil! J'avais déjà essayé qq chose avec Set tu proposes quelque chose comme ça?

    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
    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 <> "" '
     
        Set wk = Workbooks.Open(chemin & fichiers)
     
       If Range("C16") <> Veille Then
     
     
     
        wk.Close
     
        wk.DeleteFile (chemin & fichiers)
     
        End If
     
     
        If Range("B13") = "" Then
     
    (....)
    Mais ça me met erreur d'automation sur la ligne wk.close

    Ma 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

  4. #24
    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
    bonjour,
    Il n'y as pas de raison pour que cela ne marche pas .. relis les reactions a tes precedents essais avec set..
    Revois aussi l'organisation de ton code tu dois fermer ton fichier excel qu'il soit de la veille ou pas .... Memorise la valeur de ta cellule.. Ferme le classeur puis utilise kill ou pas pour effacer ton fichier
    Si tu ne maitrise pas a fond le VBA d'excel , son fonctionnement et le fonctionnement de l'utilisateur de ton code precise TOUJOURS la feuille concernèe devant tes instructions range..cells..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF wk.sheets("feuille1").range("C16").,,,
    N'invente pas des procedure : deletefile? Je connais pas..

  5. #25
    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
    Mais si ça existe regarde sur les derniere ligne mon petit bout de code s'incere dans

    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
      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)
     
     
     'Et je commence a renommer mes fichier  
     
        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
    Ce code fonctionne parfaitement donc je ne vois pas pourquoi tu dis
    tu dois fermer ton fichier excel qu'il soit de la veille ou pas
    Je comprend toujours pas pourquoi ça ne marche pas kan apres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open (chemin & fichiers)
    je fais ç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(chemin & fichiers).Close  'Je ferme le fichier pour pouvoir le supprimer
     
    'Et je le suprimme
    Set objFSOA = CreateObject("Scripting.FileSystemObject")
    objFSOA.DeleteFile (chemin & fichiers)
     
    End If
    ça serait plus logique là je ne comprend pas le mot clef set même avec F1 et le net

  6. #26
    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
    Oui mais cette procédure ne s'applique pas à un objet workbook ! et wk et un objet workbook

    pour ce qui est du "set wk.. " il y as quantités d'exemples sur ce forum ..

    oubli ton ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(chemin & fichiers).Close
    tu utilise la un mauvais index pour ta collection workbooks. C'est vraiment plus clair et plus facile à gérer avec une variable workbook.

  7. #27
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    dis moi si je ne me trompe pas b8 ou b9 c'est bien la cellule a droite de la cellule ou il y a le mot reference ????? selon les présentations

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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