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] Sélectionner un répertoire [Trucs & Astuces]


Sujet :

VBA

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    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.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Regarde Dialogs, dans l'aide. Mais peut-être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    Cette collection Dialogs est très complète mais je n'y trouve rien pour sélectionner un répertoire.

    Quant à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Elle ne permet de sélectionner qu'un fichier et non un répertoire
    Si, une fois le fichier ouvert
    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

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    Bon, j'ai trouvé un sujet qui se rapproche ici http://www.developpez.net/forums/vie...731&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)

  6. #6
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    Et la fonction elle ne fait pas ce que tu cherche?
    Pti Pié

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    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. :

  8. #8
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    effectivement tu as raison, cette fonction ne semble pas pouvoir te servir
    Pti Pié

  9. #9
    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
    bonjour

    si tu disposes d'Office XP tu peux tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  10. #10
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    ton code tourne aussi sur Office 2002!
    Mais j'avoue qu'il est quand même bizarre à utiliser!
    Pti Pié

  11. #11
    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
    Rebonjour Repié

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


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


    bonne journée
    michel

  12. #12
    Membre actif
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Points : 281
    Points
    281
    Par défaut
    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é

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    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.

  14. #14
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    essaie avec ça :

    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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    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.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strBuffer = String(255, vbNullChar)
    Sur le String(....)

    Erreur de type:
    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..

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Re-install Excel après l'avoir complètement désinstallé

    A+

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    OK merci ouskel'n'or, je vais essayer ça.

    Bonne soirée.

  19. #19
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    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

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    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.

Discussions similaires

  1. Débutant : sélectionner un répertoire
    Par Alouka dans le forum MFC
    Réponses: 3
    Dernier message: 11/10/2006, 11h52
  2. Comment faire pour sélectionner un répertoire
    Par ybennani dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 28/06/2006, 10h05
  3. Réponses: 4
    Dernier message: 09/06/2006, 10h08
  4. Comment sélectionner un répertoire ?
    Par Teddy dans le forum Composants VCL
    Réponses: 4
    Dernier message: 06/02/2006, 18h59
  5. sélectionner un répertoire
    Par estelle dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 02/09/2005, 04h53

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