OVH Cloud OVH Cloud

commandbutton qui ouvre un dossier

11 réponses
Avatar
sophie
Bonjour !

Je me permet de vous demander votre aide.
Dans un de mes userforms, j'ai crée un bouton "dossier" qui a pour fonction
d'aller ouvrir un dossier "mes documents" dès que l'on clique dessus, grace à
cette écriture:

Private Sub CommandButton7_Click()
Const SW_SHOWNORMAL& = 1&
ShellExecute 0&, "Explore", CurDir, vbNullString, vbNullString,
SW_SHOWNORMAL
End Sub

Cependant, cela m'ouvre bien "mes documents" mais j'aimerais que ça aille
plus loin, c'est à dire qu'il ouvre directemlent un dossier se trouvant dans
mes documents : l'adresse est la suivante: "C:\Documents and
Settings\eleve\Mes documents\franck"

Pouvez vous m'aidez, et me dire comment faire?

Merci d'avance

Sophie

1 réponse

1 2
Avatar
GD
Bonsour® anonymousA
as-tu chargé le APIguide.exe ???, API-Guide 3.7 (+/- 2.20MB)(*)

http://users.chello.be/cr27630/3.7/agsetup.exe

on y trouve la signification et explication de chaques parametres et
quasiment à chaque fois un exemple fonctionnel !!!
oui en anglais.... comme VBA non ?

ex au hasard :
Infos:
The GetProcessTimes function obtains timing information about a specified
process.

Déclaration :
Declare Function GetProcessTimes Lib "kernel32" (ByVal hProcess As Long,
lpCreationTime As FILETIME, lpExitTime As FILETIME, lpKernelTime As
FILETIME, lpUserTime As FILETIME) As Long

Parameters :
· hProcess
An open handle that specifies the process whose timing information is
sought. This handle must be created with PROCESS_QUERY_INFORMATION access.
For more information, see Process Objects.
· lpCreationTime
Points to a FILETIME structure that receives the creation time of the
process.
· lpExitTime
Points to a FILETIME structure that receives the exit time of the process.
If the process has not exited, the content of this structure is undefined.
· lpKernelTime
Points to a FILETIME structure that receives the amount of time that the
process has executed in kernel mode. The time that each of the threads of
the process has executed in kernel mode is determined, and then all of those
times are summed together to obtain this value.
· lpUserTime
Points to a FILETIME structure that receives the amount of time that the
process has executed in user mode. The time that each of the threads of the
process has executed in user mode is determined, and then all of those times
are summed together to obtain this value.

Return values :
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error
information, call GetLastError.

Exemple code:
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Declare Function GetProcessTimes Lib "kernel32" (ByVal hProcess As
Long, lpCreationTime As FILETIME, lpExitTime As FILETIME, lpKernelTime As
FILETIME, lpUserTime As FILETIME) As Long
Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime
As FILETIME, lpLocalFileTime As FILETIME) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As
FILETIME, lpSystemTime As SYSTEMTIME) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Sub Form_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail:
Dim FT0 As FILETIME, FT1 As FILETIME, ST As SYSTEMTIME
GetProcessTimes GetCurrentProcess, FT1, FT0, FT0, FT0
FileTimeToLocalFileTime FT1, FT1
FileTimeToSystemTime FT1, ST
MsgBox "This program was started at " + CStr(ST.wHour) + ":" +
CStr(ST.wMinute) + "." + CStr(ST.wSecond) + " on " + CStr(ST.wMonth) + "/" +
CStr(ST.wDay) + "/" + CStr(ST.wYear)
End Sub

@+
wrote:
merci mais je connias ce site et d'ailleurs, je connias aussi une
bibliothèque ( pas complète mais pas mal) de certains API en Français,
mais rien qui t'explique vriament clairement la théorie et les
significations des différents paramètres. C'est là hélas bien toute la
question.
Par ailleurs, si je crois bien me rappeler. Ce site est en Anglais.

A+


Bonsour® anonymousA
si tu ne le connais déja, consulte le site : AllApi.net
je te conseillerai même de télécharger le APIGuide.exe
@+

bonjour,

je vais garder celle-là dans mes archives. Je m'intéresse de + en +
aux API. Même achété un bouquin Américain pour mieux m'y mettre.En
Francais, un bouquin sur cette question n'existe pas ou plus et ca
ne semble pas interesser un éditeur Francais de faire faire
l'adaptation Française. Si j'avais le temps et un bon dictionnaire
technique, je me lancerais dans la tradution et le collerais sur le
Net parceque c'est vraiment trop con d'être obligé de patouiller
d'une part sur MDSN et sur les quelques procs que certains
contributeurs Français ou Canadiens ont écrit pour bien comprendre
comment se servir de ces merveilleux outils .

A+




Bonjour,

