pb gestion librairie de macro perso

fredl

XLDnaute Impliqué
Bonjour à tous,
j'ai un fichier excel 'bon de commande' qui fait reference à un fichier .xls (utilisé comme librairie de macro ). Ce dernier est donc utilisé ouvert, masqué, à chaque utilisation de mon bon de commande. Le bon de commande faisant appel aux macros qu'il contient.

Je souhaite, lors de la fermeture de mon fichier excel 'bon de commande' egalement fermer mon fichier .xls 'librairie de macro' .
Hors, reference oblige : , on ne peut fermer un fichier qui sert de reference à un autre fichier si ce dernier n'est pas fermé...
Je suis donc un peu embeté...

Qu'en pensez vous?

D'un point de vu plus général, quel est selon vous le moyen le plus simple d'associer une librairie de macro (qui contient du vba bien sur et des données dans des cellules) à un fichier 'bon de commande' de maniere à ce qu'il soit constament trensparent à l'utilisateur :
-qu'il s'ouvre automatiquement à l'ouverture du 'bon de commande'
-qu'il se ferme automatiquement à la fermeture du 'bon de commande' sans que soit demandé à l'utilisateur s'il souhaite enregistrer les modifications le concernant (message par défaut alors qu'aucune modif n'a été faite)

vraiment merci d'avance à tous pour vos réponses...

Cdt
fredl

:unsure:
 
F

fredl

Guest
Bonjour,
En fait, j'ai plusieurs bon de commandes différents qui font appel aux memes macros.(dans ma librairie)
Il m'est donc beaucoup plus pratique de faire évoluer mes macros puisque étant centralisées...Sinon, une modifs doit etre répercutée dans tous les bons de commande, et c'est lourd en gestion!...
Cela répond il à ta question?
Merci d'avance de ta réponse.
Excellement
Frédéric
 

Ashaar

XLDnaute Junior
Bonjour,
En farfouillant par ci par la, je suis tombé sur ce post.

Peut être qu'en passant par Application.Ontime ça pourrait marcher...

Prenons 1 fichier source.xls et un fichier dest.xls
dans le fichier dest.xls, on teste toutes les x sec ou x minutes si le fichier source est ouvert. S'il ne l'est pas, on ferme le classeur dest.xls.

ca donnerait ceci :

Sub StartTimer2()
Temps1 = Time
RunWhen = Now + TimeSerial(0, 0, 10)'ici toutes les 10 secondes.
Application.OnTime earliesttime:=RunWhen, procedure:='toto', _
schedule:=True
End Sub

Sub toto()
'on teste si le clasr source est toujours ouvert
Dim Wbk As Workbook
On Error Resume Next
Set Wbk = Workbooks('source.xls')
On Error GoTo 0
If Not Wbk Is Nothing Then
'si tj ouvert, on relance application.ontime
StartTimer2
Else
'sinon ben on ferme le clasr Dest sans l'enregistrer
ActiveWorkbook().Close False
End If
End Sub

'A placer dans This Workbook
'comme ça on lance la proc à l'ouverture, c plus simple...
'Private Sub Workbook_Open()
'StartTimer2
'End Sub
 

fredl

XLDnaute Impliqué
Bonjour Ashaar,
Tout d'abord, pardon pour ma réponse tardive (retour de vacances ce jour...1 mois)
je te remercie de ta proposition qui me semble etre une bonne idée Je vais la mettre en pratique de suite.

Encore merci.
Bonne journée
Cdt
frédéric
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz