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 28/02/2006, 09h04   #1
Membre à l'essai
 
Inscription : janvier 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 88
Points : 22
Points : 22
Par défaut [VBA] Sélectionner un répertoire

Bonjour tout le monde,

J'ai un controle TextBox et un bouton Parcourir. J'aimerai que, quand je clique sur Parcourir s'ouvre une boite permettant de sélectionner un répertoire.
J'essayé GetOpenFileName mais cela ne marche que pour des fichiers.
J'ai aussi vu quelques sujet la dessus mais pour du Visual Basic.
Y a-t-il un moyen de faire cela simplement en VBA?

Merci d'avance.
skual est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 09h18   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 928
Points : 11 928
Regarde Dialogs, dans l'aide. Mais peut-être
Code :
    Application.Dialogs.Item(xlDialogOpen).Show
A+

PS - Il y a une autre méthode mais là, tout de suite, elle m'échappe. Il y aura bien quelqu'un pour te la donner...

Edit
Je vois que tu n'est pas un nouveau venu sur le forum, donc, tu devrais savoir que les majuscules sont prohibées dans le sujet hormis pour signaler VB / VBA ...
Donc, change ton titre. Débutant est inutile, à ta question, on le verra tout de suite
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 09h47   #3
Membre à l'essai
 
Inscription : janvier 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 88
Points : 22
Points : 22
Cette collection Dialogs est très complète mais je n'y trouve rien pour sélectionner un répertoire.

Quant à:
Code :
1
2
 
Application.Dialogs.Item(xlDialogOpen).Show
Elle ne permet de sélectionner qu'un fichier et non un répertoire et ne renvoie pas le chemin du fichier.

Désolé pour les majuscules (je me disais que si on en utilise pour VB/VBA on pouvait aussi en utiliser pour le reste) mais c'était pas pour crier.
skual est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 10h21   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 928
Points : 11 928
Citation:
Elle ne permet de sélectionner qu'un fichier et non un répertoire
Si, une fois le fichier ouvert
Citation:
et ne renvoie pas le chemin du fichier.
Si, une fois le fichier ouvert.
Mais j'ai vu passer la réponse précise à ta question sur le forum. Réponse donnée par DarkVader. Un peu de recherche dans ses réponses d'il y a 15 jours / 3 semaines...

Bonne chance
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 10h49   #5
Membre à l'essai
 
Inscription : janvier 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 88
Points : 22
Points : 22
Bon, j'ai trouvé un sujet qui se rapproche ici http://www.developpez.net/forums/viewtopic.php?t=449731&highlight=
mais je n'ai pas trop compris en fait.

Tant pis, mon chemin de répertoire sera entré manuellement sans passer par une boite de dialogue Parcourir.

Merci quand même ouskel'n'or. Bonne journée. 8)
skual est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 10h57   #6
Membre confirmé
 
Avatar de repié
 
Inscription : décembre 2004
Messages : 336
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 336
Points : 243
Points : 243
Et la fonction elle ne fait pas ce que tu cherche?
__________________
Pti Pié
repié est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 11h11   #7
Membre à l'essai
 
Inscription : janvier 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 88
Points : 22
Points : 22
Apparemment, cette méthode ne renvoie pas un chemin mais un objet Folder et il faut lui spécifier un chemin en argument (chemin que l'on n'est pas censé connaître).

Mais je sais pas trop en fait, je ne vois pas trop comment l'utiliser. :
skual est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 11h15   #8
Membre confirmé
 
Avatar de repié
 
Inscription : décembre 2004
Messages : 336
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 336
Points : 243
Points : 243
effectivement tu as raison, cette fonction ne semble pas pouvoir te servir
__________________
Pti Pié
repié est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 11h17   #9
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
bonjour

si tu disposes d'Office XP tu peux tester

Code :
1
2
3
4
5
6
7
8
Sub selectionRepertoire_afficherChemin()
Dim Repertoire As FileDialog
 
Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
Repertoire.Show
 
MsgBox Repertoire.SelectedItems(1)
End Sub


bonne journée
michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 11h19   #10
Membre confirmé
 
Avatar de repié
 
Inscription : décembre 2004
Messages : 336
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 336
Points : 243
Points : 243
ton code tourne aussi sur Office 2002!
Mais j'avoue qu'il est quand même bizarre à utiliser!
__________________
Pti Pié
repié est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 11h31   #11
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
Rebonjour Repié

Office XP et Office 2002 : c'est la meme chose


que veux tu dire par "bizarre à utiliser" ? ...;o)


bonne journée
michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 11h40   #12
Membre confirmé
 
Avatar de repié
 
Inscription : décembre 2004
Messages : 336
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 336
Points : 243
Points : 243
ah ok excuse j'ai pas réfléchis!

je trouve ca un peu bizarre parce que je n'avais jamais utilisé une interface telle que celle ci pour trouver un dossier

En fait, dans ma tête, la fenetre qui va demander un dossier c'est celle que certeins logiciels (tels que Winamp ou média player par exemple) propose.
Mais comme ce code fonctionne, c'est nickel!

je le retient!
__________________
Pti Pié
repié est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 11h51   #13
Membre à l'essai
 
Inscription : janvier 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 88
Points : 22
Points : 22
OK merci SilkyRoad mais je suis sous Office 2000 (en entreprise donc difficile pour moi de réclamer XP rien que pour cela).

C'est dommage, la fonction est bien mais effectivement Office 2000 ne reconnaît pas le:
Existe-t-il un équivalent pour Office 2000?

Merci.
skual est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 11h58   #14
Responsable Visual Basic
 
Avatar de ThierryAIM
 
Homme Thierry
Inscription : septembre 2002
Messages : 3 670
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 49
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2002
Messages : 3 670
Points : 5 672
Points : 5 672
essaie avec ça :

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
Private Const BIF_RETURNONLYFSDIRS = 1
Private Const BIF_DONTGOBELOWDOMAIN = 2
Private Type BrowseInfo
    hwndOwner As Long
    pIDLRoot As Long
    pszDisplayName As Long
    lpszTitle As Long
    ulFlags As Long
    lpfnCallback As Long
    lParam As Long
    iImage As Long
End Type
 
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, _
        ByVal lpBuffer As String) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, _
        ByVal lpString2 As String) As Long
 
Public Function SelectFolder(Titre As String, Handle As Long) As String
Dim lpIDList As Long
Dim strBuffer As String
Dim strTitre As String
Dim tBrowseInfo As BrowseInfo
 
    strTitre = Titre
    With tBrowseInfo
        .hwndOwner = Handle
        .lpszTitle = lstrcat(strTitre, "")
        .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
    End With
 
    lpIDList = SHBrowseForFolder(tBrowseInfo)
 
    If (lpIDList) Then
        strBuffer = String(255, vbNullChar)
        SHGetPathFromIDList lpIDList, strBuffer
        SelectFolder = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
    End If
End Function
Code :
1
2
3
Private Sub cmdModifDir_Click()
   Textbox1.Text = SelectFolder("Choisir le répertoire par défaut", 0)
End Sub
__________________
Vous vous posez une question, la réponse est peut-être ici :
Toutes les FAQs VB
Les Cours et Tutoriels VB6/VBScript
Les Sources VB6


Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

MioSkins.org : le site de référence pour GPS et PDA Mitac MIO
iPHONIX.fr : le must francophone des infos pour iPhone, iPad, ...
ThierryAIM est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/02/2006, 12h14   #15
Membre à l'essai
 
Inscription : janvier 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 88
Points : 22
Points : 22
Génial Thierry AIM, j'ai eu un peu peur en voyant le code (je débute) mais je dois dire que ça marche à merveille, je vais maintenant essayer de le comprendre.

Merci beaucoup.
skual est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2006, 14h52   #16
Membre à l'essai
 
Inscription : janvier 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 88
Points : 22
Points : 22
Encore moi, je viens d'avoir un problème.

Le code de Thierry AIM marchait parfaitement bien jusqu'à aujourd'hui mais là après avoir desinstallé Microsoft Visual C++ et Basic 6 de mon PC (je n'utilise que l'éditeur VB d'Excel) j'ai une erreur ici:
Code :
1
2
 
strBuffer = String(255, vbNullChar)
Sur le String(....)

Erreur de type:
Citation:
Erreur de compilation
Projet ou bibliothèque introuvable
Je crois que quand j'ai supprimé MVC++ et B 6, j'ai du supprimer des bibliothèques indispensable.
Je n'ai pourtant rien touché à Microsoft Excel et son éditeur VB.

Est ce je me trompe?
Faut-il rajouter une bibliothèque? Comment?

Merci..
skual est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2006, 17h30   #17
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 928
Points : 11 928
Re-install Excel après l'avoir complètement désinstallé

A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2006, 19h08   #18
Membre à l'essai
 
Inscription : janvier 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 88
Points : 22
Points : 22
OK merci ouskel'n'or, je vais essayer ça.

Bonne soirée.
skual est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2006, 22h37   #19
Responsable Visual Basic
 
Avatar de ThierryAIM
 
Homme Thierry
Inscription : septembre 2002
Messages : 3 670
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 49
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2002
Messages : 3 670
Points : 5 672
Points : 5 672
tu as surement une référence marquée MANQUANTE dans ta liste de références de ton projet VBA
ca ne vient pas de la fonction String
__________________
Vous vous posez une question, la réponse est peut-être ici :
Toutes les FAQs VB
Les Cours et Tutoriels VB6/VBScript
Les Sources VB6


Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

MioSkins.org : le site de référence pour GPS et PDA Mitac MIO
iPHONIX.fr : le must francophone des infos pour iPhone, iPad, ...
ThierryAIM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2006, 12h26   #20
Membre à l'essai
 
Inscription : janvier 2006
Messages : 88
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 88
Points : 22
Points : 22
En fait, je ne peux pas trop réinstaller Excel (je suis en entreprise).

Et bizarrement,après l'erreur de compilation, quand il m'affiche la liste des références, il n'y en a aucune précédée de MANQUANTE.

Je suppose qu'il est diificile de savoir à quelle référence fait précisement appel cette fonction de sélection du répertoire non?

Je crois que je n'ai plus trop de solutions si je ne peux pas réinstaller Excel...

Merci quand même.
skual 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 12h36.


 
 
 
 
Partenaires

Hébergement Web