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 :

Plantage Excel a la fermeture avec Thisworkbooks.close


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Ingenieur Projet
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur Projet
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 24
    Points
    24
    Par défaut Plantage Excel a la fermeture avec Thisworkbooks.close
    Bonjour a tous,

    Voici mon souci.
    J'ai développé une tableau de suivi sur Excel 2010.
    Ce tableau est utilisé par plusieurs utilisateurs.
    Je n'avais pas de bug particulier.

    Malheureusement une migration vers Office 2016 a eu lieu.

    Depuis je me retrouve donc avec des postes informatiques qui n'ont pas tous la même versions d'office.

    Pour les utilisateurs d'office 2010 pas de souci.
    Par contre pour les utilisateurs d'office 2016, la j'ai un bugs que je n'arrive pas a résoudre.

    Le but de la macro consiste à ouvrir un document word lorsque l'on clique sur une cellule du tableau de suivi (contenant le titre du document word).
    puis a fermer le tableau de suivi.

    Depuis migration le code plante sur l'expression "ActiveWorkbook.Close True" uniquement sur les postes sous office 2016.
    Ca marche très bien sur office 2010

    Voici mon code au complet.

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        'Déclaration des variables
        Dim x As Variant
        Dim y As Variant
        Dim TDB As String
        Dim CHEMIN_DOC As String
        Dim NOM_DOC As String
        Dim CHEMIN As String
        Dim CONTROL_OUVERTURE As String
        Dim objWord As New Word.Application
     
        'Pour ne pas entrer dans la cellule cellectionnée
        Cancel = True
     
        'Initialisation des variables
        TDB = ActiveWorkbook.Name
        x = Selection.Row
        y = Selection.Column
     
        'Si click sur colonne "C"
        If y = 3 Then
            'Si Document non créé
            If Cells(x, 35).Value = "" Then
                'Si absence N° document
                If Cells(x, 2).Value = "" Then
                    MsgBox "Veuillez indiquer un ID temporaire"
                    Cancel = True
                    Exit Sub
                End If
                'Si absence Titre document
                If Cells(x, 3).Value = "" Then
                    MsgBox "Veuillez indiquer une désignation à la Field Procedure"
                    Cancel = True
                    Exit Sub
                End If
                'Formulaire d'initialisation du document
                Template_Property.Show
            'Si document crée
            ElseIf Cells(x, 35).Value = "Créé" Then
                'Initialisation variables
                CHEMIN_DOC = "Chemin du document sur le reseau"
                NOM_DOC = Cells(x, y).Value & ".docx"
                CHEMIN = CHEMIN_DOC & NOM_DOC
                'Vérification si document déjà ouvert par quelqu'un sur le réseau
                Call TESTOUVERTURE
            End If
        End If
        'Récupération vérification test ouverture
        CONTROL_OUVERTURE = Sheets("Réglage").Range("B3").Value
        'Si document non ouvert
        If CONTROL_OUVERTURE = 1 Then
            'ouverture du doc word
            objWord.Documents.Open CHEMIN_DOC & NOM_DOC
            objWord.Visible = True
            'retour sur Excel
            Workbooks(TDB).Activate
            'Sauvegarde
            ActiveWorkbook.Save
            If Application.Version = "16.0" Then
                'Sauvegarde
                ActiveWorkbook.Save
                'Fermeture
                ActiveWorkbook.Close True
            End If
            If Application.Version = "14.0" Then
                'Sauvegarde
                ActiveWorkbook.Save
                'Fermeture
                ActiveWorkbook.Close True
            End If
        'Si document ouvert
        ElseIf CONTROL_OUVERTURE = 0 Then
            'information utilisateurs
            MsgBox "Fichier en cours d'utilisation par un autre utilisateur", vbInformation
            Exit Sub
        End If
    Du coup pour isolé un peu le problème j'ai ajouté la détection de la version d'Excel pour modifier l'expression ActiveWorkbook.Close True mais rien n'y fait.

    J'ai essayé les codes suivants
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveWorkbook.Close True
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ThisWorkbook.Close True
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With ActiveWorkbook 
     .RunAutoMacros xlAutoClose 
     .Close 
    End With
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ThisWorkbook.Close savechanges=True
    et enfin une dernière alternative qui ferme word et pas Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ThisWorkbook.Activate
    ThisWorkbook.Save
    SendKeys ("^{F4}")
    Je n'ais plus d'idée. Si quelqu'un pouvait m'aider, je lui en serai grandement reconnaissant.
    Merci d'avance.
    Agd

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut
    re
    Bonjour
    j'ai vu Mme irma ce matin elle m'a prédit que tu allais poser cette question

    comme j'était pressé je lui est pas demandé la réponse

    maintenant si tu me dis sur quelle ligne ta macro plante, on pourra peut être faire quelque chose je dis bien peut être

    re
    au pire
    a la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Close True
    tu met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    with application:.displayalerts=false:.quit:end with
    c'est brutal mais efficace
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre à l'essai
    Profil pro
    Ingenieur Projet
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur Projet
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Bonjour patricktoulon,

    J'ai envoyé par erreur mon premier post que j'ai modifier depuis avec toutes les infos.

    Sinon pour ta proposition :
    with application:.displayalerts=false:.quit:end with
    Je suis d'accord mais je ne souhaite pas fermer l'application Excel suelement le classeur ouvert.

    Agd

Discussions similaires

  1. [XL-2002] Plantage excel sur fermeture classeur
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/11/2011, 09h13
  2. [XL-2007] Plantage excel à la fermeture du fichier avec macro si autre fichier excel ouvert
    Par Systémicien dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/03/2011, 09h00
  3. Plantage sur fermeture avec dll CLI
    Par greenzephyr dans le forum C#
    Réponses: 9
    Dernier message: 31/07/2007, 16h49
  4. Plantage Excel avec le pilotage depuis C++ Builder
    Par Jidewe dans le forum C++Builder
    Réponses: 24
    Dernier message: 24/01/2007, 10h59
  5. [VB.net] probleme fermeture avec close
    Par ptitesouris dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/05/2006, 11h42

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