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 :

Ouverture fichier excel


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
    Administrateur de base de données
    Inscrit en
    Mars 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2004
    Messages : 37
    Par défaut Ouverture fichier excel
    Bonjour,

    j'ai un fichier excel qui se trouve sur un disque dur externe et lorsque le fichier est déjà ouvert par un autre utilisateur et que je souhaite l'ouvrir, je ne sais pas qu'il est déjà ouvert..

    Donc, si je veux sauvegarder ma saisie, la sauvegarde plante.

    J'aimerais donc pouvoir à l'ouverture de ce fichier qu'une macro vérifie qu'il est dèjà ouvert par un autre utilisateur et m'avertisse de son ouverture en lecture seule.

    J'ai dèjà essayé de vérifier si il était ouvert en lecture seule mais ce n'est apparemment pas le cas.

    Merci pour votre aide.

    ST

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Il me semble bien avoir déjà répondu à ce genre de question, mais je ne trouve plus où et quand ...

    On recommence donc :

    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
    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 dejaouvert(FileName As String) As Boolean
        Dim fic As Long, crac As Long
        fic = -1: crac = 0
        fic = lOpen(FileName, &H10)
        If fic = -1 Then
            crac = Err.LastDllError
        Else
            lClose (fic)
        End If
        dejaouvert = (fic = -1) And (crac = 32)
    End Function
     
    Private Sub Command1_Click()
      MsgBox dejaouvert("d:\toto.ext")
    End Sub

  3. #3
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Citation Envoyé par sylvain.thibault Voir le message
    Bonjour,

    j'ai un fichier excel qui se trouve sur un disque dur externe et lorsque le fichier est déjà ouvert par un autre utilisateur et que je souhaite l'ouvrir, je ne sais pas qu'il est déjà ouvert..
    Voilà qui est très étrange !
    Tu dois bien avoir un message t'indiquant que le fichier est déjà ouvert, et même (éventuellement) c'est marqué dans la barre de titre [Lecture seule] ou [Groupe de Travail] donc ... rien que ton assertion de départ, j'ai du mal à la comprendre !

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    en complément, une autre possibilité pour vérifier si le classeur est deja ouvert en réseau :

    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
    22
    23
    24
    25
    26
    27
    28
    Sub Test()
        If verifFichierOuvert("Z:\repertoire\nom classeur.xls") Then
            MsgBox "Déjà utilisé"
        Else
            MsgBox "Disponible"
        End If
    End Sub
     
     
    Function verifFichierOuvert(NomFichier As String) As Boolean
        Dim xFile As Integer
        Dim ErrNum As Integer
     
        On Error Resume Next
            xFile = FreeFile()
     
            Open NomFichier For Input Lock Read As #xFile
            Close xFile
            ErrNum = Err
        On Error GoTo 0
     
        Select Case ErrNum
            Case 0
                verifFichierOuvert = False
            Case 70
                verifFichierOuvert = True
        End Select
    End Function


    bonne journée
    michel

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2004
    Messages : 37
    Par défaut
    Lorsque je double-clique sur le fichier excel et qu'il est déjà ouvert, rien ne m'indique que ce fichier est déjà ouvert.

    Les deux codes fournis ne fonctionnent pas car ils ne détectent pas que le fichier est déjà ouvert.

  6. #6
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Citation Envoyé par sylvain.thibault Voir le message
    Lorsque je double-clique sur le fichier excel et qu'il est déjà ouvert, rien ne m'indique que ce fichier est déjà ouvert.
    C'est qu'il n'est pas déjà ouvert !
    Ce que je t'ai décrit est une fonctionnalité de base d'Excel !
    Par contre, ce qui peut se produire, c'est que tu n'aies pas de droit en écriture, ou en modification, ou en suppression (si si) sur les fichiers du dossier, ou sur le dossier concerné. Ce sont des droits définis par l'administrateur système...

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2004
    Messages : 37
    Par défaut
    eh bien si, il est déjà ouvert mais pas par moi ............

    J'ai bien tous les droits sur le répertoire en question

  8. #8
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Oui étrange... et comme le signale Maxence tu devrais avoir un message, sachant que, sinon, les codes de détection d'ouverture en vba sont utilisés en amont d'une manip, pour justement savoir la conduite à tenir.

    Frisson : tu ne donnes pas trop de détails, et je ne vois qu'un possibilité qui permette de reproduire, effectivement le contexte décris :

    Tu parles d'un HD externe, il faudrait donc que le fichier soit sur un HD en usb externe par exemple, et que le fichier en question ne soit pas dans un endroit partagé par les machines considérées.
    - un utilisateur ouvre le fichier
    - un autre, déconnecte le HD, le met sur son micro, ouvre à son tour le fichier => il n'a pas de message à l'ouverture en effet (et les test vba seront négatifs bien sur), fait des modifs, sauvegarde.
    - le premier utilisteur récupère le HD..a toujours son fichier ouvert, a apporté des modifs et gentiment sauvegarde à son tour !
    Là suivant le contexte, tu auras effectivement un message d'erreur genre "ne peut pas accéder...." ou " A été peut-être modifié..."

    Donc pour avancer, explicite ton contexte en détail, et indique le message d'erreur renvoyé...

    cordialement,

    PS : rajout, j'étais resté à 12h25...
    Didier

  9. #9
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2004
    Messages : 37
    Par défaut
    Le HD est toujours connecté au réseau et se trouve dans un local serveur donc jamais débranché....

    Effectivement, si je déplace le même fichier sous un serveur, j'ai bien la gestion de double-ouverture de fichier avec message : "ce fichier est déjà ouvert...."

    le contexte est que je dispose d'un fichier xls sur un disque dur externe toujours connecté au réseau. Lorsqu'un utilisateur utilise le fichier et qu'un second veut l'ouvrir, rien ne l'avertit que ce fichier est déjà ouvert. Le seul moment où il s'en aperçoit, c'est quand il veut enregistrer et là il obtient le message suivant "impossible d'enregistrer les modifications sous le nom ... Un document temporaire a été créé sous le nom '....' . Fermez le document existant, puis ouvrez le document temporaire et réenregistrez-le sous un nouveau nom."

    Mon fichier de départ devient "vide".

    ST

Discussions similaires

  1. pb d'ouverture fichier excel
    Par Phiss dans le forum ASP
    Réponses: 14
    Dernier message: 20/11/2006, 14h41
  2. [VBA-E] cacher l'ouverture fichier excel barre des taches
    Par icicmoi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/05/2006, 17h39
  3. Ouverture fichier excel
    Par licorne dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/04/2006, 16h50
  4. Réponses: 1
    Dernier message: 26/01/2006, 18h16
  5. activation macro lors d'une ouverture fichier Excel
    Par mirumoto dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/05/2005, 15h08

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