Pb lors de la fermeture d'un classeur par Macro

hook85

XLDnaute Nouveau
Bonjour,

je viens ici afin de trouver un peu d'aide.

je suis en train de développer une appli permettant de récupérer dans un classeur A des informations (lien hypertexte, rédacteur...) d'une feuille X d'un classeur B ou un classeur C (les colonnes des classeurs B et C ne sont identiques)

Mon open fonctionne bien, indifféremment du classeur B et C :
Code:
Sub ....
:   
    Call Open_Doc(Lien_Text, Num_Version)
' Ouverture doc
    Workbooks.Open (ThisWorkbook.LienVersion)
    
    Application.Wait (Now + TimeValue("0:00:05"))
:
End Sub

Sub Open_Doc(Lien_Text As String, Num_Version As String)

' Sauvegarde du nom du document dans lequel nous allons placer les informations récupérées
    ThisWorkbook.DocArchive = ActiveWorkbook.Name
' déprotection des feuilles
    Workbooks(ThisWorkbook.DocArchive).Worksheets("Param").Unprotect
    Workbooks(ThisWorkbook.DocArchive).Worksheets("Travail").Unprotect
    
    Workbooks(ThisWorkbook.DocArchive).Worksheets("Travail").Range("A1:Z3000").ClearContents
' Extraction adresse du document où sont renseignés les liens vers les schémas
    Workbooks(ThisWorkbook.DocArchive).Worksheets("Appel de doc").Select
    Workbooks(ThisWorkbook.DocArchive).Worksheets("Appel de doc").Range("A2").Select
' sauvegarde du numéro de version
    Selection.Value = Num_Version
    ThisWorkbook.LienVersion = Lien_Text
    ThisWorkbook.DocVersion = Dir(ThisWorkbook.LienVersion)
    
End Sub

mais par contre, lors du Close de mon classeur B, j'ai une erreur 1004 : la Méthode Select de la classe Range a échouée, erreur que je n'ai pas avec le classeur C.

Voici la partie de code concernée:
Code:
Sub ....
:
    Workbooks(ThisWorkbook.DocVersion).Worksheets(Type_Doc2).Select
    Workbooks(ThisWorkbook.DocVersion).Worksheets(Type_Doc2).Range("A" & lgPos).Select
    
    While (Workbooks(ThisWorkbook.DocVersion).Worksheets(Type_Doc2).Range("A" & lgPos).Value <> "")
:
        lgPos = lgPos + 1
        Workbooks(ThisWorkbook.DocVersion).Activate
        Workbooks(ThisWorkbook.DocVersion).Worksheets(Type_Doc2).Select
    Wend
    Workbooks(ThisWorkbook.DocVersion).Worksheets(Type_Doc2).Range("A1").Select
    Call Close_Doc

End Sub
:
Sub Close_Doc()
' Fermeture du doc Version

    Workbooks(ThisWorkbook.DocVersion).Close (False)
    
' Protection des feuilles
    Workbooks(ThisWorkbook.DocArchive).Activate
    Workbooks(ThisWorkbook.DocArchive).Worksheets("Param").Protect _
        DrawingObjects:=True, Contents:=True, Scenarios:=True
    Workbooks(ThisWorkbook.DocArchive).Worksheets("Travail").Protect _
        DrawingObjects:=True, Contents:=True, Scenarios:=True
    Workbooks(ThisWorkbook.DocArchive).Worksheets("Appel de doc").Select
    Workbooks(ThisWorkbook.DocArchive).Worksheets("Appel de doc").Range("A2").Select
End Sub
De plus, je souhaiterais savoir comment désactiver les boîtes de dialogues dans le style de la PJ et les boîtes de dialogues demandant si l'on souhaite sauvegarder les modifs.

Merci d'avance pour l'aide que vous pourrez m'apporter.
 

Pièces jointes

  • Image et macro.zip
    14.6 KB · Affichages: 21
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Pb lors de la fermeture d'un classeur par Macro

Re,

Par contre j'ai oublié de préciser que le classeur B était bourré de MACRO dont je n'ai pas les accès.
essaye en ouvrant ce fichier manuellement sans activer les macros.... peut être une macro événementielle dans ce fichier qui court-circuite la fermeture.... sans voir ce qu'il y a dedans, difficile à dire....
 

hook85

XLDnaute Nouveau
Re : Pb lors de la fermeture d'un classeur par Macro

RE

effectivement, lorsque j'ouvre manuellement le fichier DocVersion en désactivant les macros, pour le fermer par un simple Close, je n'ai pas le souci.

connaîtrais-tu une commande qui permettrait de désactiver les macros sur le DocVersion et seulement celui si?
 

Pierrot93

XLDnaute Barbatruc
Re : Pb lors de la fermeture d'un classeur par Macro

Re,

ceci désactive les procédures événementielles... mais attention comme c'est au niveau de l'appli, sera effectif sur tous les classeurs...

Code:
Application.EnableEvents = False
'ton code
Application.EnableEvents = True

peut être l'utiliser plusieurs fois, à l'ouverture et à la fermeture du dit classeur... voir à chaque fois que tu fais une action sur une de ses feuille....
 

Discussions similaires

Statistiques des forums

Discussions
315 085
Messages
2 116 071
Membres
112 648
dernier inscrit
Otete Christian