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 :

Fermer fichier excel externe


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 26
    Points
    26
    Par défaut Fermer fichier excel externe
    Bonjour,

    J'ai un logiciel qui me permet de faire des macros VBA et dans l'une d'entre elles, je dois faire des modifs dans un classeur excel.

    Le fichier excel est un planing. Lorsque l'utilsateur utilise son logiciel, automatiquement, il va aller ajouter des choses sur le planing.

    Le problème est que le planning est tout le temps ouvert (c'est nécessaire).
    Donc la seule solution que je vois pour le moment, c'est que le logiciel externe ferme le fichier, fasse les modifs, et réouvre le fichier...

    Mais est ce possible ? Peut tester si un fichier est ouvert ? Puis si oui, le fermer automatiquement (sans l'avoir ouvert par VBA auparavant) ?

    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Points : 870
    Points
    870
    Par défaut
    Bonjour,
    Tu dois pour ca connaitre le nom du fichier.
    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
    'adaptation de ce qu'il y a dans les pages "gestion d'erreur"
    Sub laMacro()
        Dim Wb As workbook
     
        'Evite le message d'erreur si le workbook n'existe pas.
        On Error Resume Next
        Set Ws = Workbooks("NomClasseur")
        On Error GoTo 0
     
        '(Wb = Nothing quand l'objet attribué à la variable n'existe pas)
        If Not Ws Is Nothing Then
            MsgBox "Le classeur existe"
            Else
            MsgBox "Le classeur n'existe pas."
        End If
    End Sub
    Pour fermer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    workbooks("NomClasseur").close

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 26
    Points
    26
    Par défaut
    Merci mais ca ne fonctionne pas.

    Il m'affiche le msgbox qui dit que le classeur n'existe pas et j'ai une erreur lors de la fermeture qui me dit que l'indice n'appartient pas a la selection.

    Mais je ne comprends pas un truc (meme si ca marchait j'aimerais comprendre ). Il ne faut pas ouvrir un objet excel d'abord ? Comment il fait le lien sinon ?

    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
    Sub aaaaa()
       Dim Wb As Workbook
     
       'Evite le message d'erreur si le workbook n'existe pas.
       On Error Resume Next
       Set Wb = Workbooks("planning IOS ANNEE_2007_SEM_31")
       On Error GoTo 0
     
       '(Wb = Nothing quand l'objet attribué à la variable n'existe pas)
       If Not Wb Is Nothing Then
           MsgBox "Le classeur existe"
           Else
           MsgBox "Le classeur n'existe pas."
       End If
     
    'Pour fermer
    Workbooks("planning IOS ANNEE_2007_SEM_31").Close
     
    End Sub

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Points : 870
    Points
    870
    Par défaut
    Deja pour fermer le classeur il faut qu'il existe donc il faut mettre le code de fermeture dans le test. Et puis peut etre qu'il faut mettre des .xls a la fin je me rappelle plus

    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
    Sub aaaaa()
       Dim Wb As Workbook
     
       'Evite le message d'erreur si le workbook n'existe pas.
       On Error Resume Next
       Set Wb = Workbooks("planning IOS ANNEE_2007_SEM_31.xls") 'ou Workbooks("planning IOS ANNEE_2007_SEM_31")
       On Error GoTo 0
     
       '(Wb = Nothing quand l'objet attribué à la variable n'existe pas)
       If Not Wb Is Nothing Then
           MsgBox "Le classeur existe"
           Workbooks("planning IOS ANNEE_2007_SEM_31.xls").Close 'ou Workbooks("planning IOS ANNEE_2007_SEM_31").Close
           Else
           MsgBox "Le classeur n'existe pas."
       End If
     
    End Sub

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 37
    Points : 26
    Points
    26
    Par défaut
    donc il faut mettre le code de fermeture dans le test
    Le problème n'est pas d'éviter le message en bougeant la fermeture de place.
    Si je fais ca, il va tout de même dire que le classeur n'existe pas et ne vas juste pas tenter de le fermer.

    Mais le classeur existe bien (et il est bien ouvert dans excel).
    Pour le .xls j'avais tenté avec et sans parce que je ne savais pas non plus.
    Mais il dit dans les deux cas que le classeur n'existe pas (j'ai verifié le nom il est correct)

    Le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Wb = Workbooks("classeur")
    ne semble pas aller prendre sa source dans le excel ouvert

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Workbooks est la collection des classeurs ouverts par le projet courant.

    Il n'est donc pas possible de fermer un classeur qui a été ouvert par un autre processus.

    La seule solution que je voie est de killer le processus de l'instance d'Excel qui a ouvert le classeur en question.

Discussions similaires

  1. [AC-2007] Fermer fichier Excel spécifique
    Par Renard-fou dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/11/2009, 09h21
  2. Réponses: 3
    Dernier message: 30/09/2008, 14h12
  3. instruction: fermer fichier excel sans sauvegarder
    Par nynho dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/01/2008, 14h59
  4. fermer fichier excel via OLE
    Par richard038 dans le forum Delphi
    Réponses: 2
    Dernier message: 27/09/2006, 17h26
  5. comment fermer un fichier Excel depuis Access?
    Par audrey_desgres dans le forum Access
    Réponses: 14
    Dernier message: 21/06/2005, 12h43

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