fermer classeurA qui ouvre classeur B par classeur B

thivame

XLDnaute Junior
bonjour
encore une fois je fais appelle a vous...
Voila j'ai deux classeurs:
classeur 1 s'appelle "lanceur"
classeur 2 : suivi de stage

dans le classeur 1 j'ai une macro qui lance le classeur 2:

Private Sub CommandButton1_Click()
Application.Workbooks.Open ThisWorkbook.Path & "\suivi de stage"
Workbooks("suivi de stage").Activate
End Sub

l pas de soucis, lorsque mon classeur suivi de stage s'ouvre j' ai un userform qui se lance automatiquement.. et je voudrais que "lanceur" se ferme en meme temps...
j'ai mis ce code mais ca ne marche pas

Private Sub Workbook_Open()

'masquer le menu(en plein ecran)
Application.DisplayFullScreen = True
Application.DisplayFormulaBar = False
ActiveWindow.DisplayHorizontalScrollBar = True
'masquer onglet
ActiveWindow.DisplayWorkbookTabs = True

CancelSortie = True
Sheets("bienv").Visible = False

accueilB2.Show

Dim lWorkbook As Workbook
Dim lFound As Boolean

lFound = False
For Each lWorkbook In Workbooks
If lWorkbook.Name = "lanceur.xlsm" Then
lFound = True
Exit For
End If
Next
If lFound Then
Workbooks("lanceur.xlsm").Close false
End If

End Sub


j'ai essayé plusieurs mode de fermeture mais le seul moment ou "lanceur" se ferme est lorsque j’accède a un onglet de "suivi de stage " si j’accède juste a des userforms de "suivi de stage" ca ne ferme pas" lanceur"..

merci pour votre aide
cordialement

aucun avatar thivame
Membre habitué
Membre habitué

Messages: 68
Inscription: 21 Avr 2010, 22:51
Version Excel: 2007
 

camarchepas

XLDnaute Barbatruc
Re : fermer classeurA qui ouvre classeur B par classeur B

Bonsoir ,

C'est un truc qui ce mord la queue ,

pour moi , tu devrais passer par un micro fichier vbs pour lancer le 2 eme classeur sans bloquer le 1er .

un code du genre ;

'Ouverture du fichier excel
Set objExcel = CreateObject("Excel.Application" )
Set objWorkbook = objExcel.Workbooks.Open("chemin de mon fichier")
objExcel.Visible = True
'lancement de la macro dans le fichier excel ouvert
objExcel.run "MAJ_stats"

entré dans le bloc note par exemple , puis sauvegardé en vbs .

Ensuite dans ton fichier lance , s'il est encore utile

shell thisworkbook.path & "\Demarre.vbs"

voilà voili
 

thivame

XLDnaute Junior
Re : fermer classeurA qui ouvre classeur B par classeur B

bonjour camarchepas,
Etant novice dans le code, je n'ai pas tout compris vbs, je ne connais pas...
Donc j'essaye de traduire:
j'ouvre un document texte, ou je colle ton code. je l'enregistre en vbs.
Dans le classeur A je colle le code qui lance ce fichier qui va m'ouvrir le classeur A.
si c'est bien ca, vu que dans mon lanceur je vais avoir le choix de lancer le classeur b ou le classeur A, j'aurais juste besoin de recopier ce code en changeant le nom ou y a t il une seconde manip a suivre??
deplus sachant que ce fichier sera dans divers pc, dans vba on met: Application.Workbooks.Open ThisWorkbook.Path & "\suivi stage vierge"
comment traduire en vbs :ThisWorkbook.Path & "\suivi stage vierge"
merci par avance
 
Dernière édition:

thivame

XLDnaute Junior
Re : fermer classeurA qui ouvre classeur B par classeur B

merci camarche pas j'ai donc essayer ton code et remplacer : ThisWorkbook.Path & "\suivi stage vierge" par :strCurDir & "\suivi stage vierge" mais il me dit qu'il ne trouve pas snif
sachant qu'en vbs (premiere fois cette derniere minute)je ne connais pas je plane ...lol
 

