VBA - à partir de classeur1 lancer un userform de classeur2 et fermer classeur1

juju_69

XLDnaute Occasionnel
Bonjour,

tout est dit :). Plus sérieusement, je lance un classeur1 et à l'ouverture je demande le lancement de classeur2 (qui ouvre un USF) et je veux ensuite fermer classeur1. çà parait pas très compliqué à faire mais hélas j'ai tourné çà dans tous les sens il y a toujours un truc qui bloque. J'ai tenté avec un wait, en fermant le classeur dans un événement, en fermant le 1 à partir du 2 (le classeur 1 ne se ferme pas, la usf ne s'ouvre pas, le classeur ne s'ouvre pas...).
Si vous avez une idée, le dernier test était d'ouvrir le classeur dans le before close du 1 mais a le classeur ne s'ouvre même pas :confused:

Merci bcp pour votre aide

Juju
 

Pièces jointes

  • USF.zip
    16.9 KB · Affichages: 41
  • USF.zip
    16.9 KB · Affichages: 36
  • USF.zip
    16.9 KB · Affichages: 40

job75

XLDnaute Barbatruc
Re : VBA - à partir de classeur1 lancer un userform de classeur2 et fermer classeur1

Bonjour juju_69,

Pas compris pourquoi vous voulez vous compliquer la vie :

Code:
Private Sub Workbook_Open()
Dim FICH$
FICH = ThisWorkbook.Path & "\USF.xls"
Workbooks.Open Filename:=FICH
ThisWorkbook.Close SaveChanges:=False
End Sub

A+
 

Pièces jointes

  • USF(1).zip
    16.5 KB · Affichages: 33

nyko283

XLDnaute Occasionnel
Re : VBA - à partir de classeur1 lancer un userform de classeur2 et fermer classeur1

Bonjour juju, Bonjour le forum,

Alors tu peut essayer en mettant ce bout de code dans ta macro Workbook_open de ton classeur1
Dim xlapp As New Excel.Application
Dim xlwor As Excel.Workbook
Set xlapp = CreateObject("Excel.Application")
xlapp.Visible = False
ChDir ThisWorkbook.Path
' ouverture du fichier
xlapp.Workbooks.Open Filename:= _
ThisWorkbook.Path & "\Classeur2.xls"
ThisWorkbook.Saved = True

If Workbooks.Count > 1 Then
ThisWorkbook.Close
Else
Application.Quit
end if



puis dans ta macro Workbook_open de ton classeur 2 tu met le code suivant
Application.Visible = TRUE
Application.OnTime Now + TimeValue("00:00:1"), "MONACCUEIL"
MONACCEUIL EST UNE PROCEDURE QUI LANCE MON USERFORM
CE CODE TE PERMET D'OUVRIR LE CLASSEUR2 DANS UNE NOUVELLE SESSION EXCEL
SI TU PREFERE RESTER DANS LA MEME SESSION REMPLACE TOUT LE CODE DU CLASSEUR 1 PAR UNE OUVERTURE CLASSIQUE DE WORKBOOK : wORKBOOKS.OPEN Filename....

mon code suppose que le classeur 1 et 2 se trouve dans le meme repertoire

Cela correspond t'il a tes attentes?
 

Staple1600

XLDnaute Barbatruc
Re : VBA - à partir de classeur1 lancer un userform de classeur2 et fermer classeur1

Bonjour à tous

Job75
Pour continuer à se décompliquer la vie ;)

VB:
Private Sub Workbook_Open()
Workbooks.Open ThisWorkbook.Path & "\USF.xls"
ThisWorkbook.Close False
End Sub
 

job75

XLDnaute Barbatruc
Re : VBA - à partir de classeur1 lancer un userform de classeur2 et fermer classeur1

Re,

Et si vous voulez fermer immédiatement le fichier Menu(1).xls, ouvrez l'USF en non modal :

Code:
Private Sub Workbook_Open()
USF_Liste.Show 0 'vbModeless
End Sub

Edit : salut nyko, salut Jean-Marie :)

A+
 

Pièces jointes

  • USF(2).zip
    18.7 KB · Affichages: 31
Dernière édition:

job75

XLDnaute Barbatruc
Re : VBA - à partir de classeur1 lancer un userform de classeur2 et fermer classeur1

