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 et hWnd [FAQ]


Sujet :

VBA

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Par défaut [Résolu] VBA et hWnd
    Bonjour

    je souhaite utiliser la propriété .hWnd dans un programme fait en VBA. J'ai un message d'erreur me disant que cette propriété est inconnue.

    Comment y remédier ?

    merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 17
    Par défaut
    Bonjour !
    Pourrais-tu préciser un peu sur cette propriété, s'il te plait ?

    -Wintermute

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Par défaut
    mon but est d'ouvrir une fenetre permettant de sélectionner un répertoire. Poue ce faire, il y a une aide dans la FAQ. Mais ce code ne marche qu'en VB et non en VBA. Le problème vient de hWnd utilisé dans le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MsgBox SelectFolder("Sélectionnez un répertoire :", Me.hWnd)
    avec :
    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
     
    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(260, vbNullChar)
        SHGetPathFromIDList lpIDList, strBuffer
        SelectFolder = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
    End If
     
    End Function
    et la déclaration :

    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
     
     
    Private Const BIF_RETURNONLYFSDIRS = 1
    Private Const BIF_DONTGOBELOWDOMAIN = 2
     
    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
     
    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

    est ce qq1 peut me dire comment faire cela en VBA ?

  4. #4
    Membre confirmé

    Inscrit en
    Décembre 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 21
    Par défaut
    Ajoute cette déclaration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Declare Function FindWindow Lib "User32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    ... et remplace ensuite ton instruction par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      MsgBox SelectFolder("Sélectionnez un répertoire :", _
        FindWindow(vbNullString, Application.Caption))
    Bonne chance.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Par défaut
    oki, merci beaucoup, ça marche !

    A bientôt !

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 4
    Par défaut
    Salut!

    j'utilise cette fonction dont je voudrais l'appeler avec un bouton qui me demandrait de choisir le dossier et une fois le choix fait que le textbox affiche le chemin mais la tout ce qu'on peut faire c'est d'afficher un msgbox avec le chemin.

    quelqu'un sait comment faire ??

    merci

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 4
    Par défaut
    arf c'était facile j'ai trouvé lol...

    faut juste mettre ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Text2.Text = SelectFolder("Sélectionnez un répertoire :", Me.hWnd)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA] [Interface] BringToFront/SendToBack
    Par DarkVader dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/10/2002, 14h29
  2. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  3. [VBA-E] [Excel] Tri automatique
    Par bovi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/10/2002, 10h19
  4. [VBA-E] [Excel] Filtrer le donnees d'une sheet
    Par donia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/09/2002, 10h55
  5. problème avec VBA
    Par Delph dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2002, 13h15

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