Juste pour le plaisir de la chose. Une procédure VBA pour chercher
un fichier, en passant directement par l'API Windows.


Dans un module standard

Declare Function SearchTreeForFile Lib "imagehlp" (ByVal RootPath
As String, ByVal InputPathName As String, ByVal OutputPathBuffer As
String) As Long
Public Const MAX_PATH = 260

Dans le code d'un bouton de la barre d'outils "Contrôles", en
mettant le nom du fichier dans la cellule a1, et en laissant b1
vide.

Private Sub CommandButton1_Click()
'Clément Marcotte
'Amos (Québec)
'Grandement inspiré de allapi.net
'URL: http://www.allapi.net/
'E-Mail:
Dim tempStr As String, Ret As Long
Dim message As String, laplace As String
'create a buffer string
tempStr = String(MAX_PATH, 0)
'Si le fichier existe, le résultat est 1
'autrement, le résultat est 0
Ret = SearchTreeForFile("c:", Range("a1").Value, tempStr)
If Ret <> 0 Then
laplace = Left$(tempStr, InStr(1, tempStr, Chr$(0)) - 1)
Range("b1").Value = laplace
message = "Le fichier " & Range("a1").Value & vbNewLine
message = message & " a été trouvé dans " & vbNewLine
message = message & laplace
MsgBox message

Else
laplace = "Fichier non trouvé ou inexistant"
Range("b1").Value = laplace
MsgBox laplace
End If
End Sub


"anonymousA" a écrit dans le
message de
news:

une méthode pour rechercher un fichier dont on ne connait pas
l'emplacement et ensuite l'ouvrir. Faut-il bien sur qu'il soit
comptaible avec une ouverture sous Excel sinon faut employer
d'autres moyens pour l'ouverture. Dans ce qui suit ,on cherche à
faire ouvrir au user un type de


fichier bine

précis. pour le fso.GetFile(filetoopen) qui ici teste qu'il s'agit


d'un

fichier texte ou d'un doc sans extension , on peut bien sur


remplacer <>

"File" par different de "Feuille de calcul Microsoft Excel".

Set fso = CreateObject("Scripting.FileSystemObject")

ctrl1 = False

While ctrl1 = False
Set filetopen = Nothing
filetoopen = Application.GetOpenFilename
If filetoopen <> false Then
If (fso.GetFile(filetoopen).Type <> "File" And
fso.GetFile(filetoopen).Type <> "Document texte") Then
MsgBox "Vous avez choisi un fichier dont le type n'est pas
document texte ou sans extension" & Chr(13) & "vous devez choisir
un autre fichier ou Annuler"
Else
ctrl1 = True
End If
Else
Set fso = Nothing
With Application
.DisplayAlerts = True
.ScreenUpdating = True
.AskToUpdateLinks = True
.EnableCancelKey = xlInterrupt
End With
Exit Sub
End If
Wend

Set fso = Nothing


Workbooks.OpenText Filename:=filetoopen, Origin:=xlWindows,


Tab:=True,

Other:=True, OtherChar:="!"

il y a bien sur plus simple.ci-dessous , extrait de l'aide d'Excel

fileToOpen = Application _
.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
MsgBox "Open " & fileToOpen
End If




J'ose avouer que pour moi non plus ça ne marche pas... Pour



répondre à

Sophie, va voir ma question que je viens de poser, tu y trouveras



ta réponse.

Thierry.




re,

qu'est ce qui ne marche pas ? dans quelles circonstances ? parce
que comme code y'a pas plus simple.

A+



C'est bien du VBA, mais ta réponse ne marche pas... pourtant





je pensais que

marquer jsute l'adresse du dossier fonctionnerai, mais
apparemment non !! Merci de ton aide

Sophie


"anonymousA" wrote:


bonjour,

si c'est du VBA ( mais j'ai un doute compte tenu de ce que






tu écris),

pourquoi tout simplement ne pas écrire

ChDir "C:Documents and SettingseleveMes






documentsfranck"

Application.GetOpenFilename

A+




Bonjour !

Je me permet de vous demander votre aide.
Dans un de mes userforms, j'ai crée un bouton "dossier"







qui a pour fonction

d'aller ouvrir un dossier "mes documents" dès que l'on







clique dessus, grace à

cette écriture:

Private Sub CommandButton7_Click()
Const SW_SHOWNORMAL& = 1&
ShellExecute 0&, "Explore", CurDir, vbNullString,
vbNullString, SW_SHOWNORMAL
End Sub

Cependant, cela m'ouvre bien "mes documents" mais







j'aimerais que ça aille

plus loin, c'est à dire qu'il ouvre directemlent un







dossier se trouvant dans

mes documents : l'adresse est la suivante: "C:Documents







and

SettingseleveMes documentsfranck"

Pouvez vous m'aidez, et me dire comment faire?

Merci d'avance

Sophie




















1 2