Re,

Pas compris pourquoi nyko283 veut ouvrir une autre session Excel mais bon...

Mais en effet il suffit de faire ouvrir l'USF (en mode Modal) par :

Code:
Private Sub Workbook_Open()
Application.OnTime Now, "Ouvre"
End Sub

A+
 

Pièces jointes

  • USF(3).zip
    19.5 KB · Affichages: 47

juju_69

XLDnaute Occasionnel
Re : VBA - à partir de classeur1 lancer un userform de classeur2 et fermer classeur1

Hello,

Effectivement je n'avais pas précisé que je souhaitais que le fichier menu se ferme dès l'ouverture du Userform et j'ai oublié aussi de préciser que le Usf était obligatoirement en ShowModal = true

Du coup, j'ai testé et la dernière proposition "Application.OnTime Now, "Ouvre"" fonctionne comme je le souhaite. Merci à tous pour votre aide ;)

Bonne soirée à tous

Juju
 

nyko283

XLDnaute Occasionnel
Re : VBA - à partir de classeur1 lancer un userform de classeur2 et fermer classeur1

Bonjour à tous,

Si j'ai proposé le code avec une ouverture de session excel suplémentaire, c'est que j'avais le même problème et en plus je voulais que même si l'Userform était ouvert, que je puisse continuer à me servir d'autres fichier Excel, déjà ouvert ou en ouvrir d'autres.

Mais j'avais quand même précisé le code pour une ouverture dans la même session.

Bonne journée a vous
 

phaeton21

XLDnaute Nouveau
Re : VBA - à partir de classeur1 lancer un userform de classeur2 et fermer classeur1

Bonjour à tous,

Comme juju_69, je rencontre une difficulté avec des ouvertures multiples de classeur.

J'ai un premier classeur comportant un userform qui se lance à l'ouverture. Ce userform me permet de lancer un deuxième classeur qui se trouve dans un sous dossier et qui comporte lui aussi un userform qui se lance à l'ouverture.

Quand je lance mon premier classeur Outils.xls, son userform s'ouvre bien.
Il me permet de choisir le dossier dans lequel se trouve mon classeur 2 par une ComboBox.

Private Sub CommandButton1_Click()
If Accueil.ComboBox1 <> "" Then
Workbooks.Open Filename:=(ThisWorkbook.Path & "\" & ComboBox1 & "\" & "monfichier.xls")
End If
End Sub


Je sélectionne mon second classeur à ouvrir, celui s'ouvre bien et une commande Close referme le premier classeur.

Private Sub Workbook_Open()
On Error Resume Next
Workbooks("Outils.xls").Close savechanges:=False
Accueil2.Show
End Sub


Seulement voilà, alors que mon second classeur s'ouvre bien, son userform Accueil2 lui ne s'ouvre pas.

Qu'est qu'il manque pour forcer l'ouverture du Userform Accueil2 ?
Est-ce un problème de chemin , les deux fichiers n'étant pas dans le même dossier ?
Merci d'avance pour vos réponses.

Pat.
 
Dernière édition:

phaeton21

XLDnaute Nouveau
Re : VBA - à partir de classeur1 lancer un userform de classeur2 et fermer classeur1

Je me réponds à moi même, ce n'était finalement pas si compliqué, mais je ne sais pas pourquoi, j'y ai passé deux heures à le faire fonctionner.

J'ai en fait repris le code de job75 (loué soit le seigneur :) dans lequel j'ai ajouté le mien. La solution était donc :


Private Sub CommandButton1_Click()
Dim FICH$
If Accueil1.ComboBox1 <> "" Then
FICH = (ThisWorkbook.Path & "\" & ComboBox1 & "\" & "monfichier.xls")
Workbooks.Open Filename:=FICH
ThisWorkbook.Close SaveChanges:=False
End If
End Sub

et dans mon second classeur

Private Sub Workbook_Open()
Accueil2.Show 0 'vbModeless
End Sub

Plus qu'à faire la même chose dans l'autre sens pour revenir au premier classeur, et tout est impec.

Un GRAND GRAND MERCI à tous.

Pat
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 581
Messages
2 089 916
Membres
104 305
dernier inscrit
EDIT