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

VB 6 et antérieur Discussion :

Verifier si fichier deja ouvert ou non


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Verifier si fichier deja ouvert ou non
    Bonjour,
    j'ai développé une application vb6 qui va écrire dans un fichier excel présent sur le réseau, or si le fichier est déjà ouvert par quelqu'un d'autre sur le réseau, le programme plante, j'aimerais juste faire un contrôle d'accès sur ce fichier pour vérifier avant de l'ouvrir s'il est déjà utilisé ou non et par quel utilisateur, et afficher un msgbox pour en avertir l'utilisateur (Utilisez le programme ultérieurement...)

    merci d'avance à ceux qui m'aideront

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Il plante parce que tu cherches à le modifier sans en vérifier les droits.
    Jette un œil à UserStatus et les fonctions connexes

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    non je ne pense pas, car s'il n'est pas utilisé le programme marche très bien.

    met un fichier excel sur le réseau de ton entreprise, et demande a 2 utilisateurs de l'ouvrir, tu verras qu'il n'y en a qu'un qui pourra faire des modifs dessus (et oui, c'est pas du google docs) et le 2e n'y aura accès qu'en lecture seule, et le probleme c'est mon programme va chercher et ecrire des données dans ce fichier, et vu que je n'y ai accès qu'en lecture seule quand il est déja ouvert, sa plante..


    C'est pourquoi j'aimerais faire une vérification si le fichier est déjà ouvert ou non, mais je ne sais pas comment m'y prendre !
    merci

    Citation Envoyé par Paindep Voir le message
    met un fichier excel sur le réseau de ton entreprise, et demande a 2 utilisateurs de l'ouvrir, tu verras qu'il n'y en a qu'un qui pourra faire des modifs dessus (et oui, c'est pas du google docs) et le 2e n'y aura accès qu'en lecture seule
    C'est pour rire, je me doute que tu sais deja sa xD

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Voici un bout de code pour tester si un fichier est déjà ouvert ou non:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Declare Function lOpen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
    Private Declare Function lClose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
     
    Private Function IsFileInUse(fName As String) As Boolean
        Dim hFile As Long
        Dim lastErr As Long
        ' On initialise le handle et la variable recevant l'erreur.
        hFile = -1
        lastErr = 0
        ' On ouvre le fichier pour la lecture
        hFile = lOpen(fName, &H10)
        ' Sinon on affiche l'erreur
        If hFile = -1 Then
            lastErr = Err.LastDllError
        Else
             ' On s'assure de fermer le fichier ouvert
            lClose (hFile)
        End If
        ' On vérifie s'il n'y a pas Violation de partage
        IsFileInUse = (hFile = -1) And (lastErr = 32)
    End Function
    J'espère que ça résout ton problème.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    lopen ou createfile même combat.
    UserStatus retournant la liste de tous les utilisateurs qui n'ont pas que des droits d'accès en lecture seule
    suffisait à ses besoins.

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    lopen ou createfile même combat.
    UserStatus ......suffisait à ses besoins.
    OK, peut-être dans ce cas précis.
    Mais l'exemple que j'ai proposé prend en charge tout type de fichier, qu'on utilise EXCEL ou non.

    Pour être franc, je n'ai utilisé les BDD sous VB6 que très sommairement, d'où ma proposition.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    merci a vous pour les reponses

    Je vais tester ton code et te dire ce qu'il en est.

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par Paindep Voir le message
    ...
    met un fichier excel sur le réseau de ton entreprise, et demande a 2 utilisateurs de l'ouvrir, tu verras qu'il n'y en a qu'un qui pourra faire des modifs dessus (et oui, c'est pas du google docs) et le 2e n'y aura accès qu'en lecture seule,...
    pas forcément .... si l'option partage est activée, l'écriture est possible pour les 2 utilisateurs...

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/07/2012, 13h51
  2. Copier fichier deja ouvert
    Par crochepatte dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/02/2009, 21h41
  3. [VB]Savoir si un fichier est ouvert ou non
    Par voileux dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/01/2006, 16h01
  4. Fichiers deja ouvert
    Par bakonu dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 01/07/2005, 13h53
  5. [VBA-E] Macro ouverture fichier déja ouvert
    Par bhaal76 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 14h30

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