ouverture conditionnelle d'un classeur

Le
Serge Nazarian
Bonjour,

J'ai écrit le code suivant (comme partie d'une plus grosse macro).
Le but est d'ouvrir le classeur G:Mes documentsazarian.xls, s'il n'est
pas déjà ouvert, et de sélectionner une cellule donnée.

*******************
Dim Worbk As Workbook
On Error Resume Next
Set Worbk = Workbooks("nazarian.xls")
If Err <> 0 Then
Workbooks.Open Filename:="G:Mes documentsazarian.xls"
Else
Set Worbk = Nothing
Windows("nazarian.xls").Activate
End If
Range("A2").Select
*******************


Si le classeur n'est pas déjà ouvert, cela fonctionne parfaitement.
Par contre, s'il est déjà ouvert, apparaît le message :

nazarian.xls est déjà ouvert. Si vous l'ouvrez à nouveau, toutes vos
modifications seront perdues.
Voulez-vous rouvrir nazarian.xls?
OUI NON

Comment éviter cette perte des modifications antérieures ?

Merci pour toute aide.
Cordialement,
--
Serge Nazarian
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #22110211
Bonjour.
Mets :

Dim Worbk As Workbook
On Error Resume Next
Set Worbk = Workbooks("nazarian.xls")
If Err.Number <> 0 Then
Workbooks.Open Filename:="G:Mes documentsnazarian.xls"
Err.Clear
On Error GoTo 0
Else
Set Worbk = Nothing
Windows("nazarian.xls").Activate
End If
Range("A2").Select

Daniel

Bonjour,

J'ai écrit le code suivant (comme partie d'une plus grosse macro).
Le but est d'ouvrir le classeur G:Mes documentsnazarian.xls, s'il n'est pas
déjà ouvert, et de sélectionner une cellule donnée.

*******************
Dim Worbk As Workbook
On Error Resume Next
Set Worbk = Workbooks("nazarian.xls")
If Err <> 0 Then
Workbooks.Open Filename:="G:Mes documentsnazarian.xls"
Else
Set Worbk = Nothing
Windows("nazarian.xls").Activate
End If
Range("A2").Select
*******************


Si le classeur n'est pas déjà ouvert, cela fonctionne parfaitement.
Par contre, s'il est déjà ouvert, apparaît le message :

nazarian.xls est déjà ouvert. Si vous l'ouvrez à nouveau, toutes vos
modifications seront perdues.
Voulez-vous rouvrir nazarian.xls?
OUI NON

Comment éviter cette perte des modifications antérieures ?

Merci pour toute aide.
Cordialement,
Serge Nazarian
Le #22110201
Dans le message :OX%,
Daniel.C
Bonjour.
Mets :

Dim Worbk As Workbook
On Error Resume Next
Set Worbk = Workbooks("nazarian.xls")
If Err.Number <> 0 Then
Workbooks.Open Filename:="G:Mes documentsnazarian.xls"
Err.Clear
On Error GoTo 0
Else
Set Worbk = Nothing
Windows("nazarian.xls").Activate
End If
Range("A2").Select

Daniel

Bonjour,

J'ai écrit le code suivant (comme partie d'une plus grosse macro).
Le but est d'ouvrir le classeur G:Mes documentsnazarian.xls, s'il
n'est pas déjà ouvert, et de sélectionner une cellule donnée.

*******************
Dim Worbk As Workbook
On Error Resume Next
Set Worbk = Workbooks("nazarian.xls")
If Err <> 0 Then
Workbooks.Open Filename:="G:Mes documentsnazarian.xls"
Else
Set Worbk = Nothing
Windows("nazarian.xls").Activate
End If
Range("A2").Select
*******************


Si le classeur n'est pas déjà ouvert, cela fonctionne parfaitement.
Par contre, s'il est déjà ouvert, apparaît le message :

nazarian.xls est déjà ouvert. Si vous l'ouvrez à nouveau, toutes vos
modifications seront perdues.
Voulez-vous rouvrir nazarian.xls?
OUI NON

Comment éviter cette perte des modifications antérieures ?

