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

Deski Discussion :

Fermer un classeur Excel en AfterRefresh


Sujet :

Deski

  1. #1
    Membre régulier
    Fermer un classeur Excel en AfterRefresh
    Bonjour à tous,

    Je souhaiterais fermer un classeur Excel particulier après raifraichissement de mon rapport, la sauvegarde ne m'importe peu.

    J'ai un bout de code qui fonctionne très bien en VBA Excel mais on ne peux pas dimensionner :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    quelquechose As Workbook ("Bidule.xlsm")
    en VBA BO.

    Existe-t-il une solution sans "killer" le processus Excel?

    Très bonne journée

    Anarchiste-mouton

  2. #2
    Nouveau membre du Club
    Bonjour,

    Peux-tu essayer ce code ?


    Set myXL = GetObject(, ""Excel.application"")

    Set myXL = GetObject("nom fichier.xls")

    myXL.Application.Close


    Khalid

  3. #3
    Membre régulier
    Bonjour Khalid, merci de prendre le temps de me répondre,

    En déclarant myXL as Object j'ai une erreur à l'éxecution de la ligne :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Set myXL = GetObject("Budgets.xlsm")

    Dans un premier temps Excel m'indique : "Désolé... Nous ne trouvons pas Budgets.xlsm. Peut-être l'avez-vous déplacé, renommé ou supprimé ?" alors que c'est le seul fichier d'ouvert.
    Puis VBA se stoppe.
    Peut-être faut-il préciser l'emplacement du fichier?

  4. #4
    Nouveau membre du Club
    Bonjour,

    Oui, il faut préciser le chemin complet du fichier.

    Exemple : "C:/documents/bidule.xlm"


    Edit : Tu peux ne pas préciser le chemin complet du fichier en question, et d'utiliser le code suivant :

    Si tu es sûr que ce fichier sera toujours ouvert au moment de l'exécution de ce code, il faut ajouter ça :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Set myXL = GetObject(, ""Excel.application"") 
     
    Set myXL = myXL.Application.Workbooks("bidule.xlm")
     
    myXL.Application.Close



    Khalid.

  5. #5
    Membre régulier
    Merci Khalid,

    Oui le fichier en question s'ouvre en BeforeRefresh et se ferme en AfterRefresh (il sert juste comme fournisseur de données).

    Le problème est résolu, voici le code avec 2 ou 3 petites modifs :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    dim myXL As Object
     
      Set myXL = GetObject(,"Excel.application")
      Set myXL = myXL.Application.Workbooks("bidule.xlsm")
         myXL.Close Savechanges:=False
     
      Set myXL = GetObject(,"Excel.application")
         myXL.Quit


    Encore merci à bientôt pour de nouveaux problèmes