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

Macros et VBA Excel Discussion :

sélectionner un répertoire en 64 bits [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 62
    Par défaut sélectionner un répertoire en 64 bits
    Bonjour,
    Dans une application que j'ai créée, j'ai disposé des boutons pour sélectionner des chemins de répertoire. Le problème c'est que ça bloque avec les changements vba dus au 64 bits. J'ai bien lu l'aide du site mais je ne comprends pas du tout comment reconnaître les variables long à modifier et celles qu'il faut conserver. Et comme je n'ai pas d'ordinateur 64 bits, je ne pas tester si ce que je fais fonctionne.

    J'aimerais que le code ci-dessous fonctionne en s'adaptant à la version (64 bits ou 32 bits) de l'utilisateur. Qui peut m'aider ?
    Et qui accepterait de tester le résultat final en 64 bits ?

    Voilà le code :
    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
    41
    42
    43
    Option Explicit
     
    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
     
    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
    Le fichier joint contient uniquement un bouton et le code ci-dessus
    sélectionner un répertoire.xls

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut,tu liras (ou reliras) avec interêt http://arkham46.developpez.com/artic...ice/vba64bits/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 62
    Par défaut
    Oui, j'ai déjà lu l'article mais je ne comprends pas ce qu'est un pointeur et Excel 2003 n'a pas supporté les ajouts de codes conformes à ce qui était marqué dans l'article donc je demande de l'aide.

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 62
    Par défaut
    Je pense avoir compris comment faire la bascule entre 64 bits et 32 bits.
    Pour l'adapation véritable au 64 bits on verra plus tard parce que pour l'instant, ça ne passionne pas vraiment les foules.

    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
    41
    42
    43
    44
    45
     
    Option Explicit
    #If Win64 = False Then
            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
     
            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
    #End If
    et pour le bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton3_Click()
        #If Win64 = False Then
            Range("B2") = SelectFolder("Choisir un répertoire", 0)
        #Else
            MsgBox "Ce bouton ne fonctionne pas dans Excel 64 bits."
        #End If
    End Sub

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    ci c'est pour selectionner un dossier (folder) tu a (xldialogfolderpicker) integré dans l'application depuis 2002 si je me trompe pas


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

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. [VBA] Sélectionner un répertoire
    Par skual dans le forum Général VBA
    Réponses: 19
    Dernier message: 03/03/2006, 12h26
  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