camarchepas

XLDnaute Barbatruc
Re : fermer classeurA qui ouvre classeur B par classeur B

Bon ,


sans vouloir compliquer les choses si tu écris directement dans bloc note par exemple

'Ouverture du fichier excel
Set objExcel = CreateObject("Excel.Application" )
Set objWorkbook = objExcel.Workbooks.Open("c:\Appli_Excel\SaveCopyAs_Test.xlsm")
objExcel.Visible = True

ensuite tu sauvegardes en ouvre.vbs par exemple :

il faut remplacer dans le script "c:\Appli_Excel\SaveCopyAs_Test.xlsm" par le chemin du fichier à lancer .

Pour essai une fois le fichier enregistré, clic directement sur le fichier ouvre.vbs
 

thivame

XLDnaute Junior
Re : fermer classeurA qui ouvre classeur B par classeur B

re,
en fait je voudrait faire un "ThisWorkbook.Path" car ce fichier sera utilisé par plusieurs personnes sur plusieurs pc et donc c'est eux qui choisirons leur emplacement d'ou pour moi l'impossibilité de mettre un chemin precis.. en vba ca va je sais faire mais en vbs......
cordialement
 

camarchepas

XLDnaute Barbatruc
Re : fermer classeurA qui ouvre classeur B par classeur B

Est-ce que déjà comme cela ça fonctionne ?

allons y par étape , ensuite l'on peut passer un paramètre au fichier VBS, mais il faut déjà que cela fonctionne en mode simple , si le vbs ne fonctionne pas , l'on pourra aussi utiliser le .bat ( fichier de commande ms dos )
 

thivame

XLDnaute Junior
Re : fermer classeurA qui ouvre classeur B par classeur B

super
en cliquant sur le fichier vbs mon userform s'ouvre
donc maitenant si je comprends bien il faut que dans mon fichier "lanceur" j'integre la commande pour lancer le fichier ouvre

bon j'ai integré
Private Sub CommandButton1_Click()

Shell ThisWorkbook.Path & "\ouvre.vbs"
ThisWorkbook.Close False
End Sub
cela ne fonctionne pas
 

Staple1600

XLDnaute Barbatruc
Re : fermer classeurA qui ouvre classeur B par classeur B

Bonsoir à tous


Pourquoi ne tout simplement fermer le classeur A par le classeur A une fois le classeur B ouvert ?
Exemple (test OK ici)
VB:
Sub a()
Dim classA As Workbook
Set classA = ThisWorkbook
Workbooks.Open ThisWorkbook.Path & "\" & "ClassB.xls"
classA.Close False
End Sub
 

thivame

XLDnaute Junior
Re : fermer classeurA qui ouvre classeur B par classeur B

bonsoir,
J'ai essayé (pas avec ce code), et ca me lance mon userform du classeurB, mais mon classeur A ne se ferme pas.
J'ai essayé ce code, et j'ai le meme resultat.
Je vais décrire quelques symptomes qui pourrons peut etre aiguiller car moi ca fait 4 jours que je cherche
Symptôme lorsque je clique sur le bouton du classeurA cela ouvre bien mon userform du classeurB (je precise que l'ouverture du classeur B amene directement sur un userform d'accueil) si je n'utilise que les userforms de mon classeurB le classeurA ne se ferme pas.Par contre si j'ouvre un onglet sur le classeurB le classeurA se ferme.
J'ai donc fait un code pour ouvrir un onglet d'essai , et le classeurA ne se ferme pas, par contre si je l'ouvre manuellement il se ferme bien c pénible car ca oblige a acceder a un onglet meme si on n'a pas besoin d'y aller...

cordialement
 
Dernière édition:

thivame

XLDnaute Junior
Re : fermer classeurA qui ouvre classeur B par classeur B

@camarchepas: j'ai integré le code a un bouton du classeurA, et lorsque je clique dessur ca ne lance pas le .vbs il m'indique "argument ou appel de procédure incorrect
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 082
Membres
103 112
dernier inscrit
cuq-laet