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

Access Discussion :

Fichier ouvert & username ?


Sujet :

Access

  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 50
    Par défaut Fichier ouvert & username ?
    Bonjour,

    Je dois injecter des fichiers Excel dans une base et je voudrais donc mettre un controle me signalant les fichiers ouverts et le login de l'utilisateur qui l'utilise avant de lancer le traitement...

    J'ai donc commencé mon controle avec le code suivant :

    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
    ...
    Dim strRep as string: strRep = "D:\datas\fu\"
    Dim strFic as string
    Dim strMsg as string: strMsg=""
     
    strFic = Dir(strRep + "*.xls"): i = 0
    Do Until Len(strFic) = 0
        If IsFileOpen(strRep + strFic) Then
            If strMsg = "" Then strMsg = "Fichier(s) ouvert(s) dans " & strRep & " :" & Chr(10) & Chr(13)
            strMsg = strMsg & strFic & Chr(10) & Chr(13)
        End If
        strFic = Dir()
    Loop
     
    If strMsg <> "" Then
        MsgBox strMsg, vbCritical + vbOKOnly
        Exit Sub
    End If
    ...
    pour le moment j'affiche juste un message avec les infos mais à terme je veux utiliser NETSEND pour la prévenir de fermer le fichier
    D'où la nécessité d'obtenir le username...

    Merci pour les infos que vous pourriez m'apporter

    Seb

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par défaut
    dans le forum
    fais ta recherche
    et ton bonheur
    tu trouveras
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 50
    Par défaut
    Ma recherche ne donne pas le résultat que je cherche... (sinon je n'aurais pas posté )

    Si tu parles de Environ("USERNAME") ou de CreateObject("WScript.NetWork").UserName,
    cela ne correspond par à ma demande car cela me donne mon login ce qui n'est pas très utile...

    Pour le moment j'utilise la méthode IsFileOpen (posté par =JBO=) et vais prévenir en direct l'utilisateur mais je voudrais lui envoyer un message via NET SEND
    Je vais aussi mettre en application le partage des classeurs (conseillé par =JBO= toujours le même )
    Mais il en arrivent plusieurs par semaine dans ce répertoire et il va falloir que je développe une routine qui controle les classeurs du répertoire pour les mettre en partage...
    Au moins je ne suis pas bloqué mais s'il y avait vraiment une façon de récupérer le login de la personne qui a ouvert le fichier cela pourrait servir dans d'autre circonstance...

    Merci

    Seb

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Environ("username") donne le login name et c'est normalement via ce nom que tu peux trouver l'utilisateur sur le réseau.

    NET SEND est en deux mots.

    Si tu tapes la commande set en dos prompt tu veras tous les paramètre de environ disponibles.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Tu as aussi la solution des API pour le net send.

    Citation Envoyé par Code
    Option&#160;Compare&#160;Database

    Private&#160;Declare&#160;Function&#160;NetMessageBufferSend&#160;Lib&#160;"netapi32.dll"&#160;_
    (ByVal&#160;servername&#160;As&#160;String,&#160;_
    ByVal&#160;msgname&#160;As&#160;String,&#160;_
    ByVal&#160;fromname&#160;As&#160;String,&#160;_
    ByVal&#160;Buffer&#160;As&#160;String,&#160;_
    ByVal&#160;BufSize&#160;As&#160;Long)&#160;As&#160;Long

    Private&#160;Const&#160;NERR_SUCCESS&#160;As&#160;Long&#160;=&#160;0
    Private&#160;Const&#160;NERR_BASE&#160;As&#160;Long&#160;=&#160;2100
    Private&#160;Const&#160;NERR_NetworkError&#160;As&#160;Long&#160;=&#160;(NERR_BASE&#160;+&#160;36)
    Private&#160;Const&#160;NERR_NameNotFound&#160;As&#160;Long&#160;=&#160;(NERR_BASE&#160;+&#160;173)
    Private&#160;Const&#160;NERR_UseNotFound&#160;As&#160;Long&#160;=&#160;(NERR_BASE&#160;+&#160;150)
    Private&#160;Const&#160;ERROR_ACCESS_DENIED&#160;As&#160;Long&#160;=&#160;5
    Private&#160;Const&#160;ERROR_BAD_NETPATH&#160;As&#160;Long&#160;=&#160;53
    Private&#160;Const&#160;ERROR_NOT_SUPPORTED&#160;As&#160;Long&#160;=&#160;50
    Private&#160;Const&#160;ERROR_INVALID_PARAMETER&#160;As&#160;Long&#160;=&#160;87
    Private&#160;Const&#160;ERROR_INVALID_NAME&#160;As&#160;Long&#160;=&#160;123

    Public&#160;Function&#160;NetSendMessage(ByVal&#160;sSendTo&#160;As&#160;String,&#160;ByVal&#160;sMessage&#160;As&#160;String)&#160;As&#160;Long
    &#160;&#160;&#160;&#160;Dim&#160;ret&#160;As&#160;Long
    &#160;&#160;&#160;&#160;
    &#160;&#160;&#160;&#160;'convert&#160;ANSI&#160;strings&#160;to&#160;UNICODE
    &#160;&#160;&#160;&#160;sSendTo&#160;=&#160;StrConv(sSendTo,&#160;vbUnicode)
    &#160;&#160;&#160;&#160;sMessage&#160;=&#160;StrConv(sMessage,&#160;vbUnicode)
    &#160;&#160;&#160;&#160;'Send&#160;a&#160;network&#160;message&#160;to&#160;a&#160;remote&#160;computer
    &#160;&#160;&#160;&#160;NetSendMessage&#160;=&#160;NetMessageBufferSend(vbNullString,&#160;sSendTo,&#160;vbNullString,&#160;_
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;sMessage,&#160;Len(sMessage))
    End&#160;Function

    'returns&#160;the&#160;description&#160;of&#160;the&#160;Netapi&#160;Error&#160;Code
    Public&#160;Function&#160;NetSendErrorMessage(ByVal&#160;ErrNum&#160;As&#160;Long)&#160;As&#160;String
    &#160;&#160;&#160;&#160;Select&#160;Case&#160;ErrNum
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case&#160;NERR_SUCCESS
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NetSendErrorMessage&#160;=&#160;"The&#160;message&#160;was&#160;successfully&#160;sent"
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case&#160;NERR_NameNotFound
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NetSendErrorMessage&#160;=&#160;"Send&#160;To&#160;not&#160;found"
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case&#160;NERR_NetworkError
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NetSendErrorMessage&#160;=&#160;"General&#160;network&#160;error&#160;occurred"
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case&#160;NERR_UseNotFound
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NetSendErrorMessage&#160;=&#160;"Network&#160;connection&#160;not&#160;found"
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case&#160;ERROR_ACCESS_DENIED
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NetSendErrorMessage&#160;=&#160;"Access&#160;to&#160;computer&#160;denied"
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case&#160;ERROR_BAD_NETPATH
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NetSendErrorMessage&#160;=&#160;"Sent&#160;From&#160;server&#160;name&#160;not&#160;found."
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case&#160;ERROR_INVALID_PARAMETER
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NetSendErrorMessage&#160;=&#160;"Invalid&#160;parameter(s)&#160;specified."
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case&#160;ERROR_NOT_SUPPORTED
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NetSendErrorMessage&#160;=&#160;"Network&#160;request&#160;not&#160;supported."
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case&#160;ERROR_INVALID_NAME
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NetSendErrorMessage&#160;=&#160;"Illegal&#160;character&#160;or&#160;malformed&#160;name."
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Case&#160;Else
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;NetSendErrorMessage&#160;=&#160;"Unknown&#160;error&#160;executing&#160;command."
    &#160;&#160;&#160;End&#160;Select
    End&#160;Function

  6. #6
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 50
    Par défaut
    Citation Envoyé par Heureux-oli
    Environ("username") donne le login name et c'est normalement via ce nom que tu peux trouver l'utilisateur sur le réseau.
    Comment détourner la valeur de environ("username") pour qu'il indique le nom de l'utilisateur qui a ouvert le fichier ?

    Citation Envoyé par Cafeine
    Tu as aussi la solution des API pour le net send.
    Merci pour le tuyau mais comment renseigner sSendTo avec le nom de l'utilisateur ayant ouvert le fichier ?

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Peut-être à l'aide d'un log dans une table.
    Tu indroduit le noms de l'utilisateur quand il auvre et tu mets un paramètre en plus quand il quitte.

    Id
    Name -> user name local reproduit dans la table
    Yes/no -> Yes quand il quitte.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  8. #8
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 50
    Par défaut
    Impossible...
    Voici le cas de figure : Les fichiers Excel sont utilisés par des utilisateurs d'un service annexe et ce sont eux qui créer les nouveaux fichiers...
    Je dois faire des statistiques sur les informations inscrites sur ces fichiers et donc je liste les fichiers du répertoire pour les importer dans une base à laquelle les utilisateurs n'accèdent pas; Mais lors de l'importation si les fichiers sont en cours d'utilisation il m'est impossible de finir le traitement correctement...

    Peut etre aussi y a-t-il un moyen d'ouvrir le fichier en read-only et de transférer les infos via une routine d'accès au fichier ouvert via une automation excel... assez barge quand même... J'crois que je vais me limiter au partage du tableau avec une routine qui verifie le soir l'etat des nouveau fichier pour forcer le partage...

    A terme, je développerai la partie "Front" de cette base pour qu'ils saississent les données directement dessus via des formulaires développé en VB ou ASP... ( Projet annexe à valider par la direction) car les utilisateurs n'ont que Office Standard... Pas d'ACCESS...

    Si j'avance sur mon pb, je vous communiquerai le code que j'aurais utilisé...

    Mais si une ame charitable avait une solution pour connaitre le nom de l'utilisateur courant d'un fichier ouvert sur le réseau... surement dans un module de classe du type wscript... A éplucher...

    Merci
    Seb

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Bonjour sl.info,
    Citation Envoyé par sl.info
    Mais si une ame charitable avait une solution pour connaitre le nom de l'utilisateur courant d'un fichier ouvert sur le réseau...
    Il faut que tu regardes la fonction API NetFileEnum.
    Voici un lien vers un exemple de mise en oeuvre de cette fonction: http://vbnet.mvps.org/index.html?cod...etfileenum.htm

    Il ne reste plus qu'à l'adapter à ton cas (et à poster le résultat dans les codes sources du forum ).

    Bon courage.

  10. #10
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 50
    Par défaut
    ------------------------------
    Il faut avoir des droits d'administrateur pour utiliser cette commande... Donc non utilisable dans mon cas de simple utilisateur
    ------------------------------

    Merci pour le tuyau
    Je ne connaissais pas ce site...
    Il faut dire que je ne suis pas à l'aise dans la langue de Shakespeare mais quand il le faut, je fais l'effort...

    Merci
    Seb

  11. #11
    Membre éclairé
    Homme Profil pro
    DBA - Développeur BI
    Inscrit en
    Avril 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : DBA - Développeur BI
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2003
    Messages : 442
    Par défaut Net send avec Access
    Citation Envoyé par cafeine
    Tu as aussi la solution des API pour le net send.
    Salut Cafeine j'ai recopié ton code mais comment faire pour l'utiliser car si je fais appel à ce code de la façon suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     NetSendMessage(ListMachine, Message)
    . VBA me signale une erreur de compilation "Attendu = ", alors je suppose qu'il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ????=NetSendMessage(ListMachine, Message)
    mais c'est quoi ce quelquechose. En fait je voudrai envoyer des net send à partir d'un formulaire à une liste de machine que j'ai déjà. Merci d'avance pour ton aide
    .

Discussions similaires

  1. [VBA][Office 2003] Fichier ouvert depuis IE ou Word?
    Par nbaudraz dans le forum VBA Word
    Réponses: 2
    Dernier message: 12/10/2005, 14h27
  2. tester si fichier ouvert
    Par nbelg27 dans le forum Access
    Réponses: 6
    Dernier message: 08/09/2005, 10h19
  3. Réponses: 5
    Dernier message: 13/05/2005, 12h26
  4. Nombre maximum de fichiers ouverts par processus
    Par galinoo dans le forum Windows
    Réponses: 3
    Dernier message: 27/10/2004, 17h47
  5. Nombre de fichiers ouverts simultanément
    Par matrixfan dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/05/2002, 17h47

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