Bonjour,
Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
et dans un autre fichier Excel, j'ai mis la procédure
que tu as publiée ici et j'ai lancé cette petite « sub »
Eh bien, cela a provoqué une erreur de type 70 et
elle m'a retourné « vrai», la valeur attendue.
J'ai répété la même manipulation, mais cette fois en
utilisant une instance différente de l'application Excel,
une contenant le fichier ouvert et l'autre pour effectuer
le test. Dans chaque cas, la procédure a retourné la
valeur attendue.
Tu procèdes autrement ?
Sub test()
MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
End Sub
"Antho87" a écrit dans le message de groupe de
discussion :
Bonjour,
Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
mais ne fonctionne pas sur toutes les versions d'excel.
En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
teste sans ouvrir le fichier s'il est déjà utilisé ou non.
J'ai eu un très bon code sur ce forum que voici :
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next ' Turn error checking off.
filenum = FreeFile() ' Get a free file number.
' Attempt to open the file and lock it.
Open filename For Input Lock Read As #filenum
Close filenum ' Close the file.
errnum = Err ' Save the error number that occurred.
On Error GoTo 0 ' Turn error checking back on.
' Check to see which error occurred.
Select Case errnum
' No error occurred.
' File is NOT already open by another user.
Case 0
IsFileOpen = False
' Error number for "Permission Denied."
' File is already opened by another user.
Case 70
IsFileOpen = True
' Another error occurred.
Case Else
Error errnum
End Select
End Function
Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
faire des modifications sauf sur 2007. Le code considère le fichier déjà
ouvert, certes oui mais en lecture seule...
Si vous avez une idée je vous en remercie par avance
Bonjour,
Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
et dans un autre fichier Excel, j'ai mis la procédure
que tu as publiée ici et j'ai lancé cette petite « sub »
Eh bien, cela a provoqué une erreur de type 70 et
elle m'a retourné « vrai», la valeur attendue.
J'ai répété la même manipulation, mais cette fois en
utilisant une instance différente de l'application Excel,
une contenant le fichier ouvert et l'autre pour effectuer
le test. Dans chaque cas, la procédure a retourné la
valeur attendue.
Tu procèdes autrement ?
Sub test()
MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
End Sub
"Antho87" <Antho87@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : AD04E067-0F37-4B40-B640-411659A8DD7D@microsoft.com...
Bonjour,
Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
mais ne fonctionne pas sur toutes les versions d'excel.
En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
teste sans ouvrir le fichier s'il est déjà utilisé ou non.
J'ai eu un très bon code sur ce forum que voici :
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next ' Turn error checking off.
filenum = FreeFile() ' Get a free file number.
' Attempt to open the file and lock it.
Open filename For Input Lock Read As #filenum
Close filenum ' Close the file.
errnum = Err ' Save the error number that occurred.
On Error GoTo 0 ' Turn error checking back on.
' Check to see which error occurred.
Select Case errnum
' No error occurred.
' File is NOT already open by another user.
Case 0
IsFileOpen = False
' Error number for "Permission Denied."
' File is already opened by another user.
Case 70
IsFileOpen = True
' Another error occurred.
Case Else
Error errnum
End Select
End Function
Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
faire des modifications sauf sur 2007. Le code considère le fichier déjà
ouvert, certes oui mais en lecture seule...
Si vous avez une idée je vous en remercie par avance
Bonjour,
Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
et dans un autre fichier Excel, j'ai mis la procédure
que tu as publiée ici et j'ai lancé cette petite « sub »
Eh bien, cela a provoqué une erreur de type 70 et
elle m'a retourné « vrai», la valeur attendue.
J'ai répété la même manipulation, mais cette fois en
utilisant une instance différente de l'application Excel,
une contenant le fichier ouvert et l'autre pour effectuer
le test. Dans chaque cas, la procédure a retourné la
valeur attendue.
Tu procèdes autrement ?
Sub test()
MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
End Sub
"Antho87" a écrit dans le message de groupe de
discussion :
Bonjour,
Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
mais ne fonctionne pas sur toutes les versions d'excel.
En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
teste sans ouvrir le fichier s'il est déjà utilisé ou non.
J'ai eu un très bon code sur ce forum que voici :
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next ' Turn error checking off.
filenum = FreeFile() ' Get a free file number.
' Attempt to open the file and lock it.
Open filename For Input Lock Read As #filenum
Close filenum ' Close the file.
errnum = Err ' Save the error number that occurred.
On Error GoTo 0 ' Turn error checking back on.
' Check to see which error occurred.
Select Case errnum
' No error occurred.
' File is NOT already open by another user.
Case 0
IsFileOpen = False
' Error number for "Permission Denied."
' File is already opened by another user.
Case 70
IsFileOpen = True
' Another error occurred.
Case Else
Error errnum
End Select
End Function
Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
faire des modifications sauf sur 2007. Le code considère le fichier déjà
ouvert, certes oui mais en lecture seule...
Si vous avez une idée je vous en remercie par avance
Bonjour,
Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
et dans un autre fichier Excel, j'ai mis la procédure
que tu as publiée ici et j'ai lancé cette petite « sub »
Eh bien, cela a provoqué une erreur de type 70 et
elle m'a retourné « vrai», la valeur attendue.
J'ai répété la même manipulation, mais cette fois en
utilisant une instance différente de l'application Excel,
une contenant le fichier ouvert et l'autre pour effectuer
le test. Dans chaque cas, la procédure a retourné la
valeur attendue.
Tu procèdes autrement ?
Sub test()
MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
End Sub
"Antho87" a écrit dans le message de groupe de
discussion :
Bonjour,
Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
mais ne fonctionne pas sur toutes les versions d'excel.
En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
teste sans ouvrir le fichier s'il est déjà utilisé ou non.
J'ai eu un très bon code sur ce forum que voici :
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next ' Turn error checking off.
filenum = FreeFile() ' Get a free file number.
' Attempt to open the file and lock it.
Open filename For Input Lock Read As #filenum
Close filenum ' Close the file.
errnum = Err ' Save the error number that occurred.
On Error GoTo 0 ' Turn error checking back on.
' Check to see which error occurred.
Select Case errnum
' No error occurred.
' File is NOT already open by another user.
Case 0
IsFileOpen = False
' Error number for "Permission Denied."
' File is already opened by another user.
Case 70
IsFileOpen = True
' Another error occurred.
Case Else
Error errnum
End Select
End Function
Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
faire des modifications sauf sur 2007. Le code considère le fichier déjà
ouvert, certes oui mais en lecture seule...
Si vous avez une idée je vous en remercie par avance
Bonjour,
Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
et dans un autre fichier Excel, j'ai mis la procédure
que tu as publiée ici et j'ai lancé cette petite « sub »
Eh bien, cela a provoqué une erreur de type 70 et
elle m'a retourné « vrai», la valeur attendue.
J'ai répété la même manipulation, mais cette fois en
utilisant une instance différente de l'application Excel,
une contenant le fichier ouvert et l'autre pour effectuer
le test. Dans chaque cas, la procédure a retourné la
valeur attendue.
Tu procèdes autrement ?
Sub test()
MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
End Sub
"Antho87" <Antho87@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : AD04E067-0F37-4B40-B640-411659A8DD7D@microsoft.com...
Bonjour,
Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
mais ne fonctionne pas sur toutes les versions d'excel.
En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
teste sans ouvrir le fichier s'il est déjà utilisé ou non.
J'ai eu un très bon code sur ce forum que voici :
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next ' Turn error checking off.
filenum = FreeFile() ' Get a free file number.
' Attempt to open the file and lock it.
Open filename For Input Lock Read As #filenum
Close filenum ' Close the file.
errnum = Err ' Save the error number that occurred.
On Error GoTo 0 ' Turn error checking back on.
' Check to see which error occurred.
Select Case errnum
' No error occurred.
' File is NOT already open by another user.
Case 0
IsFileOpen = False
' Error number for "Permission Denied."
' File is already opened by another user.
Case 70
IsFileOpen = True
' Another error occurred.
Case Else
Error errnum
End Select
End Function
Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
faire des modifications sauf sur 2007. Le code considère le fichier déjà
ouvert, certes oui mais en lecture seule...
Si vous avez une idée je vous en remercie par avance
Bonjour,
Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
et dans un autre fichier Excel, j'ai mis la procédure
que tu as publiée ici et j'ai lancé cette petite « sub »
Eh bien, cela a provoqué une erreur de type 70 et
elle m'a retourné « vrai», la valeur attendue.
J'ai répété la même manipulation, mais cette fois en
utilisant une instance différente de l'application Excel,
une contenant le fichier ouvert et l'autre pour effectuer
le test. Dans chaque cas, la procédure a retourné la
valeur attendue.
Tu procèdes autrement ?
Sub test()
MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
End Sub
"Antho87" a écrit dans le message de groupe de
discussion :
Bonjour,
Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
mais ne fonctionne pas sur toutes les versions d'excel.
En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
teste sans ouvrir le fichier s'il est déjà utilisé ou non.
J'ai eu un très bon code sur ce forum que voici :
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next ' Turn error checking off.
filenum = FreeFile() ' Get a free file number.
' Attempt to open the file and lock it.
Open filename For Input Lock Read As #filenum
Close filenum ' Close the file.
errnum = Err ' Save the error number that occurred.
On Error GoTo 0 ' Turn error checking back on.
' Check to see which error occurred.
Select Case errnum
' No error occurred.
' File is NOT already open by another user.
Case 0
IsFileOpen = False
' Error number for "Permission Denied."
' File is already opened by another user.
Case 70
IsFileOpen = True
' Another error occurred.
Case Else
Error errnum
End Select
End Function
Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
faire des modifications sauf sur 2007. Le code considère le fichier déjà
ouvert, certes oui mais en lecture seule...
Si vous avez une idée je vous en remercie par avance
A )
à partir de la procédure générale publiée dans ton premier message :
sous excel 2007,
'-------------------------------------------
Sub test()
MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
End Sub
'-------------------------------------------
Si le fichier testé n'est pas en lecture seule, la procédure "Test" retourne "vrai"
lorsque le fichier est ouvert.
si le fichier ouvert est en lecture seule, la procédure retourne "False".
La procédure a été testée avec des fichiers au format Excel 2007. Normalement
lorsqu'Excel 2007 ouvre un fichier .xls , ce fichier est ouvert en mode "compatibilité"
il deviendra un fichier au format 2007 seulement après avoir été enregistré au format
2007, fermé et rouvert à nouveau.
"Antho87" a écrit dans le message de groupe de
discussion :
Bonsoir MichDenis,
Visiblement on se retrouve...
En fait le fichier A.xls est ouvert en lecture seule sur excel 2000 ou 2003
et si une personne tente de l'ouvrir pour modifier avec excel 2007, le sub se
lance est détecte le fichier ouvert et donc, l'erreur 70 comme quoi le
fichier est déjà utilisé.
Alors que sur Excel 2000 ou 2003, si je vérifie si le fichier est dispo ou
non et il n'a pas l'erreur 70 car fichier en lecture seule simplement.
On dirait que excel 2000 ou 2003 retourne l'erreur 70 si le fichier est
ouvert en lecture/ecriture mais par contre sur excel 2007 il retourne
l'erreur 70 même si le fichier est ouvert en lecture seule.
Ce n'est qu'une impression...
Merci encore pour l'aide
"MichDenis" wrote:
> Bonjour,
>
> Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
> et dans un autre fichier Excel, j'ai mis la procédure
> que tu as publiée ici et j'ai lancé cette petite « sub »
>
> Eh bien, cela a provoqué une erreur de type 70 et
> elle m'a retourné « vrai», la valeur attendue.
>
> J'ai répété la même manipulation, mais cette fois en
> utilisant une instance différente de l'application Excel,
> une contenant le fichier ouvert et l'autre pour effectuer
> le test. Dans chaque cas, la procédure a retourné la
> valeur attendue.
>
> Tu procèdes autrement ?
>
> Sub test()
> MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> End Sub
>
>
>
>
> "Antho87" a écrit dans le message de groupe de
> discussion :
> Bonjour,
> Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
> mais ne fonctionne pas sur toutes les versions d'excel.
> En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
> si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
> teste sans ouvrir le fichier s'il est déjà utilisé ou non.
> J'ai eu un très bon code sur ce forum que voici :
> Function IsFileOpen(filename As String)
> Dim filenum As Integer, errnum As Integer
>
> On Error Resume Next ' Turn error checking off.
> filenum = FreeFile() ' Get a free file number.
> ' Attempt to open the file and lock it.
> Open filename For Input Lock Read As #filenum
> Close filenum ' Close the file.
> errnum = Err ' Save the error number that occurred.
> On Error GoTo 0 ' Turn error checking back on.
>
> ' Check to see which error occurred.
> Select Case errnum
>
> ' No error occurred.
> ' File is NOT already open by another user.
> Case 0
> IsFileOpen = False
>
> ' Error number for "Permission Denied."
> ' File is already opened by another user.
> Case 70
> IsFileOpen = True
>
> ' Another error occurred.
> Case Else
> Error errnum
> End Select
> End Function
> Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
> En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
> faire des modifications sauf sur 2007. Le code considère le fichier déjà
> ouvert, certes oui mais en lecture seule...
> Si vous avez une idée je vous en remercie par avance
>
>
A )
à partir de la procédure générale publiée dans ton premier message :
sous excel 2007,
'-------------------------------------------
Sub test()
MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
End Sub
'-------------------------------------------
Si le fichier testé n'est pas en lecture seule, la procédure "Test" retourne "vrai"
lorsque le fichier est ouvert.
si le fichier ouvert est en lecture seule, la procédure retourne "False".
La procédure a été testée avec des fichiers au format Excel 2007. Normalement
lorsqu'Excel 2007 ouvre un fichier .xls , ce fichier est ouvert en mode "compatibilité"
il deviendra un fichier au format 2007 seulement après avoir été enregistré au format
2007, fermé et rouvert à nouveau.
"Antho87" <Antho87@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : 75A8EDD9-B40F-4C04-B634-D7B54B837BAA@microsoft.com...
Bonsoir MichDenis,
Visiblement on se retrouve...
En fait le fichier A.xls est ouvert en lecture seule sur excel 2000 ou 2003
et si une personne tente de l'ouvrir pour modifier avec excel 2007, le sub se
lance est détecte le fichier ouvert et donc, l'erreur 70 comme quoi le
fichier est déjà utilisé.
Alors que sur Excel 2000 ou 2003, si je vérifie si le fichier est dispo ou
non et il n'a pas l'erreur 70 car fichier en lecture seule simplement.
On dirait que excel 2000 ou 2003 retourne l'erreur 70 si le fichier est
ouvert en lecture/ecriture mais par contre sur excel 2007 il retourne
l'erreur 70 même si le fichier est ouvert en lecture seule.
Ce n'est qu'une impression...
Merci encore pour l'aide
"MichDenis" wrote:
> Bonjour,
>
> Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
> et dans un autre fichier Excel, j'ai mis la procédure
> que tu as publiée ici et j'ai lancé cette petite « sub »
>
> Eh bien, cela a provoqué une erreur de type 70 et
> elle m'a retourné « vrai», la valeur attendue.
>
> J'ai répété la même manipulation, mais cette fois en
> utilisant une instance différente de l'application Excel,
> une contenant le fichier ouvert et l'autre pour effectuer
> le test. Dans chaque cas, la procédure a retourné la
> valeur attendue.
>
> Tu procèdes autrement ?
>
> Sub test()
> MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> End Sub
>
>
>
>
> "Antho87" <Antho87@discussions.microsoft.com> a écrit dans le message de groupe de
> discussion : AD04E067-0F37-4B40-B640-411659A8DD7D@microsoft.com...
> Bonjour,
> Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
> mais ne fonctionne pas sur toutes les versions d'excel.
> En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
> si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
> teste sans ouvrir le fichier s'il est déjà utilisé ou non.
> J'ai eu un très bon code sur ce forum que voici :
> Function IsFileOpen(filename As String)
> Dim filenum As Integer, errnum As Integer
>
> On Error Resume Next ' Turn error checking off.
> filenum = FreeFile() ' Get a free file number.
> ' Attempt to open the file and lock it.
> Open filename For Input Lock Read As #filenum
> Close filenum ' Close the file.
> errnum = Err ' Save the error number that occurred.
> On Error GoTo 0 ' Turn error checking back on.
>
> ' Check to see which error occurred.
> Select Case errnum
>
> ' No error occurred.
> ' File is NOT already open by another user.
> Case 0
> IsFileOpen = False
>
> ' Error number for "Permission Denied."
> ' File is already opened by another user.
> Case 70
> IsFileOpen = True
>
> ' Another error occurred.
> Case Else
> Error errnum
> End Select
> End Function
> Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
> En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
> faire des modifications sauf sur 2007. Le code considère le fichier déjà
> ouvert, certes oui mais en lecture seule...
> Si vous avez une idée je vous en remercie par avance
>
>
A )
à partir de la procédure générale publiée dans ton premier message :
sous excel 2007,
'-------------------------------------------
Sub test()
MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
End Sub
'-------------------------------------------
Si le fichier testé n'est pas en lecture seule, la procédure "Test" retourne "vrai"
lorsque le fichier est ouvert.
si le fichier ouvert est en lecture seule, la procédure retourne "False".
La procédure a été testée avec des fichiers au format Excel 2007. Normalement
lorsqu'Excel 2007 ouvre un fichier .xls , ce fichier est ouvert en mode "compatibilité"
il deviendra un fichier au format 2007 seulement après avoir été enregistré au format
2007, fermé et rouvert à nouveau.
"Antho87" a écrit dans le message de groupe de
discussion :
Bonsoir MichDenis,
Visiblement on se retrouve...
En fait le fichier A.xls est ouvert en lecture seule sur excel 2000 ou 2003
et si une personne tente de l'ouvrir pour modifier avec excel 2007, le sub se
lance est détecte le fichier ouvert et donc, l'erreur 70 comme quoi le
fichier est déjà utilisé.
Alors que sur Excel 2000 ou 2003, si je vérifie si le fichier est dispo ou
non et il n'a pas l'erreur 70 car fichier en lecture seule simplement.
On dirait que excel 2000 ou 2003 retourne l'erreur 70 si le fichier est
ouvert en lecture/ecriture mais par contre sur excel 2007 il retourne
l'erreur 70 même si le fichier est ouvert en lecture seule.
Ce n'est qu'une impression...
Merci encore pour l'aide
"MichDenis" wrote:
> Bonjour,
>
> Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
> et dans un autre fichier Excel, j'ai mis la procédure
> que tu as publiée ici et j'ai lancé cette petite « sub »
>
> Eh bien, cela a provoqué une erreur de type 70 et
> elle m'a retourné « vrai», la valeur attendue.
>
> J'ai répété la même manipulation, mais cette fois en
> utilisant une instance différente de l'application Excel,
> une contenant le fichier ouvert et l'autre pour effectuer
> le test. Dans chaque cas, la procédure a retourné la
> valeur attendue.
>
> Tu procèdes autrement ?
>
> Sub test()
> MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> End Sub
>
>
>
>
> "Antho87" a écrit dans le message de groupe de
> discussion :
> Bonjour,
> Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
> mais ne fonctionne pas sur toutes les versions d'excel.
> En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
> si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
> teste sans ouvrir le fichier s'il est déjà utilisé ou non.
> J'ai eu un très bon code sur ce forum que voici :
> Function IsFileOpen(filename As String)
> Dim filenum As Integer, errnum As Integer
>
> On Error Resume Next ' Turn error checking off.
> filenum = FreeFile() ' Get a free file number.
> ' Attempt to open the file and lock it.
> Open filename For Input Lock Read As #filenum
> Close filenum ' Close the file.
> errnum = Err ' Save the error number that occurred.
> On Error GoTo 0 ' Turn error checking back on.
>
> ' Check to see which error occurred.
> Select Case errnum
>
> ' No error occurred.
> ' File is NOT already open by another user.
> Case 0
> IsFileOpen = False
>
> ' Error number for "Permission Denied."
> ' File is already opened by another user.
> Case 70
> IsFileOpen = True
>
> ' Another error occurred.
> Case Else
> Error errnum
> End Select
> End Function
> Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
> En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
> faire des modifications sauf sur 2007. Le code considère le fichier déjà
> ouvert, certes oui mais en lecture seule...
> Si vous avez une idée je vous en remercie par avance
>
>
Merci pour votre aide.
Il y a un truc que je comprends pas trop sur le code c'est que là
actuellement je fais appel de mon premier code publié par ce code :
If IsFileOpen("Serveur2etest.xls") Then
MsgBox "L'utilisateur " &
ActiveWorkbook.BuiltinDocumentProperties(7).Value & " a le fichier de suivis
déjà ouvert." & vbCrLf & "Il est impossible de poursuivre l'opération." &
vbCrLf & "Veuillez essayer à nouveau dans quelques instants.", vbCritical,
"Erreur"
Unload chargement
Exit Sub
Else
Workbooks.Open "Serveur2etest.xls"
End If
Le fichier a testé est au format .xls, car une majorité de PC avec excel
2003. Le problème est que sur excel 2007 le test renvoie que le fichier est
indisponible à partir du moment qu'il est ouvert que ce soit en mode
lecture/ecriture ou simple lecture sur un autre PC avec excel 2003 ou 2007.
J'ai l'impression que excel 2007 ne fait pas de différence entre une
ouverture en lecture seule et une ouverture pure du fichier.
Je vais faire des essais entre midi et deux quand un PC sera dispo.
Merci encore
"MichDenis" wrote:
> A )
>
> à partir de la procédure générale publiée dans ton premier message :
> sous excel 2007,
> '-------------------------------------------
> Sub test()
> MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> End Sub
> '-------------------------------------------
>
> Si le fichier testé n'est pas en lecture seule, la procédure "Test" retourne "vrai"
> lorsque le fichier est ouvert.
> si le fichier ouvert est en lecture seule, la procédure retourne "False".
>
> La procédure a été testée avec des fichiers au format Excel 2007. Normalement
> lorsqu'Excel 2007 ouvre un fichier .xls , ce fichier est ouvert en mode "compatibilité"
> il deviendra un fichier au format 2007 seulement après avoir été enregistré au format
> 2007, fermé et rouvert à nouveau.
>
>
>
>
>
>
> "Antho87" a écrit dans le message de groupe de
> discussion :
> Bonsoir MichDenis,
>
> Visiblement on se retrouve...
>
> En fait le fichier A.xls est ouvert en lecture seule sur excel 2000 ou 2003
> et si une personne tente de l'ouvrir pour modifier avec excel 2007, le sub se
> lance est détecte le fichier ouvert et donc, l'erreur 70 comme quoi le
> fichier est déjà utilisé.
> Alors que sur Excel 2000 ou 2003, si je vérifie si le fichier est dispo ou
> non et il n'a pas l'erreur 70 car fichier en lecture seule simplement.
>
> On dirait que excel 2000 ou 2003 retourne l'erreur 70 si le fichier est
> ouvert en lecture/ecriture mais par contre sur excel 2007 il retourne
> l'erreur 70 même si le fichier est ouvert en lecture seule.
>
> Ce n'est qu'une impression...
>
> Merci encore pour l'aide
>
> "MichDenis" wrote:
>
> > Bonjour,
> >
> > Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
> > et dans un autre fichier Excel, j'ai mis la procédure
> > que tu as publiée ici et j'ai lancé cette petite « sub »
> >
> > Eh bien, cela a provoqué une erreur de type 70 et
> > elle m'a retourné « vrai», la valeur attendue.
> >
> > J'ai répété la même manipulation, mais cette fois en
> > utilisant une instance différente de l'application Excel,
> > une contenant le fichier ouvert et l'autre pour effectuer
> > le test. Dans chaque cas, la procédure a retourné la
> > valeur attendue.
> >
> > Tu procèdes autrement ?
> >
> > Sub test()
> > MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> > End Sub
> >
> >
> >
> >
> > "Antho87" a écrit dans le message de groupe de
> > discussion :
> > Bonjour,
> > Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
> > mais ne fonctionne pas sur toutes les versions d'excel.
> > En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
> > si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
> > teste sans ouvrir le fichier s'il est déjà utilisé ou non.
> > J'ai eu un très bon code sur ce forum que voici :
> > Function IsFileOpen(filename As String)
> > Dim filenum As Integer, errnum As Integer
> >
> > On Error Resume Next ' Turn error checking off.
> > filenum = FreeFile() ' Get a free file number.
> > ' Attempt to open the file and lock it.
> > Open filename For Input Lock Read As #filenum
> > Close filenum ' Close the file.
> > errnum = Err ' Save the error number that occurred.
> > On Error GoTo 0 ' Turn error checking back on.
> >
> > ' Check to see which error occurred.
> > Select Case errnum
> >
> > ' No error occurred.
> > ' File is NOT already open by another user.
> > Case 0
> > IsFileOpen = False
> >
> > ' Error number for "Permission Denied."
> > ' File is already opened by another user.
> > Case 70
> > IsFileOpen = True
> >
> > ' Another error occurred.
> > Case Else
> > Error errnum
> > End Select
> > End Function
> > Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
> > En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
> > faire des modifications sauf sur 2007. Le code considère le fichier déjà
> > ouvert, certes oui mais en lecture seule...
> > Si vous avez une idée je vous en remercie par avance
> >
> >
>
Merci pour votre aide.
Il y a un truc que je comprends pas trop sur le code c'est que là
actuellement je fais appel de mon premier code publié par ce code :
If IsFileOpen("\Serveur2etest.xls") Then
MsgBox "L'utilisateur " &
ActiveWorkbook.BuiltinDocumentProperties(7).Value & " a le fichier de suivis
déjà ouvert." & vbCrLf & "Il est impossible de poursuivre l'opération." &
vbCrLf & "Veuillez essayer à nouveau dans quelques instants.", vbCritical,
"Erreur"
Unload chargement
Exit Sub
Else
Workbooks.Open "\Serveur2etest.xls"
End If
Le fichier a testé est au format .xls, car une majorité de PC avec excel
2003. Le problème est que sur excel 2007 le test renvoie que le fichier est
indisponible à partir du moment qu'il est ouvert que ce soit en mode
lecture/ecriture ou simple lecture sur un autre PC avec excel 2003 ou 2007.
J'ai l'impression que excel 2007 ne fait pas de différence entre une
ouverture en lecture seule et une ouverture pure du fichier.
Je vais faire des essais entre midi et deux quand un PC sera dispo.
Merci encore
"MichDenis" wrote:
> A )
>
> à partir de la procédure générale publiée dans ton premier message :
> sous excel 2007,
> '-------------------------------------------
> Sub test()
> MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> End Sub
> '-------------------------------------------
>
> Si le fichier testé n'est pas en lecture seule, la procédure "Test" retourne "vrai"
> lorsque le fichier est ouvert.
> si le fichier ouvert est en lecture seule, la procédure retourne "False".
>
> La procédure a été testée avec des fichiers au format Excel 2007. Normalement
> lorsqu'Excel 2007 ouvre un fichier .xls , ce fichier est ouvert en mode "compatibilité"
> il deviendra un fichier au format 2007 seulement après avoir été enregistré au format
> 2007, fermé et rouvert à nouveau.
>
>
>
>
>
>
> "Antho87" <Antho87@discussions.microsoft.com> a écrit dans le message de groupe de
> discussion : 75A8EDD9-B40F-4C04-B634-D7B54B837BAA@microsoft.com...
> Bonsoir MichDenis,
>
> Visiblement on se retrouve...
>
> En fait le fichier A.xls est ouvert en lecture seule sur excel 2000 ou 2003
> et si une personne tente de l'ouvrir pour modifier avec excel 2007, le sub se
> lance est détecte le fichier ouvert et donc, l'erreur 70 comme quoi le
> fichier est déjà utilisé.
> Alors que sur Excel 2000 ou 2003, si je vérifie si le fichier est dispo ou
> non et il n'a pas l'erreur 70 car fichier en lecture seule simplement.
>
> On dirait que excel 2000 ou 2003 retourne l'erreur 70 si le fichier est
> ouvert en lecture/ecriture mais par contre sur excel 2007 il retourne
> l'erreur 70 même si le fichier est ouvert en lecture seule.
>
> Ce n'est qu'une impression...
>
> Merci encore pour l'aide
>
> "MichDenis" wrote:
>
> > Bonjour,
> >
> > Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
> > et dans un autre fichier Excel, j'ai mis la procédure
> > que tu as publiée ici et j'ai lancé cette petite « sub »
> >
> > Eh bien, cela a provoqué une erreur de type 70 et
> > elle m'a retourné « vrai», la valeur attendue.
> >
> > J'ai répété la même manipulation, mais cette fois en
> > utilisant une instance différente de l'application Excel,
> > une contenant le fichier ouvert et l'autre pour effectuer
> > le test. Dans chaque cas, la procédure a retourné la
> > valeur attendue.
> >
> > Tu procèdes autrement ?
> >
> > Sub test()
> > MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> > End Sub
> >
> >
> >
> >
> > "Antho87" <Antho87@discussions.microsoft.com> a écrit dans le message de groupe de
> > discussion : AD04E067-0F37-4B40-B640-411659A8DD7D@microsoft.com...
> > Bonjour,
> > Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
> > mais ne fonctionne pas sur toutes les versions d'excel.
> > En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
> > si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
> > teste sans ouvrir le fichier s'il est déjà utilisé ou non.
> > J'ai eu un très bon code sur ce forum que voici :
> > Function IsFileOpen(filename As String)
> > Dim filenum As Integer, errnum As Integer
> >
> > On Error Resume Next ' Turn error checking off.
> > filenum = FreeFile() ' Get a free file number.
> > ' Attempt to open the file and lock it.
> > Open filename For Input Lock Read As #filenum
> > Close filenum ' Close the file.
> > errnum = Err ' Save the error number that occurred.
> > On Error GoTo 0 ' Turn error checking back on.
> >
> > ' Check to see which error occurred.
> > Select Case errnum
> >
> > ' No error occurred.
> > ' File is NOT already open by another user.
> > Case 0
> > IsFileOpen = False
> >
> > ' Error number for "Permission Denied."
> > ' File is already opened by another user.
> > Case 70
> > IsFileOpen = True
> >
> > ' Another error occurred.
> > Case Else
> > Error errnum
> > End Select
> > End Function
> > Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
> > En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
> > faire des modifications sauf sur 2007. Le code considère le fichier déjà
> > ouvert, certes oui mais en lecture seule...
> > Si vous avez une idée je vous en remercie par avance
> >
> >
>
Merci pour votre aide.
Il y a un truc que je comprends pas trop sur le code c'est que là
actuellement je fais appel de mon premier code publié par ce code :
If IsFileOpen("Serveur2etest.xls") Then
MsgBox "L'utilisateur " &
ActiveWorkbook.BuiltinDocumentProperties(7).Value & " a le fichier de suivis
déjà ouvert." & vbCrLf & "Il est impossible de poursuivre l'opération." &
vbCrLf & "Veuillez essayer à nouveau dans quelques instants.", vbCritical,
"Erreur"
Unload chargement
Exit Sub
Else
Workbooks.Open "Serveur2etest.xls"
End If
Le fichier a testé est au format .xls, car une majorité de PC avec excel
2003. Le problème est que sur excel 2007 le test renvoie que le fichier est
indisponible à partir du moment qu'il est ouvert que ce soit en mode
lecture/ecriture ou simple lecture sur un autre PC avec excel 2003 ou 2007.
J'ai l'impression que excel 2007 ne fait pas de différence entre une
ouverture en lecture seule et une ouverture pure du fichier.
Je vais faire des essais entre midi et deux quand un PC sera dispo.
Merci encore
"MichDenis" wrote:
> A )
>
> à partir de la procédure générale publiée dans ton premier message :
> sous excel 2007,
> '-------------------------------------------
> Sub test()
> MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> End Sub
> '-------------------------------------------
>
> Si le fichier testé n'est pas en lecture seule, la procédure "Test" retourne "vrai"
> lorsque le fichier est ouvert.
> si le fichier ouvert est en lecture seule, la procédure retourne "False".
>
> La procédure a été testée avec des fichiers au format Excel 2007. Normalement
> lorsqu'Excel 2007 ouvre un fichier .xls , ce fichier est ouvert en mode "compatibilité"
> il deviendra un fichier au format 2007 seulement après avoir été enregistré au format
> 2007, fermé et rouvert à nouveau.
>
>
>
>
>
>
> "Antho87" a écrit dans le message de groupe de
> discussion :
> Bonsoir MichDenis,
>
> Visiblement on se retrouve...
>
> En fait le fichier A.xls est ouvert en lecture seule sur excel 2000 ou 2003
> et si une personne tente de l'ouvrir pour modifier avec excel 2007, le sub se
> lance est détecte le fichier ouvert et donc, l'erreur 70 comme quoi le
> fichier est déjà utilisé.
> Alors que sur Excel 2000 ou 2003, si je vérifie si le fichier est dispo ou
> non et il n'a pas l'erreur 70 car fichier en lecture seule simplement.
>
> On dirait que excel 2000 ou 2003 retourne l'erreur 70 si le fichier est
> ouvert en lecture/ecriture mais par contre sur excel 2007 il retourne
> l'erreur 70 même si le fichier est ouvert en lecture seule.
>
> Ce n'est qu'une impression...
>
> Merci encore pour l'aide
>
> "MichDenis" wrote:
>
> > Bonjour,
> >
> > Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
> > et dans un autre fichier Excel, j'ai mis la procédure
> > que tu as publiée ici et j'ai lancé cette petite « sub »
> >
> > Eh bien, cela a provoqué une erreur de type 70 et
> > elle m'a retourné « vrai», la valeur attendue.
> >
> > J'ai répété la même manipulation, mais cette fois en
> > utilisant une instance différente de l'application Excel,
> > une contenant le fichier ouvert et l'autre pour effectuer
> > le test. Dans chaque cas, la procédure a retourné la
> > valeur attendue.
> >
> > Tu procèdes autrement ?
> >
> > Sub test()
> > MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> > End Sub
> >
> >
> >
> >
> > "Antho87" a écrit dans le message de groupe de
> > discussion :
> > Bonjour,
> > Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
> > mais ne fonctionne pas sur toutes les versions d'excel.
> > En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
> > si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
> > teste sans ouvrir le fichier s'il est déjà utilisé ou non.
> > J'ai eu un très bon code sur ce forum que voici :
> > Function IsFileOpen(filename As String)
> > Dim filenum As Integer, errnum As Integer
> >
> > On Error Resume Next ' Turn error checking off.
> > filenum = FreeFile() ' Get a free file number.
> > ' Attempt to open the file and lock it.
> > Open filename For Input Lock Read As #filenum
> > Close filenum ' Close the file.
> > errnum = Err ' Save the error number that occurred.
> > On Error GoTo 0 ' Turn error checking back on.
> >
> > ' Check to see which error occurred.
> > Select Case errnum
> >
> > ' No error occurred.
> > ' File is NOT already open by another user.
> > Case 0
> > IsFileOpen = False
> >
> > ' Error number for "Permission Denied."
> > ' File is already opened by another user.
> > Case 70
> > IsFileOpen = True
> >
> > ' Another error occurred.
> > Case Else
> > Error errnum
> > End Select
> > End Function
> > Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
> > En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
> > faire des modifications sauf sur 2007. Le code considère le fichier déjà
> > ouvert, certes oui mais en lecture seule...
> > Si vous avez une idée je vous en remercie par avance
> >
> >
>
Merci pour votre aide.
Il y a un truc que je comprends pas trop sur le code c'est que là
actuellement je fais appel de mon premier code publié par ce code :
If IsFileOpen("Serveur2etest.xls") Then
MsgBox "L'utilisateur " &
ActiveWorkbook.BuiltinDocumentProperties(7).Value & " a le fichier de suivis
déjà ouvert." & vbCrLf & "Il est impossible de poursuivre l'opération." &
vbCrLf & "Veuillez essayer à nouveau dans quelques instants.", vbCritical,
"Erreur"
Unload chargement
Exit Sub
Else
Workbooks.Open "Serveur2etest.xls"
End If
Le fichier a testé est au format .xls, car une majorité de PC avec excel
2003. Le problème est que sur excel 2007 le test renvoie que le fichier est
indisponible à partir du moment qu'il est ouvert que ce soit en mode
lecture/ecriture ou simple lecture sur un autre PC avec excel 2003 ou 2007.
J'ai l'impression que excel 2007 ne fait pas de différence entre une
ouverture en lecture seule et une ouverture pure du fichier.
Je vais faire des essais entre midi et deux quand un PC sera dispo.
Merci encore
"MichDenis" wrote:
> A )
>
> à partir de la procédure générale publiée dans ton premier message :
> sous excel 2007,
> '-------------------------------------------
> Sub test()
> MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> End Sub
> '-------------------------------------------
>
> Si le fichier testé n'est pas en lecture seule, la procédure "Test" retourne "vrai"
> lorsque le fichier est ouvert.
> si le fichier ouvert est en lecture seule, la procédure retourne "False".
>
> La procédure a été testée avec des fichiers au format Excel 2007. Normalement
> lorsqu'Excel 2007 ouvre un fichier .xls , ce fichier est ouvert en mode
> "compatibilité"
> il deviendra un fichier au format 2007 seulement après avoir été enregistré au format
> 2007, fermé et rouvert à nouveau.
>
>
>
>
>
>
> "Antho87" a écrit dans le message de groupe de
> discussion :
> Bonsoir MichDenis,
>
> Visiblement on se retrouve...
>
> En fait le fichier A.xls est ouvert en lecture seule sur excel 2000 ou 2003
> et si une personne tente de l'ouvrir pour modifier avec excel 2007, le sub se
> lance est détecte le fichier ouvert et donc, l'erreur 70 comme quoi le
> fichier est déjà utilisé.
> Alors que sur Excel 2000 ou 2003, si je vérifie si le fichier est dispo ou
> non et il n'a pas l'erreur 70 car fichier en lecture seule simplement.
>
> On dirait que excel 2000 ou 2003 retourne l'erreur 70 si le fichier est
> ouvert en lecture/ecriture mais par contre sur excel 2007 il retourne
> l'erreur 70 même si le fichier est ouvert en lecture seule.
>
> Ce n'est qu'une impression...
>
> Merci encore pour l'aide
>
> "MichDenis" wrote:
>
> > Bonjour,
> >
> > Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
> > et dans un autre fichier Excel, j'ai mis la procédure
> > que tu as publiée ici et j'ai lancé cette petite « sub »
> >
> > Eh bien, cela a provoqué une erreur de type 70 et
> > elle m'a retourné « vrai», la valeur attendue.
> >
> > J'ai répété la même manipulation, mais cette fois en
> > utilisant une instance différente de l'application Excel,
> > une contenant le fichier ouvert et l'autre pour effectuer
> > le test. Dans chaque cas, la procédure a retourné la
> > valeur attendue.
> >
> > Tu procèdes autrement ?
> >
> > Sub test()
> > MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> > End Sub
> >
> >
> >
> >
> > "Antho87" a écrit dans le message de groupe de
> > discussion :
> > Bonjour,
> > Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
> > mais ne fonctionne pas sur toutes les versions d'excel.
> > En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
> > si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
> > teste sans ouvrir le fichier s'il est déjà utilisé ou non.
> > J'ai eu un très bon code sur ce forum que voici :
> > Function IsFileOpen(filename As String)
> > Dim filenum As Integer, errnum As Integer
> >
> > On Error Resume Next ' Turn error checking off.
> > filenum = FreeFile() ' Get a free file number.
> > ' Attempt to open the file and lock it.
> > Open filename For Input Lock Read As #filenum
> > Close filenum ' Close the file.
> > errnum = Err ' Save the error number that occurred.
> > On Error GoTo 0 ' Turn error checking back on.
> >
> > ' Check to see which error occurred.
> > Select Case errnum
> >
> > ' No error occurred.
> > ' File is NOT already open by another user.
> > Case 0
> > IsFileOpen = False
> >
> > ' Error number for "Permission Denied."
> > ' File is already opened by another user.
> > Case 70
> > IsFileOpen = True
> >
> > ' Another error occurred.
> > Case Else
> > Error errnum
> > End Select
> > End Function
> > Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
> > En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
> > faire des modifications sauf sur 2007. Le code considère le fichier déjà
> > ouvert, certes oui mais en lecture seule...
> > Si vous avez une idée je vous en remercie par avance
> >
> >
>
Merci pour votre aide.
Il y a un truc que je comprends pas trop sur le code c'est que là
actuellement je fais appel de mon premier code publié par ce code :
If IsFileOpen("\Serveur2etest.xls") Then
MsgBox "L'utilisateur " &
ActiveWorkbook.BuiltinDocumentProperties(7).Value & " a le fichier de suivis
déjà ouvert." & vbCrLf & "Il est impossible de poursuivre l'opération." &
vbCrLf & "Veuillez essayer à nouveau dans quelques instants.", vbCritical,
"Erreur"
Unload chargement
Exit Sub
Else
Workbooks.Open "\Serveur2etest.xls"
End If
Le fichier a testé est au format .xls, car une majorité de PC avec excel
2003. Le problème est que sur excel 2007 le test renvoie que le fichier est
indisponible à partir du moment qu'il est ouvert que ce soit en mode
lecture/ecriture ou simple lecture sur un autre PC avec excel 2003 ou 2007.
J'ai l'impression que excel 2007 ne fait pas de différence entre une
ouverture en lecture seule et une ouverture pure du fichier.
Je vais faire des essais entre midi et deux quand un PC sera dispo.
Merci encore
"MichDenis" wrote:
> A )
>
> à partir de la procédure générale publiée dans ton premier message :
> sous excel 2007,
> '-------------------------------------------
> Sub test()
> MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> End Sub
> '-------------------------------------------
>
> Si le fichier testé n'est pas en lecture seule, la procédure "Test" retourne "vrai"
> lorsque le fichier est ouvert.
> si le fichier ouvert est en lecture seule, la procédure retourne "False".
>
> La procédure a été testée avec des fichiers au format Excel 2007. Normalement
> lorsqu'Excel 2007 ouvre un fichier .xls , ce fichier est ouvert en mode
> "compatibilité"
> il deviendra un fichier au format 2007 seulement après avoir été enregistré au format
> 2007, fermé et rouvert à nouveau.
>
>
>
>
>
>
> "Antho87" <Antho87@discussions.microsoft.com> a écrit dans le message de groupe de
> discussion : 75A8EDD9-B40F-4C04-B634-D7B54B837BAA@microsoft.com...
> Bonsoir MichDenis,
>
> Visiblement on se retrouve...
>
> En fait le fichier A.xls est ouvert en lecture seule sur excel 2000 ou 2003
> et si une personne tente de l'ouvrir pour modifier avec excel 2007, le sub se
> lance est détecte le fichier ouvert et donc, l'erreur 70 comme quoi le
> fichier est déjà utilisé.
> Alors que sur Excel 2000 ou 2003, si je vérifie si le fichier est dispo ou
> non et il n'a pas l'erreur 70 car fichier en lecture seule simplement.
>
> On dirait que excel 2000 ou 2003 retourne l'erreur 70 si le fichier est
> ouvert en lecture/ecriture mais par contre sur excel 2007 il retourne
> l'erreur 70 même si le fichier est ouvert en lecture seule.
>
> Ce n'est qu'une impression...
>
> Merci encore pour l'aide
>
> "MichDenis" wrote:
>
> > Bonjour,
> >
> > Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
> > et dans un autre fichier Excel, j'ai mis la procédure
> > que tu as publiée ici et j'ai lancé cette petite « sub »
> >
> > Eh bien, cela a provoqué une erreur de type 70 et
> > elle m'a retourné « vrai», la valeur attendue.
> >
> > J'ai répété la même manipulation, mais cette fois en
> > utilisant une instance différente de l'application Excel,
> > une contenant le fichier ouvert et l'autre pour effectuer
> > le test. Dans chaque cas, la procédure a retourné la
> > valeur attendue.
> >
> > Tu procèdes autrement ?
> >
> > Sub test()
> > MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> > End Sub
> >
> >
> >
> >
> > "Antho87" <Antho87@discussions.microsoft.com> a écrit dans le message de groupe de
> > discussion : AD04E067-0F37-4B40-B640-411659A8DD7D@microsoft.com...
> > Bonjour,
> > Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
> > mais ne fonctionne pas sur toutes les versions d'excel.
> > En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
> > si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
> > teste sans ouvrir le fichier s'il est déjà utilisé ou non.
> > J'ai eu un très bon code sur ce forum que voici :
> > Function IsFileOpen(filename As String)
> > Dim filenum As Integer, errnum As Integer
> >
> > On Error Resume Next ' Turn error checking off.
> > filenum = FreeFile() ' Get a free file number.
> > ' Attempt to open the file and lock it.
> > Open filename For Input Lock Read As #filenum
> > Close filenum ' Close the file.
> > errnum = Err ' Save the error number that occurred.
> > On Error GoTo 0 ' Turn error checking back on.
> >
> > ' Check to see which error occurred.
> > Select Case errnum
> >
> > ' No error occurred.
> > ' File is NOT already open by another user.
> > Case 0
> > IsFileOpen = False
> >
> > ' Error number for "Permission Denied."
> > ' File is already opened by another user.
> > Case 70
> > IsFileOpen = True
> >
> > ' Another error occurred.
> > Case Else
> > Error errnum
> > End Select
> > End Function
> > Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
> > En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
> > faire des modifications sauf sur 2007. Le code considère le fichier déjà
> > ouvert, certes oui mais en lecture seule...
> > Si vous avez une idée je vous en remercie par avance
> >
> >
>
Merci pour votre aide.
Il y a un truc que je comprends pas trop sur le code c'est que là
actuellement je fais appel de mon premier code publié par ce code :
If IsFileOpen("Serveur2etest.xls") Then
MsgBox "L'utilisateur " &
ActiveWorkbook.BuiltinDocumentProperties(7).Value & " a le fichier de suivis
déjà ouvert." & vbCrLf & "Il est impossible de poursuivre l'opération." &
vbCrLf & "Veuillez essayer à nouveau dans quelques instants.", vbCritical,
"Erreur"
Unload chargement
Exit Sub
Else
Workbooks.Open "Serveur2etest.xls"
End If
Le fichier a testé est au format .xls, car une majorité de PC avec excel
2003. Le problème est que sur excel 2007 le test renvoie que le fichier est
indisponible à partir du moment qu'il est ouvert que ce soit en mode
lecture/ecriture ou simple lecture sur un autre PC avec excel 2003 ou 2007.
J'ai l'impression que excel 2007 ne fait pas de différence entre une
ouverture en lecture seule et une ouverture pure du fichier.
Je vais faire des essais entre midi et deux quand un PC sera dispo.
Merci encore
"MichDenis" wrote:
> A )
>
> à partir de la procédure générale publiée dans ton premier message :
> sous excel 2007,
> '-------------------------------------------
> Sub test()
> MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> End Sub
> '-------------------------------------------
>
> Si le fichier testé n'est pas en lecture seule, la procédure "Test" retourne "vrai"
> lorsque le fichier est ouvert.
> si le fichier ouvert est en lecture seule, la procédure retourne "False".
>
> La procédure a été testée avec des fichiers au format Excel 2007. Normalement
> lorsqu'Excel 2007 ouvre un fichier .xls , ce fichier est ouvert en mode
> "compatibilité"
> il deviendra un fichier au format 2007 seulement après avoir été enregistré au format
> 2007, fermé et rouvert à nouveau.
>
>
>
>
>
>
> "Antho87" a écrit dans le message de groupe de
> discussion :
> Bonsoir MichDenis,
>
> Visiblement on se retrouve...
>
> En fait le fichier A.xls est ouvert en lecture seule sur excel 2000 ou 2003
> et si une personne tente de l'ouvrir pour modifier avec excel 2007, le sub se
> lance est détecte le fichier ouvert et donc, l'erreur 70 comme quoi le
> fichier est déjà utilisé.
> Alors que sur Excel 2000 ou 2003, si je vérifie si le fichier est dispo ou
> non et il n'a pas l'erreur 70 car fichier en lecture seule simplement.
>
> On dirait que excel 2000 ou 2003 retourne l'erreur 70 si le fichier est
> ouvert en lecture/ecriture mais par contre sur excel 2007 il retourne
> l'erreur 70 même si le fichier est ouvert en lecture seule.
>
> Ce n'est qu'une impression...
>
> Merci encore pour l'aide
>
> "MichDenis" wrote:
>
> > Bonjour,
> >
> > Sous Excel 2007, j'ai ouvert un fichier Excel (xlsx)
> > et dans un autre fichier Excel, j'ai mis la procédure
> > que tu as publiée ici et j'ai lancé cette petite « sub »
> >
> > Eh bien, cela a provoqué une erreur de type 70 et
> > elle m'a retourné « vrai», la valeur attendue.
> >
> > J'ai répété la même manipulation, mais cette fois en
> > utilisant une instance différente de l'application Excel,
> > une contenant le fichier ouvert et l'autre pour effectuer
> > le test. Dans chaque cas, la procédure a retourné la
> > valeur attendue.
> >
> > Tu procèdes autrement ?
> >
> > Sub test()
> > MsgBox IsFileOpen("c:usersdmdocumentstest.xlsx")
> > End Sub
> >
> >
> >
> >
> > "Antho87" a écrit dans le message de groupe de
> > discussion :
> > Bonjour,
> > Je vous sollicite à nouveau pour toujours mon même problème qui a été résolu
> > mais ne fonctionne pas sur toutes les versions d'excel.
> > En fait un utilisateur 1 utilise un fichier B qui met à jour un fichier A et
> > si un utilisateur 2 utilise un fichier C qui met à jour le fichier A alors je
> > teste sans ouvrir le fichier s'il est déjà utilisé ou non.
> > J'ai eu un très bon code sur ce forum que voici :
> > Function IsFileOpen(filename As String)
> > Dim filenum As Integer, errnum As Integer
> >
> > On Error Resume Next ' Turn error checking off.
> > filenum = FreeFile() ' Get a free file number.
> > ' Attempt to open the file and lock it.
> > Open filename For Input Lock Read As #filenum
> > Close filenum ' Close the file.
> > errnum = Err ' Save the error number that occurred.
> > On Error GoTo 0 ' Turn error checking back on.
> >
> > ' Check to see which error occurred.
> > Select Case errnum
> >
> > ' No error occurred.
> > ' File is NOT already open by another user.
> > Case 0
> > IsFileOpen = False
> >
> > ' Error number for "Permission Denied."
> > ' File is already opened by another user.
> > Case 70
> > IsFileOpen = True
> >
> > ' Another error occurred.
> > Case Else
> > Error errnum
> > End Select
> > End Function
> > Cette solution est vraiment très bien mais ne fonctionne pas sur Excel 2007.
> > En effet, si le fichier est ouvert en lecture seule, on peut l'ouvrir pour y
> > faire des modifications sauf sur 2007. Le code considère le fichier déjà
> > ouvert, certes oui mais en lecture seule...
> > Si vous avez une idée je vous en remercie par avance
> >
> >
>