OVH Cloud OVH Cloud

3sec d'attente puis passe à la suite

6 réponses
Avatar
DENIS
Bonjour à tous,

L'instruction ci-dessous donne une attente de 3 secondes puis réessaye
d'acceder au fichier "base BU CDG.xls".
Tout fonctionne très bien. Mais cette macro pour le moment est faite
pour le cas ou ce fichier ne soit pas disponible pour un très court
instant. Par contre, dans l'hypothèse ou ce fichier ne serait pas du
tout disponible à cause d'un plantage serveur, comment lui spécifier en
fait d'essayer d'acceder au fichier "base BU CDG.xls" au bout de 3
secondes mais si cela s'avère infructieux au bout de 3 essais, de passer
à la suite de l'instruction à, "suite:"


'En tête de module
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 3 ' 2secondes
Public Const cRunWhat = "macro1" 'nom de l'instruction à exécuter

Sub macro1()
'si le répertoire P:\ n'existe plus momentanement
On Error GoTo attente

ChDir "P:\EQUIPEMENT"
Workbooks.Open Filename:="P:\EQUIPEMENT\base BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:\

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette instructions dès lors qu'au bout
de
'3 essais d'ouverture de ("base BU CDG.xls") ne passe pas et signifirait
un plantage serveur et
'non pas que le fichier soit en cours d'utilisation. (il ne reste pas
ouvert plus de 2secondes par traitement)
Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
Collection.Hide
Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation par un
autre utilisateur, veuillez patienter"

RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat

End Sub

6 réponses

Avatar
LSteph
Bonsoir,
Si tu gardais ton fil pécédent!?

"DENIS" a écrit dans le message de news:

Bonjour à tous,

L'instruction ci-dessous donne une attente de 3 secondes puis réessaye
d'acceder au fichier "base BU CDG.xls".
Tout fonctionne très bien. Mais cette macro pour le moment est faite
pour le cas ou ce fichier ne soit pas disponible pour un très court
instant. Par contre, dans l'hypothèse ou ce fichier ne serait pas du
tout disponible à cause d'un plantage serveur, comment lui spécifier en
fait d'essayer d'acceder au fichier "base BU CDG.xls" au bout de 3
secondes mais si cela s'avère infructieux au bout de 3 essais, de passer
à la suite de l'instruction à, "suite:"


'En tête de module
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 3 ' 2secondes
Public Const cRunWhat = "macro1" 'nom de l'instruction à exécuter

Sub macro1()
'si le répertoire P: n'existe plus momentanement
On Error GoTo attente

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette instructions dès lors qu'au bout
de
'3 essais d'ouverture de ("base BU CDG.xls") ne passe pas et signifirait
un plantage serveur et
'non pas que le fichier soit en cours d'utilisation. (il ne reste pas
ouvert plus de 2secondes par traitement)
Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
Collection.Hide
Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation par un
autre utilisateur, veuillez patienter"

RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat

End Sub




Avatar
michdenis
Bonjour Denis,

Essaie ceci :

'--------------------------------
Sub macro1()

Static X As Integer
'si le répertoire P: n'existe plus momentanement
On Error GoTo attente

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette
'instructions dès lors qu'au bout de
'3 essais d'ouverture de ("base BU CDG.xls")
'ne passe pas et signifirait un plantage serveur
'et non pas que le fichier soit en cours d'utilisation.
'(il ne reste pas ouvert plus de 2secondes par traitement)

Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
' Collection.Hide
' Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation" & _
vbCrLf & "par un autre utilisateur, veuillez patienter"


RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat
X = X + 1
If X > 2 Then
Resume Suite
X = 0
End If

End Sub
'--------------------------------



Salutations!






"DENIS" a écrit dans le message de news:
Bonjour à tous,

L'instruction ci-dessous donne une attente de 3 secondes puis réessaye
d'acceder au fichier "base BU CDG.xls".
Tout fonctionne très bien. Mais cette macro pour le moment est faite
pour le cas ou ce fichier ne soit pas disponible pour un très court
instant. Par contre, dans l'hypothèse ou ce fichier ne serait pas du
tout disponible à cause d'un plantage serveur, comment lui spécifier en
fait d'essayer d'acceder au fichier "base BU CDG.xls" au bout de 3
secondes mais si cela s'avère infructieux au bout de 3 essais, de passer
à la suite de l'instruction à, "suite:"


'En tête de module
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 3 ' 2secondes
Public Const cRunWhat = "macro1" 'nom de l'instruction à exécuter

