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:

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Pb lors de la fermeture d'un classeur par Macro

Bonjour hook

sans être certain de pouvoir t'aider..........,
tu risques ne ne pas avoir beaucoup de réponses car ton fichier joint n'est pas au format .xls

pourrais-tu également nous dire la ligne en surbrillance au moment du déboguage ?

à+
Philippe
 

hook85

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

Bonjour phlaurent55

je rajoute le XSL.

Il se trouve dans l'archive ci-dessous.

Pour le code en surbrillance lors du débug, il s'agit de la ligne :

Code:
Workbooks(ThisWorkbook.DocVersion).Close (False)

PS : le xls est prévu pour fonctionner avec des fichiers placés à un endroit préci du réseau de mon entreprise.
 

Pièces jointes

  • 01_Recherche de Documents.zip
    117.5 KB · Affichages: 21

Pierrot93

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

Bonjour hook, Philippe

ouvert ton fichier et refemé bien vite, pas trop envie de chercher dans tous tes modules... le mieux est toujours un fichier reprenant uniquement le problème posé...

il faudrait voir ce que vaut "DocVersion".. et a quoi cela correspond pour toi...
Code:
Workbooks(ThisWorkbook.DocVersion).Close (False)

pourquoi pas tout simplement :
Code:
ThisWorkbook.Close False

pour empêcher les messages d'alerte :
Code:
Application.DisplayAlerts = False
'ton code
Application.DisplayAlerts = True

bonne journée
@+
 

hook85

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

je viens de tester avec
Code:
Application.DisplayAlerts = False
avant l'Open.

Ma macro a été en mesure de fermer le classeur B sans souci.

Merci à tous les deux pour votre aide et surtout à Pierrot.

Bonne journée à tous
 

hook85

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

je viens de tester avec
Code:
Application.DisplayAlerts = False
avant l'Open.

Ma macro a été en mesure de fermer le classeur B sans souci.

Merci à tous les deux pour votre aide et surtout à Pierrot.

Bonne journée à tous

En fait j'ai parlé trop vite.
le fichier qui s'est fermé, est celui qui aurait du resté ouvert.
 

hook85

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

en fait j'ai docVersion qui est à fermer et docArchive a conserver ouvert.

les deux variables doc* sont définies comme ca :
Code:
Public DocVersion   As String
Public DocArchive   As String

et avant le close j'ai :
Code:
Workbooks(ThisWorkbook.DocVersion).Activate
 

Pierrot93

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

Re,

la solution proposé à 11h52 devrait correspondre alors.... à condition bien sur que le classeur en question soit ouvert et que ta variable est convenablement initialisée...
 

hook85

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

tout est comme il le faut.

Comme précisé dans le 1r post, cela fonctionne pour un autre format de fichier (classeur C).
Par contre j'ai oublié de préciser que le classeur B était bourré de MACRO dont je n'ai pas les accès.
 

Discussions similaires

Réponses
1
Affichages
325

Statistiques des forums

Discussions
312 295
Messages
2 086 956
Membres
103 404
dernier inscrit
sultan87