Bonjour,
Supposons que les 3 personnes ouvrent le fichier en même temps,
chacun remplit la section des données comme il se doit...
le hic, seules les données de celui qui fermera le fichier en dernier s eront enregistrées.
Tu pourrais créer 3 fichiers (1 pour chacun) et un fichier de consolida tion ayant une petite macro
qui se chargerait de mettre tout à jour à chaque ouverture.
Une autre alternative est une macro qui indique aux personnes subséquen tes que le fichier est déjà
ouvert par quelqu'un d'autre et qu'il est par conséquent non disponible pour le moment.
Voici un bout de code à partir duquel tu pourrais travailler. Perso, je ne l'ai jamais testé.
Écris par Michel Rameaux la proposition originale de Sigonneau et Cie
'---------------------------------------------------------------
Sub DémoOuvrirFichier()
Dim Chemin As String, Chemin2 As String
Dim Fichier As String
' Classeur nécessaire :
Chemin = _
Workbooks("Gestion.xls").Worksheets("Données").Range("A1").Value
Chemin2 = "Suivi"
Fichier = "Données.xls"
'Test de l'existence du fichier et son chemin
Call ExisteFichier(Chemin, Chemin2, Fichier)
If Trouvé = False Then
Call FichierAbsent
'Le Fichier n'existe pas :
'traitement de l 'erreur
GoTo FichierAbsent
Exit Sub
End If
'Test d'Ouverture du classeur
Call OuvrirFichier(Chemin, Chemin2, Fichier)
'Traitement
If Occupé = True Then
GoTo FichierUtilisé ' Traitement de l'erreur
Exit Sub
Else
If OuvertLocal = True Then
MsgBox "Tout va bien, mais le fichier " & _
"est ouvert localement"
Exit Sub
Else
MsgBox "Tout va bien. On ouvre le fichier"
End If
End If
Exit Sub
FichierAbsent:
' Placer ici le code
MsgBox "Le fichier n'existe pas"
Exit Sub
FichierUtilisé:
' Placer ici le code
MsgBox "Le fichier n'est pas disponible"
End Sub
'---------------------------------------------------------------
Private Function ExisteFichier(Chemin, Chemin2, Fichier) As Boolean
If Dir(Chemin & "" & Chemin2 & "" & Fichier) = "" Then
' Le Fichier n'existe pas
Trouvé = False
Mess = MsgBox("Le dossier - " & UCase(Fichier) & _
" n'existe pas ou a été déplacé." & vbCrLf & vbCrLf & _
"Impossible de continuer.", vbOKOnly, _
"Ouverture des dossiers")
Else
'Le Fichier existe
Trouvé = True
End If
End Function
'---------------------------------------------------------------
Private Function OuvrirFichier(Chemin, Chemin2, Fichier) As Boolean
Dim FileNum As Integer, ErrNum As Integer
' Le Fichier est-il déja disponible s
' sur le PC (en local)?
On Error Resume Next
Set W = Workbooks(Fichier)
If Err = 0 Then
Debug.Print Err
'Fichier Ouvert en local
OuvertLocal = True
Exit Function
Else
'Err=9
Debug.Print Err
'Fichier non ouvert en local
OuvertLocal = False
End If
If OuvertLocal = False Then
'Le Fichier n'est pas ouvert localement,
'est-il disponible sur le réseau?
On Error Resume Next
FileNum = FreeFile()
Open (Chemin & "" & Chemin2 & "" & Fichier) _
For Input Lock Read As #FileNum
Close FileNum
ErrNum = Err
On Error GoTo 0
Select Case ErrNum
Case 0
'Fichier non utilisé
Occupé = False
Case 70
'Fichier utilisé
Occupé = True
Mess = MsgBox("Le dossier - " & UCase(F ichier) & _
"n'est pas disponible. Merci de renouvele r " & _
"votre demande ultérieurement.", _
vbOKOnly, "Ouverture des dossiers ")
Case Else
Error ErrNum
End Select
End If
End Function
'---------------------------------------------------------------
MichD
------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :
Bonsoir les gurus,
j'ai une feuille de saisie (excel 2007) qui doit être remplie
par plusieurs personnes. le fichier est enregistré dans un répertoire
d'un réseau local.
heu ... "normalement" (quoique) c'est la dernière personne
qui enregistre le fichier qui "à raison", en écrasant éventuellemen t
la saisie d'autre personnes ...
Je crois savoir qu'une gestion d'accès concurrents existe, mais ...
de mémoire, cela génère des fichiers excel très gros (ce qui est peut
être
normal).
j'aimerai expérimenter (grâce à votre aide) une autre méthode.
supposons :
PIERRE doit remplir les cellules de G10 à G15
ISABELLE " " " " G16 à G17
LUCIEN ------------------------------------- G18 à G20.
j'imagine que, lorsque Pierre saisi quelque chose en G10, puis G11,
etc .... une macro
irait écrire un fichier excel nommé (par exemple pierrejanvier.xls)
De la même façon, Isabelle aurait son fichier isabellejanvier.xls, et
lucienjanvier.xls.
la feuille principale feuille.xls, ne serait à aucun moment
enregistrée ! et, par contre
à l'ouverture de cette feuille, les valeurs des cellules
correspondantes seraient affichées
purement et simplement dans feuille.xls (et on n'affiche rien si les
feuilles secondaires n'existent pas).
Est-ce que, avec un petit exemple, un guru pourrait me montrer comment
lorsque dans la feuille.xls on saisie une valeur dans G10, la plage
[G10:G15] est
enregistrée dans le fichier secondaire ?
Au delà de la "pratique", je suis preneur des suggestions éclairées
de tous !
Merci
José
Bonjour,
Supposons que les 3 personnes ouvrent le fichier en même temps,
chacun remplit la section des données comme il se doit...
le hic, seules les données de celui qui fermera le fichier en dernier s eront enregistrées.
Tu pourrais créer 3 fichiers (1 pour chacun) et un fichier de consolida tion ayant une petite macro
qui se chargerait de mettre tout à jour à chaque ouverture.
Une autre alternative est une macro qui indique aux personnes subséquen tes que le fichier est déjà
ouvert par quelqu'un d'autre et qu'il est par conséquent non disponible pour le moment.
Voici un bout de code à partir duquel tu pourrais travailler. Perso, je ne l'ai jamais testé.
Écris par Michel Rameaux la proposition originale de Sigonneau et Cie
'---------------------------------------------------------------
Sub DémoOuvrirFichier()
Dim Chemin As String, Chemin2 As String
Dim Fichier As String
' Classeur nécessaire :
Chemin = _
Workbooks("Gestion.xls").Worksheets("Données").Range("A1").Value
Chemin2 = "Suivi"
Fichier = "Données.xls"
'Test de l'existence du fichier et son chemin
Call ExisteFichier(Chemin, Chemin2, Fichier)
If Trouvé = False Then
Call FichierAbsent
'Le Fichier n'existe pas :
'traitement de l 'erreur
GoTo FichierAbsent
Exit Sub
End If
'Test d'Ouverture du classeur
Call OuvrirFichier(Chemin, Chemin2, Fichier)
'Traitement
If Occupé = True Then
GoTo FichierUtilisé ' Traitement de l'erreur
Exit Sub
Else
If OuvertLocal = True Then
MsgBox "Tout va bien, mais le fichier " & _
"est ouvert localement"
Exit Sub
Else
MsgBox "Tout va bien. On ouvre le fichier"
End If
End If
Exit Sub
FichierAbsent:
' Placer ici le code
MsgBox "Le fichier n'existe pas"
Exit Sub
FichierUtilisé:
' Placer ici le code
MsgBox "Le fichier n'est pas disponible"
End Sub
'---------------------------------------------------------------
Private Function ExisteFichier(Chemin, Chemin2, Fichier) As Boolean
If Dir(Chemin & "" & Chemin2 & "" & Fichier) = "" Then
' Le Fichier n'existe pas
Trouvé = False
Mess = MsgBox("Le dossier - " & UCase(Fichier) & _
" n'existe pas ou a été déplacé." & vbCrLf & vbCrLf & _
"Impossible de continuer.", vbOKOnly, _
"Ouverture des dossiers")
Else
'Le Fichier existe
Trouvé = True
End If
End Function
'---------------------------------------------------------------
Private Function OuvrirFichier(Chemin, Chemin2, Fichier) As Boolean
Dim FileNum As Integer, ErrNum As Integer
' Le Fichier est-il déja disponible s
' sur le PC (en local)?
On Error Resume Next
Set W = Workbooks(Fichier)
If Err = 0 Then
Debug.Print Err
'Fichier Ouvert en local
OuvertLocal = True
Exit Function
Else
'Err=9
Debug.Print Err
'Fichier non ouvert en local
OuvertLocal = False
End If
If OuvertLocal = False Then
'Le Fichier n'est pas ouvert localement,
'est-il disponible sur le réseau?
On Error Resume Next
FileNum = FreeFile()
Open (Chemin & "" & Chemin2 & "" & Fichier) _
For Input Lock Read As #FileNum
Close FileNum
ErrNum = Err
On Error GoTo 0
Select Case ErrNum
Case 0
'Fichier non utilisé
Occupé = False
Case 70
'Fichier utilisé
Occupé = True
Mess = MsgBox("Le dossier - " & UCase(F ichier) & _
"n'est pas disponible. Merci de renouvele r " & _
"votre demande ultérieurement.", _
vbOKOnly, "Ouverture des dossiers ")
Case Else
Error ErrNum
End Select
End If
End Function
'---------------------------------------------------------------
MichD
------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :
77f50e45-6255-4bb7-83e3-cfe56978f...@l16g2000vbl.googlegroups.com...
Bonsoir les gurus,
j'ai une feuille de saisie (excel 2007) qui doit être remplie
par plusieurs personnes. le fichier est enregistré dans un répertoire
d'un réseau local.
heu ... "normalement" (quoique) c'est la dernière personne
qui enregistre le fichier qui "à raison", en écrasant éventuellemen t
la saisie d'autre personnes ...
Je crois savoir qu'une gestion d'accès concurrents existe, mais ...
de mémoire, cela génère des fichiers excel très gros (ce qui est peut
être
normal).
j'aimerai expérimenter (grâce à votre aide) une autre méthode.
supposons :
PIERRE doit remplir les cellules de G10 à G15
ISABELLE " " " " G16 à G17
LUCIEN ------------------------------------- G18 à G20.
j'imagine que, lorsque Pierre saisi quelque chose en G10, puis G11,
etc .... une macro
irait écrire un fichier excel nommé (par exemple pierrejanvier.xls)
De la même façon, Isabelle aurait son fichier isabellejanvier.xls, et
lucienjanvier.xls.
la feuille principale feuille.xls, ne serait à aucun moment
enregistrée ! et, par contre
à l'ouverture de cette feuille, les valeurs des cellules
correspondantes seraient affichées
purement et simplement dans feuille.xls (et on n'affiche rien si les
feuilles secondaires n'existent pas).
Est-ce que, avec un petit exemple, un guru pourrait me montrer comment
lorsque dans la feuille.xls on saisie une valeur dans G10, la plage
[G10:G15] est
enregistrée dans le fichier secondaire ?
Au delà de la "pratique", je suis preneur des suggestions éclairées
de tous !
Merci
José
Bonjour,
Supposons que les 3 personnes ouvrent le fichier en même temps,
chacun remplit la section des données comme il se doit...
le hic, seules les données de celui qui fermera le fichier en dernier s eront enregistrées.
Tu pourrais créer 3 fichiers (1 pour chacun) et un fichier de consolida tion ayant une petite macro
qui se chargerait de mettre tout à jour à chaque ouverture.
Une autre alternative est une macro qui indique aux personnes subséquen tes que le fichier est déjà
ouvert par quelqu'un d'autre et qu'il est par conséquent non disponible pour le moment.
Voici un bout de code à partir duquel tu pourrais travailler. Perso, je ne l'ai jamais testé.
Écris par Michel Rameaux la proposition originale de Sigonneau et Cie
'---------------------------------------------------------------
Sub DémoOuvrirFichier()
Dim Chemin As String, Chemin2 As String
Dim Fichier As String
' Classeur nécessaire :
Chemin = _
Workbooks("Gestion.xls").Worksheets("Données").Range("A1").Value
Chemin2 = "Suivi"
Fichier = "Données.xls"
'Test de l'existence du fichier et son chemin
Call ExisteFichier(Chemin, Chemin2, Fichier)
If Trouvé = False Then
Call FichierAbsent
'Le Fichier n'existe pas :
'traitement de l 'erreur
GoTo FichierAbsent
Exit Sub
End If
'Test d'Ouverture du classeur
Call OuvrirFichier(Chemin, Chemin2, Fichier)
'Traitement
If Occupé = True Then
GoTo FichierUtilisé ' Traitement de l'erreur
Exit Sub
Else
If OuvertLocal = True Then
MsgBox "Tout va bien, mais le fichier " & _
"est ouvert localement"
Exit Sub
Else
MsgBox "Tout va bien. On ouvre le fichier"
End If
End If
Exit Sub
FichierAbsent:
' Placer ici le code
MsgBox "Le fichier n'existe pas"
Exit Sub
FichierUtilisé:
' Placer ici le code
MsgBox "Le fichier n'est pas disponible"
End Sub
'---------------------------------------------------------------
Private Function ExisteFichier(Chemin, Chemin2, Fichier) As Boolean
If Dir(Chemin & "" & Chemin2 & "" & Fichier) = "" Then
' Le Fichier n'existe pas
Trouvé = False
Mess = MsgBox("Le dossier - " & UCase(Fichier) & _
" n'existe pas ou a été déplacé." & vbCrLf & vbCrLf & _
"Impossible de continuer.", vbOKOnly, _
"Ouverture des dossiers")
Else
'Le Fichier existe
Trouvé = True
End If
End Function
'---------------------------------------------------------------
Private Function OuvrirFichier(Chemin, Chemin2, Fichier) As Boolean
Dim FileNum As Integer, ErrNum As Integer
' Le Fichier est-il déja disponible s
' sur le PC (en local)?
On Error Resume Next
Set W = Workbooks(Fichier)
If Err = 0 Then
Debug.Print Err
'Fichier Ouvert en local
OuvertLocal = True
Exit Function
Else
'Err=9
Debug.Print Err
'Fichier non ouvert en local
OuvertLocal = False
End If
If OuvertLocal = False Then
'Le Fichier n'est pas ouvert localement,
'est-il disponible sur le réseau?
On Error Resume Next
FileNum = FreeFile()
Open (Chemin & "" & Chemin2 & "" & Fichier) _
For Input Lock Read As #FileNum
Close FileNum
ErrNum = Err
On Error GoTo 0
Select Case ErrNum
Case 0
'Fichier non utilisé
Occupé = False
Case 70
'Fichier utilisé
Occupé = True
Mess = MsgBox("Le dossier - " & UCase(F ichier) & _
"n'est pas disponible. Merci de renouvele r " & _
"votre demande ultérieurement.", _
vbOKOnly, "Ouverture des dossiers ")
Case Else
Error ErrNum
End Select
End If
End Function
'---------------------------------------------------------------
MichD
------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :
Bonsoir les gurus,
j'ai une feuille de saisie (excel 2007) qui doit être remplie
par plusieurs personnes. le fichier est enregistré dans un répertoire
d'un réseau local.
heu ... "normalement" (quoique) c'est la dernière personne
qui enregistre le fichier qui "à raison", en écrasant éventuellemen t
la saisie d'autre personnes ...
Je crois savoir qu'une gestion d'accès concurrents existe, mais ...
de mémoire, cela génère des fichiers excel très gros (ce qui est peut
être
normal).
j'aimerai expérimenter (grâce à votre aide) une autre méthode.
supposons :
PIERRE doit remplir les cellules de G10 à G15
ISABELLE " " " " G16 à G17
LUCIEN ------------------------------------- G18 à G20.
j'imagine que, lorsque Pierre saisi quelque chose en G10, puis G11,
etc .... une macro
irait écrire un fichier excel nommé (par exemple pierrejanvier.xls)
De la même façon, Isabelle aurait son fichier isabellejanvier.xls, et
lucienjanvier.xls.
la feuille principale feuille.xls, ne serait à aucun moment
enregistrée ! et, par contre
à l'ouverture de cette feuille, les valeurs des cellules
correspondantes seraient affichées
purement et simplement dans feuille.xls (et on n'affiche rien si les
feuilles secondaires n'existent pas).
Est-ce que, avec un petit exemple, un guru pourrait me montrer comment
lorsque dans la feuille.xls on saisie une valeur dans G10, la plage
[G10:G15] est
enregistrée dans le fichier secondaire ?
Au delà de la "pratique", je suis preneur des suggestions éclairées
de tous !
Merci
José
Bonjour,
Supposons que les 3 personnes ouvrent le fichier en même temps,
chacun remplit la section des données comme il se doit...
le hic, seules les données de celui qui fermera le fichier en dernier seront enregistrées.
Tu pourrais créer 3 fichiers (1 pour chacun) et un fichier de consolidation ayant une petite macro
qui se chargerait de mettre tout à jour à chaque ouverture.
Une autre alternative est une macro qui indique aux personnes subséquentes que le fichier est déjà
ouvert par quelqu'un d'autre et qu'il est par conséquent non disponible pour le moment.
Voici un bout de code à partir duquel tu pourrais travailler. Perso, je ne l'ai jamais testé.
Écris par Michel Rameaux la proposition originale de Sigonneau et Cie
'---------------------------------------------------------------
Sub DémoOuvrirFichier()
Dim Chemin As String, Chemin2 As String
Dim Fichier As String
' Classeur nécessaire :
Chemin = _
Workbooks("Gestion.xls").Worksheets("Données").Range("A1").Value
Chemin2 = "Suivi"
Fichier = "Données.xls"
'Test de l'existence du fichier et son chemin
Call ExisteFichier(Chemin, Chemin2, Fichier)
If Trouvé = False Then
Call FichierAbsent
'Le Fichier n'existe pas :
'traitement de l 'erreur
GoTo FichierAbsent
Exit Sub
End If
'Test d'Ouverture du classeur
Call OuvrirFichier(Chemin, Chemin2, Fichier)
'Traitement
If Occupé = True Then
GoTo FichierUtilisé ' Traitement de l'erreur
Exit Sub
Else
If OuvertLocal = True Then
MsgBox "Tout va bien, mais le fichier " & _
"est ouvert localement"
Exit Sub
Else
MsgBox "Tout va bien. On ouvre le fichier"
End If
End If
Exit Sub
FichierAbsent:
' Placer ici le code
MsgBox "Le fichier n'existe pas"
Exit Sub
FichierUtilisé:
' Placer ici le code
MsgBox "Le fichier n'est pas disponible"
End Sub
'---------------------------------------------------------------
Private Function ExisteFichier(Chemin, Chemin2, Fichier) As Boolean
If Dir(Chemin & "" & Chemin2 & "" & Fichier) = "" Then
' Le Fichier n'existe pas
Trouvé = False
Mess = MsgBox("Le dossier - " & UCase(Fichier) & _
" n'existe pas ou a été déplacé." & vbCrLf & vbCrLf & _
"Impossible de continuer.", vbOKOnly, _
"Ouverture des dossiers")
Else
'Le Fichier existe
Trouvé = True
End If
End Function
'---------------------------------------------------------------
Private Function OuvrirFichier(Chemin, Chemin2, Fichier) As Boolean
Dim FileNum As Integer, ErrNum As Integer
' Le Fichier est-il déja disponible s
' sur le PC (en local)?
On Error Resume Next
Set W = Workbooks(Fichier)
If Err = 0 Then
Debug.Print Err
'Fichier Ouvert en local
OuvertLocal = True
Exit Function
Else
'Err=9
Debug.Print Err
'Fichier non ouvert en local
OuvertLocal = False
End If
If OuvertLocal = False Then
'Le Fichier n'est pas ouvert localement,
'est-il disponible sur le réseau?
On Error Resume Next
FileNum = FreeFile()
Open (Chemin & "" & Chemin2 & "" & Fichier) _
For Input Lock Read As #FileNum
Close FileNum
ErrNum = Err
On Error GoTo 0
Select Case ErrNum
Case 0
'Fichier non utilisé
Occupé = False
Case 70
'Fichier utilisé
Occupé = True
Mess = MsgBox("Le dossier - " & UCase(Fichier) & _
"n'est pas disponible. Merci de renouveler " & _
"votre demande ultérieurement.", _
vbOKOnly, "Ouverture des dossiers")
Case Else
Error ErrNum
End Select
End If
End Function
'---------------------------------------------------------------
MichD
------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :
Bonsoir les gurus,
j'ai une feuille de saisie (excel 2007) qui doit être remplie
par plusieurs personnes. le fichier est enregistré dans un répertoire
d'un réseau local.
heu ... "normalement" (quoique) c'est la dernière personne
qui enregistre le fichier qui "à raison", en écrasant éventuellement
la saisie d'autre personnes ...
Je crois savoir qu'une gestion d'accès concurrents existe, mais ...
de mémoire, cela génère des fichiers excel très gros (ce qui est peut
être
normal).
j'aimerai expérimenter (grâce à votre aide) une autre méthode.
supposons :
PIERRE doit remplir les cellules de G10 à G15
ISABELLE " " " " G16 à G17
LUCIEN ------------------------------------- G18 à G20.
j'imagine que, lorsque Pierre saisi quelque chose en G10, puis G11,
etc .... une macro
irait écrire un fichier excel nommé (par exemple pierrejanvier.xls)
De la même façon, Isabelle aurait son fichier isabellejanvier.xls, et
lucienjanvier.xls.
la feuille principale feuille.xls, ne serait à aucun moment
enregistrée ! et, par contre
à l'ouverture de cette feuille, les valeurs des cellules
correspondantes seraient affichées
purement et simplement dans feuille.xls (et on n'affiche rien si les
feuilles secondaires n'existent pas).
Est-ce que, avec un petit exemple, un guru pourrait me montrer comment
lorsque dans la feuille.xls on saisie une valeur dans G10, la plage
[G10:G15] est
enregistrée dans le fichier secondaire ?
Au delà de la "pratique", je suis preneur des suggestions éclairées
de tous !
Merci
José
Bonjour,
Supposons que les 3 personnes ouvrent le fichier en même temps,
chacun remplit la section des données comme il se doit...
le hic, seules les données de celui qui fermera le fichier en dernier seront enregistrées.
Tu pourrais créer 3 fichiers (1 pour chacun) et un fichier de consolidation ayant une petite macro
qui se chargerait de mettre tout à jour à chaque ouverture.
Une autre alternative est une macro qui indique aux personnes subséquentes que le fichier est déjà
ouvert par quelqu'un d'autre et qu'il est par conséquent non disponible pour le moment.
Voici un bout de code à partir duquel tu pourrais travailler. Perso, je ne l'ai jamais testé.
Écris par Michel Rameaux la proposition originale de Sigonneau et Cie
'---------------------------------------------------------------
Sub DémoOuvrirFichier()
Dim Chemin As String, Chemin2 As String
Dim Fichier As String
' Classeur nécessaire :
Chemin = _
Workbooks("Gestion.xls").Worksheets("Données").Range("A1").Value
Chemin2 = "Suivi"
Fichier = "Données.xls"
'Test de l'existence du fichier et son chemin
Call ExisteFichier(Chemin, Chemin2, Fichier)
If Trouvé = False Then
Call FichierAbsent
'Le Fichier n'existe pas :
'traitement de l 'erreur
GoTo FichierAbsent
Exit Sub
End If
'Test d'Ouverture du classeur
Call OuvrirFichier(Chemin, Chemin2, Fichier)
'Traitement
If Occupé = True Then
GoTo FichierUtilisé ' Traitement de l'erreur
Exit Sub
Else
If OuvertLocal = True Then
MsgBox "Tout va bien, mais le fichier " & _
"est ouvert localement"
Exit Sub
Else
MsgBox "Tout va bien. On ouvre le fichier"
End If
End If
Exit Sub
FichierAbsent:
' Placer ici le code
MsgBox "Le fichier n'existe pas"
Exit Sub
FichierUtilisé:
' Placer ici le code
MsgBox "Le fichier n'est pas disponible"
End Sub
'---------------------------------------------------------------
Private Function ExisteFichier(Chemin, Chemin2, Fichier) As Boolean
If Dir(Chemin & "" & Chemin2 & "" & Fichier) = "" Then
' Le Fichier n'existe pas
Trouvé = False
Mess = MsgBox("Le dossier - " & UCase(Fichier) & _
" n'existe pas ou a été déplacé." & vbCrLf & vbCrLf & _
"Impossible de continuer.", vbOKOnly, _
"Ouverture des dossiers")
Else
'Le Fichier existe
Trouvé = True
End If
End Function
'---------------------------------------------------------------
Private Function OuvrirFichier(Chemin, Chemin2, Fichier) As Boolean
Dim FileNum As Integer, ErrNum As Integer
' Le Fichier est-il déja disponible s
' sur le PC (en local)?
On Error Resume Next
Set W = Workbooks(Fichier)
If Err = 0 Then
Debug.Print Err
'Fichier Ouvert en local
OuvertLocal = True
Exit Function
Else
'Err=9
Debug.Print Err
'Fichier non ouvert en local
OuvertLocal = False
End If
If OuvertLocal = False Then
'Le Fichier n'est pas ouvert localement,
'est-il disponible sur le réseau?
On Error Resume Next
FileNum = FreeFile()
Open (Chemin & "" & Chemin2 & "" & Fichier) _
For Input Lock Read As #FileNum
Close FileNum
ErrNum = Err
On Error GoTo 0
Select Case ErrNum
Case 0
'Fichier non utilisé
Occupé = False
Case 70
'Fichier utilisé
Occupé = True
Mess = MsgBox("Le dossier - " & UCase(Fichier) & _
"n'est pas disponible. Merci de renouveler " & _
"votre demande ultérieurement.", _
vbOKOnly, "Ouverture des dossiers")
Case Else
Error ErrNum
End Select
End If
End Function
'---------------------------------------------------------------
MichD
------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :
77f50e45-6255-4bb7-83e3-cfe56978f...@l16g2000vbl.googlegroups.com...
Bonsoir les gurus,
j'ai une feuille de saisie (excel 2007) qui doit être remplie
par plusieurs personnes. le fichier est enregistré dans un répertoire
d'un réseau local.
heu ... "normalement" (quoique) c'est la dernière personne
qui enregistre le fichier qui "à raison", en écrasant éventuellement
la saisie d'autre personnes ...
Je crois savoir qu'une gestion d'accès concurrents existe, mais ...
de mémoire, cela génère des fichiers excel très gros (ce qui est peut
être
normal).
j'aimerai expérimenter (grâce à votre aide) une autre méthode.
supposons :
PIERRE doit remplir les cellules de G10 à G15
ISABELLE " " " " G16 à G17
LUCIEN ------------------------------------- G18 à G20.
j'imagine que, lorsque Pierre saisi quelque chose en G10, puis G11,
etc .... une macro
irait écrire un fichier excel nommé (par exemple pierrejanvier.xls)
De la même façon, Isabelle aurait son fichier isabellejanvier.xls, et
lucienjanvier.xls.
la feuille principale feuille.xls, ne serait à aucun moment
enregistrée ! et, par contre
à l'ouverture de cette feuille, les valeurs des cellules
correspondantes seraient affichées
purement et simplement dans feuille.xls (et on n'affiche rien si les
feuilles secondaires n'existent pas).
Est-ce que, avec un petit exemple, un guru pourrait me montrer comment
lorsque dans la feuille.xls on saisie une valeur dans G10, la plage
[G10:G15] est
enregistrée dans le fichier secondaire ?
Au delà de la "pratique", je suis preneur des suggestions éclairées
de tous !
Merci
José
Bonjour,
Supposons que les 3 personnes ouvrent le fichier en même temps,
chacun remplit la section des données comme il se doit...
le hic, seules les données de celui qui fermera le fichier en dernier seront enregistrées.
Tu pourrais créer 3 fichiers (1 pour chacun) et un fichier de consolidation ayant une petite macro
qui se chargerait de mettre tout à jour à chaque ouverture.
Une autre alternative est une macro qui indique aux personnes subséquentes que le fichier est déjà
ouvert par quelqu'un d'autre et qu'il est par conséquent non disponible pour le moment.
Voici un bout de code à partir duquel tu pourrais travailler. Perso, je ne l'ai jamais testé.
Écris par Michel Rameaux la proposition originale de Sigonneau et Cie
'---------------------------------------------------------------
Sub DémoOuvrirFichier()
Dim Chemin As String, Chemin2 As String
Dim Fichier As String
' Classeur nécessaire :
Chemin = _
Workbooks("Gestion.xls").Worksheets("Données").Range("A1").Value
Chemin2 = "Suivi"
Fichier = "Données.xls"
'Test de l'existence du fichier et son chemin
Call ExisteFichier(Chemin, Chemin2, Fichier)
If Trouvé = False Then
Call FichierAbsent
'Le Fichier n'existe pas :
'traitement de l 'erreur
GoTo FichierAbsent
Exit Sub
End If
'Test d'Ouverture du classeur
Call OuvrirFichier(Chemin, Chemin2, Fichier)
'Traitement
If Occupé = True Then
GoTo FichierUtilisé ' Traitement de l'erreur
Exit Sub
Else
If OuvertLocal = True Then
MsgBox "Tout va bien, mais le fichier " & _
"est ouvert localement"
Exit Sub
Else
MsgBox "Tout va bien. On ouvre le fichier"
End If
End If
Exit Sub
FichierAbsent:
' Placer ici le code
MsgBox "Le fichier n'existe pas"
Exit Sub
FichierUtilisé:
' Placer ici le code
MsgBox "Le fichier n'est pas disponible"
End Sub
'---------------------------------------------------------------
Private Function ExisteFichier(Chemin, Chemin2, Fichier) As Boolean
If Dir(Chemin & "" & Chemin2 & "" & Fichier) = "" Then
' Le Fichier n'existe pas
Trouvé = False
Mess = MsgBox("Le dossier - " & UCase(Fichier) & _
" n'existe pas ou a été déplacé." & vbCrLf & vbCrLf & _
"Impossible de continuer.", vbOKOnly, _
"Ouverture des dossiers")
Else
'Le Fichier existe
Trouvé = True
End If
End Function
'---------------------------------------------------------------
Private Function OuvrirFichier(Chemin, Chemin2, Fichier) As Boolean
Dim FileNum As Integer, ErrNum As Integer
' Le Fichier est-il déja disponible s
' sur le PC (en local)?
On Error Resume Next
Set W = Workbooks(Fichier)
If Err = 0 Then
Debug.Print Err
'Fichier Ouvert en local
OuvertLocal = True
Exit Function
Else
'Err=9
Debug.Print Err
'Fichier non ouvert en local
OuvertLocal = False
End If
If OuvertLocal = False Then
'Le Fichier n'est pas ouvert localement,
'est-il disponible sur le réseau?
On Error Resume Next
FileNum = FreeFile()
Open (Chemin & "" & Chemin2 & "" & Fichier) _
For Input Lock Read As #FileNum
Close FileNum
ErrNum = Err
On Error GoTo 0
Select Case ErrNum
Case 0
'Fichier non utilisé
Occupé = False
Case 70
'Fichier utilisé
Occupé = True
Mess = MsgBox("Le dossier - " & UCase(Fichier) & _
"n'est pas disponible. Merci de renouveler " & _
"votre demande ultérieurement.", _
vbOKOnly, "Ouverture des dossiers")
Case Else
Error ErrNum
End Select
End If
End Function
'---------------------------------------------------------------
MichD
------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :
Bonsoir les gurus,
j'ai une feuille de saisie (excel 2007) qui doit être remplie
par plusieurs personnes. le fichier est enregistré dans un répertoire
d'un réseau local.
heu ... "normalement" (quoique) c'est la dernière personne
qui enregistre le fichier qui "à raison", en écrasant éventuellement
la saisie d'autre personnes ...
Je crois savoir qu'une gestion d'accès concurrents existe, mais ...
de mémoire, cela génère des fichiers excel très gros (ce qui est peut
être
normal).
j'aimerai expérimenter (grâce à votre aide) une autre méthode.
supposons :
PIERRE doit remplir les cellules de G10 à G15
ISABELLE " " " " G16 à G17
LUCIEN ------------------------------------- G18 à G20.
j'imagine que, lorsque Pierre saisi quelque chose en G10, puis G11,
etc .... une macro
irait écrire un fichier excel nommé (par exemple pierrejanvier.xls)
De la même façon, Isabelle aurait son fichier isabellejanvier.xls, et
lucienjanvier.xls.
la feuille principale feuille.xls, ne serait à aucun moment
enregistrée ! et, par contre
à l'ouverture de cette feuille, les valeurs des cellules
correspondantes seraient affichées
purement et simplement dans feuille.xls (et on n'affiche rien si les
feuilles secondaires n'existent pas).
Est-ce que, avec un petit exemple, un guru pourrait me montrer comment
lorsque dans la feuille.xls on saisie une valeur dans G10, la plage
[G10:G15] est
enregistrée dans le fichier secondaire ?
Au delà de la "pratique", je suis preneur des suggestions éclairées
de tous !
Merci
José
Imagine que les 3 usagers travaillent en même temps dans le fichier.
Seules les données du dernier usager à la fermeture du fichier seront présentes
dans le classeur. Les données des deux autres auront été écrasé es. En conséquence,
le fichier ne recevra que les données du dernier fichier! Non ?
Le principe, chaque usager à une copie différente du même fichier. Chacun remplit la section qui lui est assignée.
Dans le fichier de consolidation, tu crées une macro qui s'exécute au moment de l'ouverture du fichier (ou autre moment)
et qui est appelée par le Workbook_Open du ThisWorkbook. Cette macro a pour objet de ressembler les données des
3 autres fichiers...
MichD
Imagine que les 3 usagers travaillent en même temps dans le fichier.
Seules les données du dernier usager à la fermeture du fichier seront présentes
dans le classeur. Les données des deux autres auront été écrasé es. En conséquence,
le fichier ne recevra que les données du dernier fichier! Non ?
Le principe, chaque usager à une copie différente du même fichier. Chacun remplit la section qui lui est assignée.
Dans le fichier de consolidation, tu crées une macro qui s'exécute au moment de l'ouverture du fichier (ou autre moment)
et qui est appelée par le Workbook_Open du ThisWorkbook. Cette macro a pour objet de ressembler les données des
3 autres fichiers...
MichD
Imagine que les 3 usagers travaillent en même temps dans le fichier.
Seules les données du dernier usager à la fermeture du fichier seront présentes
dans le classeur. Les données des deux autres auront été écrasé es. En conséquence,
le fichier ne recevra que les données du dernier fichier! Non ?
Le principe, chaque usager à une copie différente du même fichier. Chacun remplit la section qui lui est assignée.
Dans le fichier de consolidation, tu crées une macro qui s'exécute au moment de l'ouverture du fichier (ou autre moment)
et qui est appelée par le Workbook_Open du ThisWorkbook. Cette macro a pour objet de ressembler les données des
3 autres fichiers...
MichD
Imagine que les 3 usagers travaillent en même temps dans le fichier.
Seules les données du dernier usager à la fermeture du fichier seront présentes
dans le classeur. Les données des deux autres auront été écrasées. En conséquence,
le fichier ne recevra que les données du dernier fichier! Non ?
Le principe, chaque usager à une copie différente du même fichier. Chacun remplit la section qui lui est assignée.
Dans le fichier de consolidation, tu crées une macro qui s'exécute au moment de l'ouverture du fichier (ou autre moment)
et qui est appelée par le Workbook_Open du ThisWorkbook. Cette macro a pour objet de ressembler les données des
3 autres fichiers...
MichD
Imagine que les 3 usagers travaillent en même temps dans le fichier.
Seules les données du dernier usager à la fermeture du fichier seront présentes
dans le classeur. Les données des deux autres auront été écrasées. En conséquence,
le fichier ne recevra que les données du dernier fichier! Non ?
Le principe, chaque usager à une copie différente du même fichier. Chacun remplit la section qui lui est assignée.
Dans le fichier de consolidation, tu crées une macro qui s'exécute au moment de l'ouverture du fichier (ou autre moment)
et qui est appelée par le Workbook_Open du ThisWorkbook. Cette macro a pour objet de ressembler les données des
3 autres fichiers...
MichD
Imagine que les 3 usagers travaillent en même temps dans le fichier.
Seules les données du dernier usager à la fermeture du fichier seront présentes
dans le classeur. Les données des deux autres auront été écrasées. En conséquence,
le fichier ne recevra que les données du dernier fichier! Non ?
Le principe, chaque usager à une copie différente du même fichier. Chacun remplit la section qui lui est assignée.
Dans le fichier de consolidation, tu crées une macro qui s'exécute au moment de l'ouverture du fichier (ou autre moment)
et qui est appelée par le Workbook_Open du ThisWorkbook. Cette macro a pour objet de ressembler les données des
3 autres fichiers...
MichD