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

VBA Discussion :

[VBA]récupérer nom fichier


Sujet :

VBA

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Points : 33
    Points
    33
    Par défaut [VBA]récupérer nom fichier
    Bonjour, j'utilise le code ci-dessous pour faire un listing des ouvertures de fichier sur un fichier texte.
    Ca marche tres bien.
    Par contre j'aurais aimer que le nom du fichier ouvert s'inscrive également.
    qq'un pourait me dire quel est le code à rajouter.. Merci

    De plus... ca par contre je ne sais pas si c'est possible, j'airais aimé que les données (dates, nom d'utilisateur, nom d'ordinateur, fichier ouvert) s'enregistrent sur un fichier excel que je puisse traiter directement (et afin de faire resortir la "date de dernière visite" à chaque utilisateur.

    Merci de votre aide


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    ' ----------------------------------------------------
    ' Dans le haut d'1 module ordinaire - Déclaration des API
    ' ----------------------------------------------------
     
    Declare Function GetComputerName& Lib "kernel32" Alias "GetComputerNameA" (ByVal lbbuffer As String, nSize As Long)
    Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    Declare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
    '---------------------------------
    Function OSMachineName() As String
    'Dave Peterson, mpep
    Dim Buffer As String * 256
    Dim BuffLen As Long
    Dim lngX As Long
    Dim strCompName As String
    BuffLen = 255
    If GetComputerName(Buffer, BuffLen) Then
    OSMachineName = Left(Buffer, BuffLen)
    End If
    End Function
    '---------------------------------
    Function OSUserName() As String
    'Dave Peterson, mpep
    Dim Buffer As String * 256
    Dim BuffLen As Long
    BuffLen = 256
    If GetUserName(Buffer, BuffLen) Then
    OSUserName = Left(Buffer, BuffLen - 1)
    End If
    End Function
    '---------------------------------
    Copie la procédure suivante dans le ThisWorkbook de ton classeur
    '---------------------------------
    Private Sub Workbook_Open()
     
    Dim Usager As String, Machine As String
    Usager = OSUserName()
    Machine = OSMachineName()
    Open "C:CompteRendu.txt" For Append As #1
    Write #1, "Usager : " & Usager & " " & "Ordi : " & Machine & " " & "Date : " & Now
    Close #1
     
    End Sub

  2. #2
    Expert éminent sénior

    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
    Points : 20 144
    Points
    20 144
    Par défaut
    Bonsoir


    Pour la première partie de ta question, tu peux tester:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Workbook_Open()
        Dim Usager As String, Machine As String
        Dim NomFichier As String
        
        NomFichier = ThisWorkbook.Name
        Usager = OSUserName()
        Machine = OSMachineName()
        
        Open "C:\CompteRendu.txt" For Append As #1
            Print #1, "Usager: " & Usager & " " & "Ordi: " & Machine & _
                " " & "Date: " & Now & "  " & "Nom: " & NomFichier
        Close #1
    End Sub


    De plus... ca par contre je ne sais pas si c'est possible, j'airais aimé que les données (dates, nom d'utilisateur, nom d'ordinateur, fichier ouvert) s'enregistrent sur un fichier excel que je puisse traiter directement (et afin de faire resortir la "date de dernière visite" à chaque utilisateur.

    Je ne suis pas sur de comprendre:
    Pourquoi tu n'ouvres pas ton fichier txt dans Excel.

    Tu peux par exemple définir le séparateur adapté lorsque tu enregistres les données.
    Voici un exemple qui utilise le point virgule ( ; ) comme séparateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Print #1, "Usager: " & Usager & ";" & "Ordi: " & Machine & _
                ";" & "Date: " & Now & ";" & "Nom: " & NomFichier


    michel

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Points : 33
    Points
    33
    Par défaut
    Merci,

    Je n'ai pas encore testé, mais je pense que ca devrai marcher.
    Je vous tiens informé.


    Pour la secondepartie, en fait, j'ai oublié de mentionner que plusieurs personnes vont se connecter sur le fichier et que je ne pourrais pas tjs etre là pour importer le fichier texte sur Excel, tous les jours.

    Il faudrait donc que cela se fasse tt seul .

    Merci

    fred

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Points : 33
    Points
    33
    Par défaut
    A j'oubliais


    pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Open "C:\CompteRendu.txt" For Append As #1
    Le chemin d'accés au fichier se trouve dans une cellule.
    Est-il possible d'utiliser le contenu de cette cellule dans cette ligne de code.
    Du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Open rang(A3).value For Append As #1
    ou qque chose du style.


    Merci

  5. #5
    Expert éminent sénior

    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
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    Tu peux essayer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Open Range("A3").Value For Append As #1
        Print #1, Now & ";" & Environ("username")
    Close #1

    michel

Discussions similaires

  1. [2005] Récupérer nom fichier dans une colonne
    Par faraway dans le forum SSIS
    Réponses: 4
    Dernier message: 08/11/2016, 05h34
  2. Réponses: 2
    Dernier message: 03/05/2012, 13h43
  3. [XL-2002] Récupérer nom fichier ouvert à partir d'une macro XLA
    Par johan89 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/11/2011, 13h20
  4. [PHP 5.3] Récupérer nom fichier + nom répertoire
    Par DarkSeiryu dans le forum Langage
    Réponses: 12
    Dernier message: 25/05/2010, 12h25
  5. Récupérer nom fichier sans extension
    Par Newenda dans le forum MATLAB
    Réponses: 3
    Dernier message: 07/12/2009, 15h49

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