Merci pour toute aide.
Cordialement,





Merci pour cette prompte réponse.
Malheureusement, mais cela ne marche pas.

Cordialement,
--
Serge Nazarian
Daniel.C
Le #22110411
Peux-tu préciser "ce qui ne marche pas", quelle ligne, quelle erreur...
Daniel

Dans le message :OX%,
Daniel.C
Bonjour.
Mets :

Dim Worbk As Workbook
On Error Resume Next
Set Worbk = Workbooks("nazarian.xls")
If Err.Number <> 0 Then
Workbooks.Open Filename:="G:Mes documentsnazarian.xls"
Err.Clear
On Error GoTo 0
Else
Set Worbk = Nothing
Windows("nazarian.xls").Activate
End If
Range("A2").Select

Daniel

Bonjour,

J'ai écrit le code suivant (comme partie d'une plus grosse macro).
Le but est d'ouvrir le classeur G:Mes documentsnazarian.xls, s'il
n'est pas déjà ouvert, et de sélectionner une cellule donnée.

*******************
Dim Worbk As Workbook
On Error Resume Next
Set Worbk = Workbooks("nazarian.xls")
If Err <> 0 Then
Workbooks.Open Filename:="G:Mes documentsnazarian.xls"
Else
Set Worbk = Nothing
Windows("nazarian.xls").Activate
End If
Range("A2").Select
*******************


Si le classeur n'est pas déjà ouvert, cela fonctionne parfaitement.
Par contre, s'il est déjà ouvert, apparaît le message :

nazarian.xls est déjà ouvert. Si vous l'ouvrez à nouveau, toutes vos
modifications seront perdues.
Voulez-vous rouvrir nazarian.xls?
OUI NON

Comment éviter cette perte des modifications antérieures ?

Merci pour toute aide.
Cordialement,





Merci pour cette prompte réponse.
Malheureusement, mais cela ne marche pas.

Cordialement,
Serge Nazarian
Le #22110571
Dans le message :u%,
Daniel.C
Peux-tu préciser "ce qui ne marche pas", quelle ligne, quelle
erreur... Daniel



La ligne

Workbooks.Open Filename:="G:Mes documentsnazarian.xls"

conduit au message :
nazarian.xls est déjà ouvert. Si vous l'ouvrez à nouveau, toutes vos
modifications seront perdues.
Voulez-vous rouvrir nazarian.xls?
OUI NON

C'est à dire que la modification proposée ne modifie pas le comportement de
la macro.

Cordialement,
--
Serge Nazarian
Serge Nazarian
Le #22110711
Dans le message :u%,
Daniel.C
Peux-tu préciser "ce qui ne marche pas", quelle ligne, quelle
erreur... Daniel



En réalité, que le fichier soit ouvert ou non, on passe toujours par le Then
[ Workbooks.Open Filename:="G:Mes documentsnazarian.xls" ]
et jamais par le Else
[ Set Worbk = Nothing
Windows("snazarian_mvt_pea.xls").Activate ]

Cordialement,
--
Serge Nazarian
Daniel.C
Le #22110921
Plutôt :
If Err.Number <> 0 Then
Daniel

par

Set Worbk = Workbooks("nazarian.xls")
If Worbk Is Nothing Then


Dans le message :u%,
Daniel.C
Peux-tu préciser "ce qui ne marche pas", quelle ligne, quelle
erreur... Daniel



En réalité, que le fichier soit ouvert ou non, on passe toujours par le Then
[ Workbooks.Open Filename:="G:Mes documentsnazarian.xls" ]
et jamais par le Else
[ Set Worbk = Nothing
Windows("snazarian_mvt_pea.xls").Activate ]

Cordialement,
Daniel.C
Le #22111221
Le copier/coller fou a encore frappé; lire :
Plutôt :
If Err.Number <> 0 Then
Daniel


Plutôt :
If Err.Number <> 0 Then
Daniel

par

Set Worbk = Workbooks("nazarian.xls")
If Worbk Is Nothing Then


Dans le message :u%,
Daniel.C
Peux-tu préciser "ce qui ne marche pas", quelle ligne, quelle
erreur... Daniel



