Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/04/2007, 09h52   #1
Invité régulier
 
Inscription : avril 2007
Messages : 85
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2007
Messages : 85
Points : 5
Points : 5
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 :
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
jackfred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 20h18   #2
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
Bonsoir


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

Code :
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


Citation:
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 :
1
2
        Print #1, "Usager: " & Usager & ";" & "Ordi: " & Machine & _
            ";" & "Date: " & Now & ";" & "Nom: " & NomFichier


michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 10h06   #3
Invité régulier
 
Inscription : avril 2007
Messages : 85
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2007
Messages : 85
Points : 5
Points : 5
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
jackfred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 10h28   #4
Invité régulier
 
Inscription : avril 2007
Messages : 85
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : avril 2007
Messages : 85
Points : 5
Points : 5
A j'oubliais


pour :
Code :
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 :
Open rang(A3).value For Append As #1
ou qque chose du style.


Merci
jackfred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 19h57   #5
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonsoir

Tu peux essayer:

Code :
1
2
3
Open Range("A3").Value For Append As #1
    Print #1, Now & ";" & Environ("username")
Close #1

michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h00.


 
 
 
 
Partenaires

Hébergement Web