Box "parcourir" en vbs

Box "parcourir" en vbs - VB/VBA/VBS - Programmation

Marsh Posté le 04-07-2005 à 11:12:12    

Bonjour je cherche une box en vbs qui permet de parcourir le disque. je n'ai que la inputbox qui permet uniquement de mettre du texte, mais je voudrais (si ca existe) une boite qui permette de choisir le dossier ou l'on veut sauvegarder son fichier.
 
Merci, julien

Reply

Marsh Posté le 04-07-2005 à 11:12:12   

Reply

Marsh Posté le 04-07-2005 à 17:33:38    

Salut, je sais pas ce que tu entends par vbs mais avec vb(excel) la code suivant permet d'aller choisir un fichier et de récupérer l'adresse sur le disque dur.
 
chemin = Application.GetOpenFilename("All Files (*.*),*.*", , "choix du fichier", , True)
@+

Reply

Marsh Posté le 04-07-2005 à 21:35:41    

J'ai écrit code suivant il y a quelques mois ( préparartion de scripts pour du 2003 server )
 
 
'===================================================
' la fonction suivante permet de choisir un fichier
' Elle retourne  le chemin\nomdufichier
' ou "ANNUL" si appui sur le bouton annuler
'
 
Function select_a_file(direct)
Set objDialog = CreateObject("UserAccounts.CommonDialog" )
 
objDialog.Filter = "Fichiers Excel|*.xls|All Files|*.*"
objDialog.Flags = &H0200
objDialog.FilterIndex = 1
objDialog.InitialDir = direct
intResult = objDialog.ShowOpen
 
If intResult = 0 Then
    select_a_file = "ANNUL"
Else
    select_a_file = objDialog.FileName
End If
End Function

 
 
Big problème : cela ne fonctionne pas sur du 2003 server.
 
 
 
Mais il y a la solution qui fonctionne à la fois sur du xp et du 2003 server  
( à tester sur du 2000 )  
 
set objDialog = CreateObject("SafrcFileDlg.FileOpen" )
objDialog.OpenFileOpenDlg
wscript.echo objDialog.FileName

 

Reply

Marsh Posté le 05-07-2005 à 07:02:29    

Bonjour,
 
Essaye éventuellement ceci :
 

Code :
  1. ReturnOnlyFSDirs = &H0001
  2. Set oShell = WScript.CreateObject("Shell.Application" )
  3. Title = "Veuillez sélectionner un dossier"
  4. Flags=ReturnOnlyFSDirs
  5. 'InitDir = "C:\" '<-- Adapter selon les besoins
  6. Set Item = oShell.BrowseForFolder(0, Title, Flags, InitDir)
  7. If Not Item Is Nothing Then
  8.    Result=Item.Title
  9.    If InStr(1, Result, ":" ) = 0 Then
  10.       Result=Item.ParentFolder.ParseName(Item.Title).Path
  11.    End If
  12.    MsgBox "Dossier sélectionné : " & Result, vbInformation, Title
  13. Else
  14.    MsgBox "Aucun dossier n'a été sélectionné !", vbExclamation, Title
  15. End If
  16. Set oShell = Nothing


 
pelw

Reply

Marsh Posté le 05-07-2005 à 11:31:28    

Citation :