Sub macro1()
'si le répertoire P: n'existe plus momentanement
On Error GoTo attente

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette instructions dès lors qu'au bout
de
'3 essais d'ouverture de ("base BU CDG.xls") ne passe pas et signifirait
un plantage serveur et
'non pas que le fichier soit en cours d'utilisation. (il ne reste pas
ouvert plus de 2secondes par traitement)
Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
Collection.Hide
Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation par un
autre utilisateur, veuillez patienter"

RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat

End Sub
Avatar
LSteph
voici ce que je te répondais:
Bonjour,

Mets ton test d'ouverture de fichier en début de macro
enlève les deux points après goto attente
vire le goto suite inutile
mets ta routine erreur en fin de macro,cette fois avec les deux points
L'exit sub sortira si le code a été exécuté correctement ainsi:
.....
On Error GoTo attente
'icil'ouverture
'icila suite de la macro
.....
exit sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre
end sub

'lSteph

"DENIS" a écrit dans le message de news:

Bonjour à tous,

L'instruction ci-dessous donne une attente de 3 secondes puis réessaye
d'acceder au fichier "base BU CDG.xls".
Tout fonctionne très bien. Mais cette macro pour le moment est faite
pour le cas ou ce fichier ne soit pas disponible pour un très court
instant. Par contre, dans l'hypothèse ou ce fichier ne serait pas du
tout disponible à cause d'un plantage serveur, comment lui spécifier en
fait d'essayer d'acceder au fichier "base BU CDG.xls" au bout de 3
secondes mais si cela s'avère infructieux au bout de 3 essais, de passer
à la suite de l'instruction à, "suite:"


'En tête de module
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 3 ' 2secondes
Public Const cRunWhat = "macro1" 'nom de l'instruction à exécuter

Sub macro1()
'si le répertoire P: n'existe plus momentanement
On Error GoTo attente

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette instructions dès lors qu'au bout
de
'3 essais d'ouverture de ("base BU CDG.xls") ne passe pas et signifirait
un plantage serveur et
'non pas que le fichier soit en cours d'utilisation. (il ne reste pas
ouvert plus de 2secondes par traitement)
Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
Collection.Hide
Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation par un
autre utilisateur, veuillez patienter"

RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat

End Sub




Avatar
DENIS
Bonsoir,

J'ai essayé et en rajoutant en début de module :
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 3 ' 2secondes
Public Const cRunWhat = "macro1" 'nom de l'instruction à exécuter

mais, au bout de 3 fois de : (en admetant que le fichier "base BU CDG.xls"
ne soit pas du tout accessible)
'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation" & _
vbCrLf & "par un autre utilisateur, veuillez patienter"

La boucle ne s'arrete plus et un ctrl alt sup est necessaire alors qu'elle
devrait juste faire ceci.
Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
' Collection.Hide
' Unload Collection
ActiveWorkbook.Save

Denis



Bonjour Denis,

Essaie ceci :

'--------------------------------
Sub macro1()

Static X As Integer
'si le répertoire P: n'existe plus momentanement
On Error GoTo attente

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette
'instructions dès lors qu'au bout de
'3 essais d'ouverture de ("base BU CDG.xls")
'ne passe pas et signifirait un plantage serveur
'et non pas que le fichier soit en cours d'utilisation.
'(il ne reste pas ouvert plus de 2secondes par traitement)

Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
' Collection.Hide
' Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation" & _
vbCrLf & "par un autre utilisateur, veuillez patienter"


RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat
X = X + 1
If X > 2 Then
Resume Suite
X = 0
End If

End Sub
'--------------------------------



Salutations!






"DENIS" a écrit dans le message de news:
Bonjour à tous,

L'instruction ci-dessous donne une attente de 3 secondes puis réessaye
d'acceder au fichier "base BU CDG.xls".
Tout fonctionne très bien. Mais cette macro pour le moment est faite
pour le cas ou ce fichier ne soit pas disponible pour un très court
instant. Par contre, dans l'hypothèse ou ce fichier ne serait pas du
tout disponible à cause d'un plantage serveur, comment lui spécifier en
fait d'essayer d'acceder au fichier "base BU CDG.xls" au bout de 3
secondes mais si cela s'avère infructieux au bout de 3 essais, de passer
à la suite de l'instruction à, "suite:"


'En tête de module
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 3 ' 2secondes
Public Const cRunWhat = "macro1" 'nom de l'instruction à exécuter

Sub macro1()
'si le répertoire P: n'existe plus momentanement
On Error GoTo attente

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette instructions dès lors qu'au bout
de
'3 essais d'ouverture de ("base BU CDG.xls") ne passe pas et signifirait
un plantage serveur et
'non pas que le fichier soit en cours d'utilisation. (il ne reste pas
ouvert plus de 2secondes par traitement)
Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
Collection.Hide
Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation par un
autre utilisateur, veuillez patienter"

RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat

End Sub