En réalité, que le fichier soit ouvert ou non, on passe toujours par le
Then
[ Workbooks.Open Filename:="G:Mes documentsnazarian.xls" ]
et jamais par le Else
[ Set Worbk = Nothing
Windows("snazarian_mvt_pea.xls").Activate ]

Cordialement,
michdenis
Le #22111301
Bonjour,

Une autre façon de faire :

Une façon de faire, utiliser une fonction personnalisé :

Exemple:
'-------------------------------------
Sub test()

Dim Fichier As String, Chemin As String
Dim Wk As Workbook

Fichier = "NomDuFichier.xls"
Chemin = "C:Chemin où est le fichier"

If OpenFile(Fichier) = False Then
Set Wk = Workbooks.Open(Chemin & Fichier)
Else
Set Wk = Workbooks(Fichier)
End If

'pour le reste du code, tu utilise la variable
'Wk pour faire référence à ce classeur comme dans :
x = Wk.Worksheets("Feuil1").Range("A1")
End Sub
'-------------------------------------
Function OpenFile(Fichier As String) As Boolean
On Error Resume Next
Set File = Workbooks(Fichier)
If Err = 0 Then OpenFile = True
End Function
'-------------------------------------





"Serge Nazarian" 4bebb0bf$0$21957$
Bonjour,

J'ai écrit le code suivant (comme partie d'une plus grosse macro).
Le but est d'ouvrir le classeur G:Mes documentsnazarian.xls, s'il n'est
pas déjà ouvert, et de sélectionner une cellule donnée.

*******************
Dim Worbk As Workbook
On Error Resume Next
Set Worbk = Workbooks("nazarian.xls")
If Err <> 0 Then
Workbooks.Open Filename:="G:Mes documentsnazarian.xls"
Else
Set Worbk = Nothing
Windows("nazarian.xls").Activate
End If
Range("A2").Select
*******************


Si le classeur n'est pas déjà ouvert, cela fonctionne parfaitement.
Par contre, s'il est déjà ouvert, apparaît le message :

nazarian.xls est déjà ouvert. Si vous l'ouvrez à nouveau, toutes vos
modifications seront perdues.
Voulez-vous rouvrir nazarian.xls?
OUI NON

Comment éviter cette perte des modifications antérieures ?

Merci pour toute aide.
Cordialement,
--
Serge Nazarian
Serge Nazarian
Le #22111801
Dans le message :4bebb0bf$0$21957$,
Serge Nazarian
Bonjour,

J'ai écrit le code suivant (comme partie d'une plus grosse macro).
Le but est d'ouvrir le classeur G:Mes documentsnazarian.xls, s'il
n'est pas déjà ouvert, et de sélectionner une cellule donnée.

*******************
Dim Worbk As Workbook
On Error Resume Next
Set Worbk = Workbooks("nazarian.xls")
If Err <> 0 Then
Workbooks.Open Filename:="G:Mes documentsnazarian.xls"
Else
Set Worbk = Nothing
Windows("nazarian.xls").Activate
End If
Range("A2").Select
*******************


Si le classeur n'est pas déjà ouvert, cela fonctionne parfaitement.
Par contre, s'il est déjà ouvert, apparaît le message :

nazarian.xls est déjà ouvert. Si vous l'ouvrez à nouveau, toutes vos
modifications seront perdues.
Voulez-vous rouvrir nazarian.xls?
OUI NON

Comment éviter cette perte des modifications antérieures ?

Merci pour toute aide.
Cordialement,



Merci à tous ceux qui m'ont répondu.
J'ai finalement opté pour le code suivant (test inversé) qui fonctionne,
mais d'autres solutions sont possibles, dont celle de michdenis,
certainement plus propre.

On Error Resume Next
Windows("nazarian.xls").Activate
If Err.Number <> 0 Then
Workbooks.Open Filename:="G:Mes documentsnazarian.xls"
Err.Clear
Else
Set Worbk = Nothing
End If

Cordialement,
--
Serge Nazarian
Publicité
Poster une réponse
Anonyme