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 :

Forcer fermeture classeur [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Apprenti Ingénieur MP
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Apprenti Ingénieur MP
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Par défaut Forcer fermeture classeur
    Bonjour,
    J'ai été chargé de modifier 500 fichiers Excel à la suite, dans des dossiers différents.
    J'ai réussi à ouvrir tous les fichiers d'un dossier, et à les modifier. Le problème est que je ne peux pas les fermer!

    Pour l'ouverture, il fallait forcer la lecture seule (les fichiers sont enregistrés sous, dans un autre dossier) sans mettre à jour les liens, ce qui est bon.
    Mais pour la fermeture, il y a un code VBA qui est executé sur le classeur Excel qui doit être modifié, ce qui fait que je n'arrive pas à le fermer automatiquement:



    Je voulais savoir si il existait un code permettant de quitter un classeur sans rien sauvegarder, et surtout en passant outre ce petit code faisait apparaitre cette fenêtre.

    En vous remerciant,
    SeiaNec

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        'inhibe le déclenchement des macros évènementielles
        Application.EnableEvents = False
        Workbooks("xxx").Close False   'ferme sans enregistrer
        'rétablit le déclenchement des macros évènementielles
        Application.EnableEvents = True

  3. #3
    Membre régulier
    Homme Profil pro
    Apprenti Ingénieur MP
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Apprenti Ingénieur MP
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Par défaut
    Merci beaucoup ça marche impeccablement bien

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Merci du retour. Pense à marquer la discussion comme "résolue"; ça aide ceux qui cherchent dans les archives.

  5. #5
    Membre régulier
    Homme Profil pro
    Apprenti Ingénieur MP
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Apprenti Ingénieur MP
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Par défaut
    Bonjour,
    Je me permet de revenir sur ce sujet, car il m'a été demandé autre chose: supprimer purement et simplement ces fenetres sur les 500 documents.

    Je suis en train d'essayer avec ton code mais je ne pense pas que ça ira car elle s'applique à l'application, et non au fichier!

    Aurais-tu une idée de comment procéder?

    Cordialement,
    SeiaNec

    edit: Ce qui donne ce code (qui me donne une erreur 400, je ne sais où...)
    Désolé, le code est très brouillon

    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
    Sub inhib_vba()
     
    Dim a As String
     
    'Ouverture de tous les fichiers du dossier, en lecture seule, sans mise à jour des liens
    a = DirOpen()
    ChDir a
    monfichier = Dir("*.*")
     
    While monfichier <> ""
        Workbooks.Open monfichier, UpdateLinks:=False, ReadOnly:=True
        'inhibe le déclenchement des macros évènementielles
        Application.EnableEvents = False
        Application.DisplayAlerts = False
        ActiveWorkbook.Save
        Application.DisplayAlerts = True
        ActiveWorkbook.Close False   'ferme sans enregistrer
        'rétablit le déclenchement des macros évènementielles
        Application.EnableEvents = True
     
        monfichier = Dir()
    Wend
     
    End Sub
     
    Function DirOpen() As String
    ' CHOIX D'UN DOSSIER PAR VBA
     
     
        Dim fd As FileDialog
        Set fd = Application.FileDialog(msoFileDialogFolderPicker)
        Dim vrtSelectedItem As Variant
        With fd
            If .Show = -1 Then
                For Each vrtSelectedItem In .SelectedItems
                    DirOpen = vrtSelectedItem
                Next vrtSelectedItem
            Else
                DirOpen = VbNulllString
            End If
        End With
        Set fd = Nothing
     
    End Function

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Je ne vois pas comment faire pour supprimer ces macros, à moins qu'elles n'aient le même nom, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Si elles pouvaient avoir le même nombre de lignes, ça serait encore mieux... mais pas indispensable.

    Pour le vérifier, elles se trouvent dans le module "ThisWorkbook".

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

Discussions similaires

  1. [Toutes versions] [VBA]forcer fermeture d'un classeur.
    Par mattdogg97 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/05/2011, 10h33
  2. [PHP-JS] Forcer fermeture fenêtre php
    Par calitom dans le forum Langage
    Réponses: 4
    Dernier message: 02/07/2010, 22h53
  3. VBa project fantome apres fermeture Classeur
    Par vanima dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/12/2008, 10h04
  4. [Forms 6i & OeBS] F4 : forcer fermeture fenêtre.
    Par macben dans le forum Forms
    Réponses: 1
    Dernier message: 05/02/2008, 16h04
  5. [VBA-E]Problème de sauvegarde et de fermeture classeur
    Par teaRz dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/05/2006, 10h29

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