Avatar
michdenis
Bonjour Denis,

Il va te falloir faire quelques tests pour déterminer le type d'erreur (Err.Number) qui est généré lorsque le fichier est
inaccessible, et adapter la gestion d'erreur selon ce que tu trouveras !



'En tête de module
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 3 ' 2secondes
Public Const cRunWhat = "macro1" 'nom de l'instruction à exécuter
'--------------------------------------------
Sub macro1()
Dim A As String
Static X As Integer
'si le répertoire P: n'existe plus momentanement
On Error GoTo attente

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette
'instructions dès lors qu'au bout de
'3 essais d'ouverture de ("base BU CDG.xls")
'ne passe pas et signifirait un plantage serveur
'et non pas que le fichier soit en cours d'utilisation.
'(il ne reste pas ouvert plus de 2secondes par traitement)

Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
' Collection.Hide
' Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

Select Case Err.Number

Case 9 ' L'indice n'appartient pas à la sélection
MsgBox Err.Number & " : " & Err.Description

Case 76 ' chemin introuvable
X = X + 1
If X <= 2 Then
Err = 0

MsgBox "Le fichier base de données est en cours d'utilisation" & _
vbCrLf & "par un autre utilisateur, veuillez patienter"
'Programmation horaire = Maintenant + 3 secondes
RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat
Else
Resume Suite
X = 0
End If

Case 1004 ' vérifier le nom du classeur
MsgBox Err.Number & " : " & Err.Description

End Select

End Sub
'--------------------------------------------


Salutations!





"DENIS" a écrit dans le message de news:
Bonsoir,

J'ai essayé et en rajoutant en début de module :
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 3 ' 2secondes
Public Const cRunWhat = "macro1" 'nom de l'instruction à exécuter

mais, au bout de 3 fois de : (en admetant que le fichier "base BU CDG.xls"
ne soit pas du tout accessible)
'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation" & _
vbCrLf & "par un autre utilisateur, veuillez patienter"

La boucle ne s'arrete plus et un ctrl alt sup est necessaire alors qu'elle
devrait juste faire ceci.
Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
' Collection.Hide
' Unload Collection
ActiveWorkbook.Save

Denis



Bonjour Denis,

Essaie ceci :

'--------------------------------
Sub macro1()

Static X As Integer
'si le répertoire P: n'existe plus momentanement
On Error GoTo attente

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette
'instructions dès lors qu'au bout de
'3 essais d'ouverture de ("base BU CDG.xls")
'ne passe pas et signifirait un plantage serveur
'et non pas que le fichier soit en cours d'utilisation.
'(il ne reste pas ouvert plus de 2secondes par traitement)

Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
' Collection.Hide
' Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation" & _
vbCrLf & "par un autre utilisateur, veuillez patienter"


RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat
X = X + 1
If X > 2 Then
Resume Suite
X = 0
End If

End Sub
'--------------------------------



Salutations!






"DENIS" a écrit dans le message de news:
Bonjour à tous,

L'instruction ci-dessous donne une attente de 3 secondes puis réessaye
d'acceder au fichier "base BU CDG.xls".
Tout fonctionne très bien. Mais cette macro pour le moment est faite
pour le cas ou ce fichier ne soit pas disponible pour un très court
instant. Par contre, dans l'hypothèse ou ce fichier ne serait pas du
tout disponible à cause d'un plantage serveur, comment lui spécifier en
fait d'essayer d'acceder au fichier "base BU CDG.xls" au bout de 3
secondes mais si cela s'avère infructieux au bout de 3 essais, de passer
à la suite de l'instruction à, "suite:"


'En tête de module
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 3 ' 2secondes
Public Const cRunWhat = "macro1" 'nom de l'instruction à exécuter

Sub macro1()
'si le répertoire P: n'existe plus momentanement
On Error GoTo attente

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette instructions dès lors qu'au bout
de
'3 essais d'ouverture de ("base BU CDG.xls") ne passe pas et signifirait
un plantage serveur et
'non pas que le fichier soit en cours d'utilisation. (il ne reste pas
ouvert plus de 2secondes par traitement)
Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
Collection.Hide
Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation par un
autre utilisateur, veuillez patienter"

RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat

End Sub






Avatar
DENIS
Bonjour Michèle,

Ca fonctionne très bien maintenant. C parfait. Merci beaucoup.

Denis


Bonjour Denis,

Il va te falloir faire quelques tests pour déterminer le type d'erreur (Err.Number) qui est généré lorsque le fichier est
inaccessible, et adapter la gestion d'erreur selon ce que tu trouveras !



