OVH Cloud OVH Cloud

Probleme avec Workbooks.open

3 réponses
Avatar
pubdespierre
Bonjour à tous,
J'utilise Excel 2000 sous windows XP et j'ai un problème avec
l'instruction Workbooks.open, je lance le module suivant de "classeur
1" :

Public Sub OuvreSiPasOuvertDeals()

Dim chemin As String
' activer le fichier ==> sinon l'ouvrir
chemin = CheminDeals & NomDeals

If Not isOpen(chemin) Then Application.Workbooks.Open
Filename:=chemin

Workbooks(Dir$(chemin)).Activate
End Sub


Une fois sur deux le programme s'arrete après la ligne où se trouve
'Application.Workbooks.Open Filename:=chemin' en restant ouvert
bêtement sur le fameux classeur chemin ... Sans raison ... en oubliant
qu'il y encore du boulot à faire !

J'ai lu les posts précédents, certains semblent préconiser de bouger
'Application.EnableEvents' ... pas d'effet.

Que se passe-t-il ? existe t-il un remède ?

Merci à tous.

3 réponses

Avatar
FxM
Bonsoir,

Comment cette macro sait-elle ce qu'est "chemin" donc ce qu'est
"Chemindeals" et "Nomdeals" ?

if not ... jusqu'à :=chemin doivent se trouver sur une seule et même
ligne.

As-tu essayé en utilisant la gestion d'erreur ?
Public Sub OuvreSiPasOuvertDeals()
Dim chemin As String
' activer le fichier ==> sinon l'ouvrir
chemin = CheminDeals & NomDeals

on error resume next
windows(nomdeals).activate
if err > 0 then workbboks.open chemin
err.clear
on error goto 0
End sub

@+
FxM





Tixu Oty a écrit:

Bonjour à tous,
J'utilise Excel 2000 sous windows XP et j'ai un problème avec
l'instruction Workbooks.open, je lance le module suivant de "classeur
1" :

Public Sub OuvreSiPasOuvertDeals()

Dim chemin As String
' activer le fichier ==> sinon l'ouvrir
chemin = CheminDeals & NomDeals

If Not isOpen(chemin) Then Application.Workbooks.Open
Filename:=chemin

Workbooks(Dir$(chemin)).Activate
End Sub


Une fois sur deux le programme s'arrete après la ligne où se trouve
'Application.Workbooks.Open Filename:=chemin' en restant ouvert
bêtement sur le fameux classeur chemin ... Sans raison ... en oubliant
qu'il y encore du boulot à faire !

J'ai lu les posts précédents, certains semblent préconiser de bouger
'Application.EnableEvents' ... pas d'effet.

Que se passe-t-il ? existe t-il un remède ?

Merci à tous.


Avatar
pubdespierre
Oupsss ... 'CheminDeals' et 'NomDeals' sont deux variables globales,
correctement initialisées avant l'appel de la Sub. De plus, la
function IsOpen est définie comme :

Function isOpen(CheminComplet$) As Boolean
Dim Wbk As Workbook


On Error Resume Next
Set Wbk = Workbooks(Dir$(CheminComplet))

isOpen = Err = 0
Err.Clear

End Function

Donc a priori elle inclut la gestion d'erreur et fonctionne
correctement. J'ai l'impression que c'est le
'Application.Workbooks.open chemin' qui branche VBA sur le nouveau
classeur qui ne contient pas de module, et du coup s'arrête de bosser,
oubliant qu'il reste des trucs à faire ...

Strange ...
Avatar
FxM
Bonsoir,

Testé sous Excel 2000 - Win98, je n'aperçois aucun problème
particulier. Le fichier chemin s'ouvre bien, fait ses macros
auto_open. Je le referme ensuite manuellement.
Des ouvertures successives n'ont pas montré de pb.
Effectue la macrote en pas à pas (F8) pour voir. Là, je sèche !

@+
FxM


Tixu Oty a écrit:

Oupsss ... 'CheminDeals' et 'NomDeals' sont deux variables globales,
correctement initialisées avant l'appel de la Sub. De plus, la
function IsOpen est définie comme :

Function isOpen(CheminComplet$) As Boolean
Dim Wbk As Workbook


On Error Resume Next
Set Wbk = Workbooks(Dir$(CheminComplet))

isOpen = Err = 0
Err.Clear

End Function

Donc a priori elle inclut la gestion d'erreur et fonctionne
correctement. J'ai l'impression que c'est le
'Application.Workbooks.open chemin' qui branche VBA sur le nouveau
classeur qui ne contient pas de module, et du coup s'arrête de bosser,
oubliant qu'il reste des trucs à faire ...

Strange ...