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 :

Suite du programme impossible


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut Suite du programme impossible
    Amis du forum, bonjour

    Dans 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
    '****************************** Demande de lancement du programme
    msg = "ATTENTION, ENVOIS DES STATISTIQUES AU RESEAU : LANCEMENT PROGRAMME ( OUI / NON ) ?"
    Style = vbYesNo + vbDefaultButton2
    Response = MsgBox(msg, Style, Title, Help, Ctxt)
    '****************************** Si réponse négative, clôture des fichiers
    If Response = vbNo Then
    Set oWbk = GetObject("V:\DPDI\GFL\SCG-CHQ\PEXTRAIT\BASES EXCEL\STATS SCAN MENSUEL\Liste_Envoi_stat_agence.xls")
    oWbk.Close
     
    Dim Wb As Workbook
    For Each Wb In Workbooks
    If Wb.Name = ActiveWorkbook.Name Then
    Wb.Close True
    End If
    Next Wb
    End If
    lorsque je clos le fichier "Liste_Envoi_stat_agence.xls", ma macro, au lieu de continuer par la fermeture du fichier actif se termine.

    Quelqu'un saurait-il d'où peut venir le problème ?

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Babybell,

    Cette ligne de code me surprend

    Wb.Name = ActiveWorkbook.Name

    En effet, désigne le classeur actif; tandis que désigne le classeur dans lequel ta macro est écrite.

    Ton problème peut trouver ici son origine.

  3. #3
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Cela ne changera rien, la macro s'arrête après "oWbk.Close"

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut fermeture du classeur
    Babybell,

    Je ne vois pas où tu veux en venir.
    Dans quel classeur se trouve ta macro ? Quel classeur veux-tu fermer ?

    Si tu veux fermer le classeur dans lequel la macro est écrite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Close(True)
    suffira

    Si tu veux fermer seulement le classeur actif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkBook.Close(True)
    Si tu veux fermer tous les classeurs hors celui comportant la macro

    Là tu peux balayer les noms de tes classeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Wb.name <> ThisWorkbook.Name
    ou bien si tous les classeurs hors celui actif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Wb.Name <> ActiveWorkbook.Name
    En espérant, par ces cas de figure, avoir répondu à ton problème

  5. #5
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Merci de ta réponse. Ce que je veux faire, et que j'ai déjà fait dans des programmes, mais qui là en l'ocurence ne fonctionne pas c'est :
    Quand je suis dans un classeur A, j'appelle un classeur B.

    Après avoir fait plein de manips, je veux fermer le classeur B puis le classeur A, sans pour autant fermer d'autres classeurs, X, Y ou Z qui eux n'ont pas besoin d'être fermés.

    Et c'est là que le problème intervient. Je ferme bien le classeur B, mais ma macro s'arrête, même si mon code continue, et c'est là que je ne comprends pas.


    Ais-je été assez clair ?

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut FERMETURE CLASSEUR
    On est donc bien d'accord..

    Si
    - ta macro est écrite dans le classeur A.
    - tu veux fermer le classeur B
    - tu veux fermer le classeur A

    Il ne faut pas fermer le classeur A, donc là où est écrite ta macro, avant d'avoir fermé le classeur B.

    Dans l'ordre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("ClasseurB.xls").Close(True)
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Close(True)
    Comme je l'ai dit plus haut, désigne le classeur où figure ta macro.

    Tu remarqueras qu'il n'est pas besoin de balayer les classeurs de ta session Excel.

    Je peux paraître obtus, mais je ne vois pas d'autre explication.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Installation de programme impossible
    Par andre_21 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 21/10/2009, 11h11
  2. Lancement d'un programme impossible
    Par frazz dans le forum Exchange Server
    Réponses: 0
    Dernier message: 16/07/2009, 10h07
  3. exécution programme impossible
    Par yasinfo dans le forum Windows XP
    Réponses: 3
    Dernier message: 07/12/2007, 02h17
  4. Réponses: 7
    Dernier message: 18/01/2007, 13h09
  5. Pas de suite à mon programme
    Par gillou4 dans le forum C
    Réponses: 7
    Dernier message: 10/10/2005, 16h42

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