une boite qui permette de choisir le dossier


 
Oups ! ce que j'ai donné est pour la sélection d'un fichier
 
 
le code de pelw ( source ? JCBellamy ? ) est un bon début, mais plante ( chez moi sous xp ) si tu sélectionnes
un dossier tel "poste de travail" ou "mes documents" ( la sélection d'un sous dossier est OK ).
J'ai modifié le code afin qu'il ne plante pas.
 
 
 

Code :
  1. aze = select_a_folder("Sélectionner un dossier,"c:\" )
  2. wscript.echo "On a choisi : " & aze
  3. '===================================================
  4. ' la fonction suivante permet de choisir un dossier
  5. ' Elle retourne "ANNUL" si appuie sur le bouton annuler
  6. '
  7. Function select_a_folder(message,directory)
  8. Const WINDOW_HANDLE = 0
  9. Const NO_OPTIONS = 0
  10. Set objShell = CreateObject("Shell.Application" )
  11. Set objFolder = objShell.BrowseForFolder _
  12.     (WINDOW_HANDLE, message , NO_OPTIONS, directory)
  13. On Error Resume Next
  14. Set objFolderItem = objFolder.Self
  15. If Err <> 0 Then
  16.         select_a_folder = "ANNUL"
  17. Else
  18.         select_a_folder = objFolderItem.Path
  19. end if
  20. On Error GoTo 0
  21. End Function


Message édité par c_moa le 05-07-2005 à 11:32:42
Reply

Marsh Posté le 06-07-2005 à 12:59:04    

pelw a écrit :

Bonjour,
 
Essaye éventuellement ceci :
 

Code :
  1. ReturnOnlyFSDirs = &H0001
  2. Set oShell = WScript.CreateObject("Shell.Application" )
  3. Title = "Veuillez sélectionner un dossier"
  4. Flags=ReturnOnlyFSDirs
  5. 'InitDir = "C:\" '<-- Adapter selon les besoins
  6. Set Item = oShell.BrowseForFolder(0, Title, Flags, InitDir)
  7. If Not Item Is Nothing Then
  8.    Result=Item.Title
  9.    If InStr(1, Result, ":" ) = 0 Then
  10.       Result=Item.ParentFolder.ParseName(Item.Title).Path
  11.    End If
  12.    MsgBox "Dossier sélectionné : " & Result, vbInformation, Title
  13. Else
  14.    MsgBox "Aucun dossier n'a été sélectionné !", vbExclamation, Title
  15. End If
  16. Set oShell = Nothing


 
pelw


 
 
Ici aussi je dois te remercié pelw moi ton code marche bien (je n'ai pas tester le tient c moa car je ne comprend pas les deux arguments qu'il faut mettre dans la fonction), mais par contre j'ai changer le dosser de depart c'est a dire que j'ai mis : InitDir = WshShell.SpecialFolders("MyDocuments" ).
Ce qui marche tres bien, je me retrouve directement dans mes documents, mais le probleme est qu'ensuite l'utilisateur ne peut pas vraiement parcourir son ou ses disk durs, il ne peut aller que dans les repertoires fils et pas dans les parents. Ce qui pose probleme car j'ai pour contrainte d'etre par default dans le dossier my documents mais l'utilisateur doit pouvoir sauvegarder son fichier dans n'importe quel endroit de ses disk.
 
Cordialement julien

Reply

Marsh Posté le 06-07-2005 à 23:03:39    

Petite mistake de ma part, j'ai oublié un " pour la chaine de caractère passée en paramètre.
 
 

Code :
  1. chemin = select_a_folder("Veuiller sélectionner un dossier","c:\" )
  2. ' chemin = select_a_folder("Veuiller sélectionner un dossier","" )
  3. ' le "" permet d'avoir l'arborescence complète
  4. wscript.echo "Le Dossier choisi est : " & chemin
  5. '===================================================
  6. ' la fonction suivante permet de choisir un dossier
  7. ' Elle retourne "ANNUL" si appuie sur le bouton annuler
  8. ' paramètres : message à afficher, directory : dossier ...
  9. Function select_a_folder(message,directory)
  10. Const WINDOW_HANDLE = 0
  11. Const NO_OPTIONS = 0
  12. Set objShell = CreateObject("Shell.Application" )
  13. Set objFolder = objShell.BrowseForFolder _
  14.     (WINDOW_HANDLE, message , NO_OPTIONS, directory)
  15. On Error Resume Next
  16. Set objFolderItem = objFolder.Self
  17. If Err <> 0 Then
  18.         select_a_folder = "ANNUL"
  19. Else
  20.         select_a_folder = objFolderItem.Path
  21. end if
  22. On Error GoTo 0
  23. End Function


 
 
 
Sinon, sauf bizarrerie uniquement sur mes postes ( xp pro sp2 + maj ), on obtient une erreur avec le code proposé par  Pelw si on sélectionne bureau ou poste de travail et que l'on valide ( certains dossiers particuliers ).
 
Si vous avez ou n'avez pas d'erreurs sur les différents codes ci-dessus , merci d'avance pour vos remarques.


Message édité par c_moa le 07-07-2005 à 11:46:15
Reply

Marsh Posté le 07-07-2005 à 13:42:03    

c_moa a écrit :

Petite mistake de ma part, j'ai oublié un " pour la chaine de caractère passée en paramètre.
 
 

Code :
  1. chemin = select_a_folder("Veuiller sélectionner un dossier","c:\" )
  2. ' chemin = select_a_folder("Veuiller sélectionner un dossier","" )
  3. ' le "" permet d'avoir l'arborescence complète
  4. wscript.echo "Le Dossier choisi est : " & chemin
  5. '===================================================
  6. ' la fonction suivante permet de choisir un dossier
  7. ' Elle retourne "ANNUL" si appuie sur le bouton annuler
  8. ' paramètres : message à afficher, directory : dossier ...
  9. Function select_a_folder(message,directory)
  10. Const WINDOW_HANDLE = 0
  11. Const NO_OPTIONS = 0
  12. Set objShell = CreateObject("Shell.Application" )
  13. Set objFolder = objShell.BrowseForFolder _
  14.     (WINDOW_HANDLE, message , NO_OPTIONS, directory)
  15. On Error Resume Next
  16. Set objFolderItem = objFolder.Self
  17. If Err <> 0 Then
  18.         select_a_folder = "ANNUL"
  19. Else
  20.         select_a_folder = objFolderItem.Path
  21. end if
  22. On Error GoTo 0
  23. End Function


 
 
 
Sinon, sauf bizarrerie uniquement sur mes postes ( xp pro sp2 + maj ), on obtient une erreur avec le code proposé par  Pelw si on sélectionne bureau ou poste de travail et que l'on valide ( certains dossiers particuliers ).
 
Si vous avez ou n'avez pas d'erreurs sur les différents codes ci-dessus , merci d'avance pour vos remarques.


 
Tres bien merci, moi ca amrche nikel. Mais j'voue que je suis un peu pointilleux, je voudrais avoir en realité une fenetre qui soit deja sur "mes documents" par exemple mais qu'ensuite on puisse remonter dans l'arborescence... Et aussi si c possible un bouton "bureau" integrer a la fenetre... Je sais je commence a etre relou, mais je me demande si c'est pas possible changeant la valeur des constantes "no options"

Reply

Marsh Posté le 12-07-2005 à 13:58:14    

c_moa a écrit :

Petite mistake de ma part, j'ai oublié un " pour la chaine de caractère passée en paramètre.
 
 

Code :
  1. chemin = select_a_folder("Veuiller sélectionner un dossier","c:\" )
  2. ' chemin = select_a_folder("Veuiller sélectionner un dossier","" )
  3. ' le "" permet d'avoir l'arborescence complète
  4. wscript.echo "Le Dossier choisi est : " & chemin
  5. '===================================================
  6. ' la fonction suivante permet de choisir un dossier
  7. ' Elle retourne "ANNUL" si appuie sur le bouton annuler
  8. ' paramètres : message à afficher, directory : dossier ...
  9. Function select_a_folder(message,directory)
  10. Const WINDOW_HANDLE = 0
  11. Const NO_OPTIONS = 0
  12. Set objShell = CreateObject("Shell.Application" )
  13. Set objFolder = objShell.BrowseForFolder _
  14.     (WINDOW_HANDLE, message , NO_OPTIONS, directory)
  15. On Error Resume Next
  16. Set objFolderItem = objFolder.Self
  17. If Err <> 0 Then
  18.         select_a_folder = "ANNUL"
  19. Else
  20.         select_a_folder = objFolderItem.Path
  21. end if
  22. On Error GoTo 0
  23. End Function


 
 
 
Sinon, sauf bizarrerie uniquement sur mes postes ( xp pro sp2 + maj ), on obtient une erreur avec le code proposé par  Pelw si on sélectionne bureau ou poste de travail et que l'on valide ( certains dossiers particuliers ).
 
Si vous avez ou n'avez pas d'erreurs sur les différents codes ci-dessus , merci d'avance pour vos remarques.


 
 
Bonjour j'avais travailler sur d'autres trucs ses derniers jours mais j'ai aps fini de vous emebeter. Dans cette fenetre parcourrir j'aimerai y ajouter des boutons du type "parent folder" ou "bureau" etc... Quelqu'un pourrai m'aider la dessus?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed