Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/02/2012, 18h50   #1
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Par défaut Gestion de fichiers

Bonjour le forum,

Ma question concerne une application installée sur plusieurs postes et utilisant les mêmes fichiers installés sur un serveur mais je développe en monoposte et je ne peux pas toujours tout tester...

Dans 95% du temps les fichiers peuvent être utilisés en lecture seule.

1) Quand je veux écrire dans un fichier j'appelle une procédure + fonction qui pour l'instant sait me dire si le fichier est ouvert ( ce serait bien que je complète avec le nom du poste sur lequel il est ouvert...). Mais comment savoir s'il est ouvert en lecture seule ou non.
2) S'il est ouvert en lecture seule sur un autre poste, est ce que je peux l'ouvrir sans alerte pour écrire dedans ?

Merci
Cordialement
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 20h57   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 924
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 924
Points : 7 254
Points : 7 254
Bonjour,

Pour savoir si le fichier est en lecture seul sur ton poste c'est qu'il est ouvert en lecture quelque part ailleur
Code :
1
2
3
4
5
6
7
8
9
10
Dim wrk As Workbook
 
Set wrk = Application.Workbooks.Open("c:\classeur1.xls")
 
If wrk.ReadOnly = True Then
    MsgBox "Fichier déja ouvert en Lecture"
    wrk.Close
Else
    'Code qui fait la modif
End If
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 12h38   #3
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Citation:
Envoyé par jfontaine Voir le message
Pour savoir si le fichier est en lecture seul sur ton poste c'est qu'il est ouvert en lecture quelque part ailleur
Bonjour Jérôme,

Je reformule :
Le fichier x est éventuellement ouvert sur le poste A
Le poste B veut faire un enregistrement sur le fichier x
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
'B teste 
'si x est ouvert 
    ' si oui et readOnly=false
        ' B ne peut pas l'ouvrir
        ' Chercher sur quel poste il est ouvert (Comment ?)
    ' si non il est ouvert avec ReadOnly=True
        ' Voilà ma question 
        ' B peut-il ouvrir x sans que A et B ait un message d'alerte et comment ?
    ' Fin
'sinon
    'B peut ouvrir x
'Fin
Voilà je pense qu'ainsi c'est plus clair.
Merci et bon weekend
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 12h51   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 924
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 924
Points : 7 254
Points : 7 254
Citation:
' Chercher sur quel poste il est ouvert (Comment ?)
La, je ne sais pas comment avoir l'information de l'utilisateur qui a ouvert le fichier en écriture

Citation:
' B peut-il ouvrir x sans que A et B ait un message d'alerte et comment ?
Pour ne pas avoir de message lors de l'ouverture du fichier sur B, tu peux desactiver les alertes, bien penser à les réactiviter après
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Dim wrk As Workbook
 
Application.DisplayAlerts = False
Set wrk = Application.Workbooks.Open("c:\classeur1.xls")
Application.DisplayAlerts = True
 
If wrk.ReadOnly = True Then
    MsgBox "Fichier déja ouvert en Lecture"
    wrk.Close
Else
    'Code qui fait la modif
End If
Sinon, tu peux essayer avec la méthode d'accès sans ouvrir le fichier excel
http://excel.developpez.com/faq/inde...lasseursFermes
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/02/2012, 18h23   #5
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Merci Jérôme,

J'avais effectivement trouvé le code proposé par SilkyRoad mais n'y comprenant strictement rien, je voulais trouver un moyen au "niveau de mes compétences..."
Par ailleurs il n'y a que 2 voire 3 utilisateurs et si la proc d'écriture prend 10 secondes ce sera la bout du monde, donc je vais rester dans la gestion des alertes que tu proposes.
J'ai trouvé comment identidier le user qui a ouvert un fichier, pas encore tout compris, mais ça ne devrait plus tarder !

Bon weekend
Daniel

Citation:
Envoyé par jfontaine Voir le message
Code :
1
2
3
4
5
6
7
8
9
10
Dim wrk As Workbook
 
Set wrk = Application.Workbooks.Open("c:\classeur1.xls")
 
If wrk.ReadOnly = True Then
    MsgBox "Fichier déja ouvert en Lecture"
    wrk.Close
Else
    'Code qui fait la modif
End If
Je suis passé un peu rapidement sur un gros détail :
Si le fichier est ouvert en lecture seule par A, B doit le fermer puis l'ouvrir pour écrire dedans ?
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 18h30   #6
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 924
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 924
Points : 7 254
Points : 7 254
Citation:
Si le fichier est ouvert en lecture seule par A, B doit le fermer puis l'ouvrir pour écrire dedans ?
Non, le fichier est déja ouvert en écriture par B

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim wrk As Workbook
 
Set wrk = Application.Workbooks.Open("c:\classeur1.xls")
 
If wrk.ReadOnly = True Then
    MsgBox "Fichier déja ouvert en Lecture"
    wrk.Close
Else
    'Code qui fait la modif
    wrk.Sheets("Feuil1").Range("A1").Value = "nouvelle valeur"
    wrk.Save
    wrk.Close
End If
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 10h24   #7
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Citation:
Envoyé par jfontaine Voir le message
Non, le fichier est déja ouvert en écriture par B
Bonjour Jérôme,

Désolé mais je crois que l'on se comprend mal.
a) Le fichier X est ouvert sur le poste A en ReadOnly = True
b) B fait une saisie sans avoir ouvert X
c) B veut enregistrer sa saisie sur X donc demande l'ouverture de X en ReadOnly = False
Le test fait apparaître que X est déjà ouvert sur le poste A en ReadOnly = True
Questions :
1) Est ce que B peut ouvrir X en ReadOnly = false et écrire ?
2) Si oui est ce que A pourra continuer à utiliser X pendant que B écrira dans X ?
3) Quand B fermera X en fin de proc d'écriture, est-ce que X restera ouvert en ReadOnly = True sur A ?
4) Si oui je suppose que A ne bénéficiera pas des données enregistrées par B ?

Merci de ta patience
Bon dimanche
Daniel
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 11h00   #8
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 924
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 924
Points : 7 254
Points : 7 254
Citation:
1) Est ce que B peut ouvrir X en ReadOnly = false et écrire ?
Oui
Citation:
2) Si oui est ce que A pourra continuer à utiliser X pendant que B écrira dans X ?
Oui
Citation:
3) Quand B fermera X en fin de proc d'écriture, est-ce que X restera ouvert en ReadOnly = True sur A ?
oui
Citation:
4) Si oui je suppose que A ne bénéficiera pas des données enregistrées par B ?
Il faudra que A ferme le fichier et l'ouvre de nouveau pour voir la modif
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/02/2012, 15h52   #9
Nouveau Membre du Club
 
Homme Daniel CARROUE
Retraité actif passionné
Inscription : janvier 2011
Messages : 75
Détails du profil
Informations personnelles :
Nom : Homme Daniel CARROUE
Localisation : France

Informations professionnelles :
Activité : Retraité actif passionné

Informations forums :
Inscription : janvier 2011
Messages : 75
Points : 31
Points : 31
Comme quoi quand on veut des réponses claires, il faut poser des questions claires !

Et en plus toutes les réponses m'arrangent !
Merci beaucoup
danisoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h27.


 
 
 
 
Partenaires

Hébergement Web