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 :

Fermeture fichier VBA puis suppression


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Fermeture fichier VBA puis suppression
    Bonjour, je m'adresse à vous car j'ai un petit soucis avec mon fichier.
    Je n'arrive pas a fermer puis supprimer un classeur qui me sert de pièce jointe pour un mail. Ce classeur est une copie d'une feuille d'un autre classeur qui est par la suite envoyé. Ce que je vaudrais faire c'est une fois que le le mail est envoyé, je vaudrais fermer cette copie (qui s'ouvre automatiquement) puis la supprimer.. Merci pour votre aide précieuse

    Voici mon code:
    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
    Sub EnvoiFinal()
     
    Dim OutApp As Object
    Dim OutMail As Object
    Dim cell As Range, x As Integer
    Dim mesdestinataires As String
    Dim Chemin As String, Fichier As String
    Dim Wkb As Workbook
        Application.ScreenUpdating = False
     
        Set Wkb = ThisWorkbook
        Chemin = Wkb.Path & "\"
        Fichier = "test.xlsx"
        ActiveSheet.Copy ' crée une copie de la feuille active
        ActiveWorkbook.SaveAs Chemin & Fichier
     
        Wkb.Activate
        Set OutApp = CreateObject("Outlook.Application")
     
        Sheets("Infos revue").Select
        For Each cell In Columns("C").Cells.SpecialCells(xlCellTypeConstants)
        If cell.Value Like "?*@?*.?*" And _
        LCase(Cells(cell.Row, "D").Value) = "oui" Then mesdestinataires = cell.Value & "; " & mesdestinataires
        Next cell
     
        x = Len(mesdestinataires) - 2
        nbritem = Left(mesdestinataires, x)
     
        Set OutMail = OutApp.CreateItem(0)
     
        If MsgBox("Etes-vous certain de vouloir envoyer ce mail ?", vbYesNo, "Demande de confirmation") = vbYes Then
        With OutMail
            .To = mesdestinataires
            .Subject = "Envoi mail"
            .Body = "Test test test"
            .Attachments.Add Chemin & Fichier
            .Display  '   Ici on peut supprimer pour l'envoyer sans vérification
           .Send
           MsgBox "Le mail à bien été envoyé !"
        End With
        End If
     
        Set OutMail = Nothing
        Set OutApp = Nothing
        Set Wkb = Nothing
     
        Workbooks(test).Activate
        Workbooks(test).Close
        Kill test
     
      End Sub
    Merci d'avance pour vos reponses

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,
    Je suis peut-être fatigué mais ta fermeture et suppression font appel à la variable Test que je ne vois nulle par ailleurs dans ton code...

    Pour ce genre de cas, j'utilise une variable de type workbook spécifique, exemple (à ajouter à ton code):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim ToKill as workbook
    '...
        ActiveSheet.Copy ' crée une copie de la feuille active
        Set ToKill = activeworkbook
        ActiveWorkbook.SaveAs Chemin & Fichier
    '...
    ToKill.close
    Kill (chemin & "\" & ToKill)
    A+

  3. #3
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Test n'est pas une variable mais le nom du fichier créé, pour le fermer il faut préciser le nom complet du classeur ("Nom.extension") à mettre entre guillemets ou utiliser la variable Fichier initialisée avec le nom du classeur en question. Et pour le supprimer il faut indiquer le chemin complet et le nom complet.
    Ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Workbooks(test).Activate '<-- inutile
    'Workbooks(test).Close
    Workbooks(Fichier).Close
    'Kill test
    Kill Chemin & Fichier

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Points : 175
    Points
    175
    Par défaut
    Comme le créateur du post n'a pas mis résolu (s'il est revenu sur le forum après avoir posté) j'ajoute une petite contribution:

    Je pense qu'il y a également un autre souci lié à la résa que fait Outlook (?) sur la pièce jointe...
    Même en passant en direct, il est impossible de supprimer un fichier qui correspond à la dernière pièce jointe envoyée avec un message.
    Il est alors nécessaire d'ouvrir un autre message, de joindre un autre fichier pour pouvoir supprimer le 1er...

Discussions similaires

  1. Ouvrir un fichier Excel depuis Vba puis retour dans la macro initiale
    Par Mistigri5 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/07/2014, 23h19
  2. Problème fermeture fichier .doc et appli word VBA
    Par thomas93 dans le forum Excel
    Réponses: 1
    Dernier message: 26/02/2014, 10h45
  3. [Batch] Recherche ligne puis suppression dans un fichier
    Par jbarreau-mainson dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 07/01/2010, 11h40
  4. Réponses: 1
    Dernier message: 13/06/2007, 17h20
  5. Fermeture fichier excel en vba
    Par avyrex dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/11/2006, 21h30

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