IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Gestion de fichiers [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    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

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    ' 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

    ' 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Membre confirmé
    Homme Profil pro
    Retraité actif passionné
    Inscrit en
    Janvier 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité actif passionné

    Informations forums :
    Inscription : Janvier 2011
    Messages : 78
    Par défaut
    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

  8. #8
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    1) Est ce que B peut ouvrir X en ReadOnly = false et écrire ?
    Oui
    2) Si oui est ce que A pourra continuer à utiliser X pendant que B écrira dans X ?
    Oui
    3) Quand B fermera X en fin de proc d'écriture, est-ce que X restera ouvert en ReadOnly = True sur A ?
    oui
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion de fichier
    Par Zenol dans le forum C++
    Réponses: 6
    Dernier message: 22/09/2005, 15h44
  2. gestion de fichier à partir d'un formulaire
    Par seb59dk dans le forum Access
    Réponses: 3
    Dernier message: 06/09/2005, 16h52
  3. Fonctions de gestion de fichiers
    Par sebduth dans le forum Fortran
    Réponses: 4
    Dernier message: 22/08/2005, 10h38
  4. [JDOM] Gestion "gros fichiers"
    Par Haazheel dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 17/10/2003, 13h42
  5. [Concept] BD ou Gestion par fichier. Intérêt de la BD ?
    Par Cian dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/11/2002, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo