Je sais pas si c'est possible, mais je souhaiterai que l'on ne puisse ouvrir 2 classeurs spécifiques simultanément, je m'explique
J'ai 2 classeurs A et un Classeur B, ils sont fermés
exemple :
A est ouvert, je souhaite aussi ouvrir B, lorsque je clique sur B pour l'ouvrir, avant de s'ouvrir un mgbox s'affiche et me demande si je veux vraiment ouvrir le Classeur B,
si je répond oui : alors il ferme le classeur A sans enregistrer les modifications et ouvre B,
si je répond non : la procédure d'ouverture de B est annulée on revient sur A
et inversement B est ouvert que je décide d'ouvrir A
Private Sub Workbook_Open()
Dim wk As Workbook
On Error Resume Next
Set wk = Workbooks("B.xlsm")
On Error GoTo 0
If Not wk Is Nothing Then
If MsgBox("B est ouvert" & vbCrLf & vbCrLf & "Fermer B et ouvrir A ?", vbOKCancel) = vbOK Then
wk.Close False
Else
ThisWorkbook.Close
End If
End If
End Sub
La même chose dans B.xlsm, avec les noms changés :
Code:
Private Sub Workbook_Open()
Dim wk As Workbook
On Error Resume Next
Set wk = Workbooks("A.xlsm")
On Error GoTo 0
If Not wk Is Nothing Then
If MsgBox("A est ouvert" & vbCrLf & vbCrLf & "Fermer A et ouvrir B ?", vbOKCancel) =...
Si A et B ont des noms fixés, on peut imaginer un évènement stocké dans Workbook_Open de chacun des deux classeurs.
A l'ouverture, on teste si "A.xlsx" est ouvert depuis B, ou inversement. Si l'autre est ouvert, on ouvre une InputBox qui propose soit de fermer l'un, soit de fermer l'autre.
Private Sub Workbook_Open()
Dim wk As Workbook
On Error Resume Next
Set wk = Workbooks("B.xlsm")
On Error GoTo 0
If Not wk Is Nothing Then
If MsgBox("B est ouvert" & vbCrLf & vbCrLf & "Fermer B et ouvrir A ?", vbOKCancel) = vbOK Then
wk.Close False
Else
ThisWorkbook.Close
End If
End If
End Sub
La même chose dans B.xlsm, avec les noms changés :
Code:
Private Sub Workbook_Open()
Dim wk As Workbook
On Error Resume Next
Set wk = Workbooks("A.xlsm")
On Error GoTo 0
If Not wk Is Nothing Then
If MsgBox("A est ouvert" & vbCrLf & vbCrLf & "Fermer A et ouvrir B ?", vbOKCancel) = vbOK Then
wk.Close False
Else
ThisWorkbook.Close
End If
End If
End Sub
autrement la grosse artillerie avec module de classe application dans un classeur maître qui gèrera les deux autres.
Bonjour
un problème dans ta description: tu dis vouloir ouvrir 2 classeurs "Simultanément" et ensuite, tu décris pour n'en avoir qu'un seul d'ouvert...
en supposant que tu aies 2 classeurs: Classeur1.xlsm et Classeur2.xlsm
code à mettre dans le thisworkbook du classeur 1
VB:
Private Sub Workbook_Open()
For Each wb In Application.Workbooks
If wb.Name = "Classeur2.xlsm" Then
If MsgBox("le classeur 2 est déjà ouvert, souhaitez vous ouvrir quand meme?", vbYesNo) = vbYes Then
wb.Close savechanges:=False
Else
ActiveWorkbook.Close
End If
End If
Next wb
End Sub
et
code à mettre dans le thisworkbook du classeur
VB:
Private Sub Workbook_Open()
For Each wb In Application.Workbooks
If wb.Name = "Classeur1.xlsm" Then
If MsgBox("le classeur 1 est déjà ouvert, souhaitez vous ouvrir quand meme?", vbYesNo) = vbYes Then
wb.Close savechanges:=False
Else
ActiveWorkbook.Close
End If
End If
Next wb
End Sub
Bonjour
un problème dans ta description: tu dis vouloir ouvrir 2 classeurs "Simultanément" et ensuite, tu décris pour n'en avoir qu'un seul d'ouvert...
en supposant que tu aies 2 classeurs: Classeur1.xlsm et Classeur2.xlsm
code à mettre dans le thisworkbook du classeur 1
VB:
Private Sub Workbook_Open()
For Each wb In Application.Workbooks
If wb.Name = "Classeur2.xlsm" Then
If MsgBox("le classeur 2 est déjà ouvert, souhaitez vous ouvrir quand meme?", vbYesNo) = vbYes Then
wb.Close savechanges:=False
Else
ActiveWorkbook.Close
End If
End If
Next wb
End Sub
et
code à mettre dans le thisworkbook du classeur
VB:
Private Sub Workbook_Open()
For Each wb In Application.Workbooks
If wb.Name = "Classeur1.xlsm" Then
If MsgBox("le classeur 1 est déjà ouvert, souhaitez vous ouvrir quand meme?", vbYesNo) = vbYes Then
wb.Close savechanges:=False
Else
ActiveWorkbook.Close
End If
End If
Next wb
End Sub
Bonsoir, non j'ai bien précisé ne pouvoir ouvrir qu'un classeur à la fois dans le titre
Bonjour Le forum,
Je sais pas si c'est possible, mais je souhaiterai que l'on ne puisse ouvrir 2 classeurs spécifiques simultanément
aux autres intervenants du fil. c'est moi ou je me suis toujours trompé sur la définition de SIMULTANEMENT (en MEME TEMPS) ??
si je répond oui : alors il ferme le classeur A sans enregistrer les modifications et ouvre B, ===> RESULTAT: UN SEUL FICHIER OUVERT: le B
si je répond non : la procédure d'ouverture de B est annulée on revient sur A===> RESULTAT: UN SEUL FICHIER OUVERT: le A
Genre.. il a tout compris LUI...
ce qui me laisser pense que tu n'as pas pris la peine de tester ma proposition en post 4 qui fait la meme chose qu'Hasco ( que je salue au passage)
ce que TU n'as pas compris, c'est que ta demande est incohérente.
vgendron un peu d'indulgence pour les nuls , c'est vrai qu' au lieu "d'ouvrir simultanément" il fallait que je dise "utiliser en même temps" , je suis profondément désolé que ca te mette en rogne,
Et moi je suis désolé que tu ne sois pas capable de comprendre que ce que tu décris comme besoin est antinomique. Mais comme ici, il s'agit d'un forum Excel, et pas sur la langue Française, on va arrêter là.
la solution apportée te convient. tant mieux.