'En tête de module
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 3 ' 2secondes
Public Const cRunWhat = "macro1" 'nom de l'instruction à exécuter
'--------------------------------------------
Sub macro1()
Dim A As String
Static X As Integer
'si le répertoire P: n'existe plus momentanement
On Error GoTo attente

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette
'instructions dès lors qu'au bout de
'3 essais d'ouverture de ("base BU CDG.xls")
'ne passe pas et signifirait un plantage serveur
'et non pas que le fichier soit en cours d'utilisation.
'(il ne reste pas ouvert plus de 2secondes par traitement)

Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
' Collection.Hide
' Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

Select Case Err.Number

Case 9 ' L'indice n'appartient pas à la sélection
MsgBox Err.Number & " : " & Err.Description

Case 76 ' chemin introuvable
X = X + 1
If X <= 2 Then
Err = 0

MsgBox "Le fichier base de données est en cours d'utilisation" & _
vbCrLf & "par un autre utilisateur, veuillez patienter"
'Programmation horaire = Maintenant + 3 secondes
RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat
Else
Resume Suite
X = 0
End If

Case 1004 ' vérifier le nom du classeur
MsgBox Err.Number & " : " & Err.Description

End Select

End Sub
'--------------------------------------------


Salutations!





"DENIS" a écrit dans le message de news:
Bonsoir,

J'ai essayé et en rajoutant en début de module :
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 3 ' 2secondes
Public Const cRunWhat = "macro1" 'nom de l'instruction à exécuter

mais, au bout de 3 fois de : (en admetant que le fichier "base BU CDG.xls"
ne soit pas du tout accessible)
'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation" & _
vbCrLf & "par un autre utilisateur, veuillez patienter"

La boucle ne s'arrete plus et un ctrl alt sup est necessaire alors qu'elle
devrait juste faire ceci.
Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
' Collection.Hide
' Unload Collection
ActiveWorkbook.Save

Denis



Bonjour Denis,

Essaie ceci :

'--------------------------------
Sub macro1()

Static X As Integer
'si le répertoire P: n'existe plus momentanement
On Error GoTo attente

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette
'instructions dès lors qu'au bout de
'3 essais d'ouverture de ("base BU CDG.xls")
'ne passe pas et signifirait un plantage serveur
'et non pas que le fichier soit en cours d'utilisation.
'(il ne reste pas ouvert plus de 2secondes par traitement)

Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
' Collection.Hide
' Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation" & _
vbCrLf & "par un autre utilisateur, veuillez patienter"


RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat
X = X + 1
If X > 2 Then
Resume Suite
X = 0
End If

End Sub
'--------------------------------



Salutations!






"DENIS" a écrit dans le message de news:
Bonjour à tous,

L'instruction ci-dessous donne une attente de 3 secondes puis réessaye
d'acceder au fichier "base BU CDG.xls".
Tout fonctionne très bien. Mais cette macro pour le moment est faite
pour le cas ou ce fichier ne soit pas disponible pour un très court
instant. Par contre, dans l'hypothèse ou ce fichier ne serait pas du
tout disponible à cause d'un plantage serveur, comment lui spécifier en
fait d'essayer d'acceder au fichier "base BU CDG.xls" au bout de 3
secondes mais si cela s'avère infructieux au bout de 3 essais, de passer
à la suite de l'instruction à, "suite:"


'En tête de module
Option Explicit
Public RunWhen As Variant 'programmation horaire
Public Const cRunIntervalSeconds = 3 ' 2secondes
Public Const cRunWhat = "macro1" 'nom de l'instruction à exécuter

Sub macro1()
'si le répertoire P: n'existe plus momentanement
On Error GoTo attente

ChDir "P:EQUIPEMENT"
Workbooks.Open Filename:="P:EQUIPEMENTbase BU CDG.xls"
'ici la suite de la macro
'continue l'instruction si pas de plantage P:

Windows("base BU CDG.xls").Activate
Sheets("Statistiques").Select
Range("A5").Select

'j'aimerais que la macro passe à cette instructions dès lors qu'au bout
de
'3 essais d'ouverture de ("base BU CDG.xls") ne passe pas et signifirait
un plantage serveur et
'non pas que le fichier soit en cours d'utilisation. (il ne reste pas
ouvert plus de 2secondes par traitement)
Suite:
Windows("enlevement2008.xls").Activate
' Va à la page de garde
Sheets("pickup").Select
Range("A1").Select
Collection.Hide
Unload Collection
ActiveWorkbook.Save

Exit Sub
attente:
'ici le ontime qui rappelle ta macro si le fichier n'était pas libre

'Programmation horaire = Maintenant + 3 secondes
MsgBox "Le fichier base de données est en cours d'utilisation par un
autre utilisateur, veuillez patienter"

RunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
Application.OnTime RunWhen, cRunWhat

End Sub