merci ixemul [VBA] Browser répertoire [RESOLU] - VB/VBA/VBS - Programmation
Marsh Posté le 24-03-2004 à 12:36:52
Code :
|
Title passé en parametre peut contenir le titre que tu veux affecter a la fenetre de selection de repertoire. Cette Fonction te renvoie le chemin complet du repertoire selectionné
Marsh Posté le 24-03-2004 à 14:14:29
ixemul a écrit :
|
Merci
mais j'ai un petit souci, le compilo m'engueule :
j'ai copié le code que tu m'as donné dans un module de ma feuille excel, j'appelle la fonction choosepath avec un string en parametre dans la procedure de "monbouton_click" et là il aime pas ce genre de chose :
Citation : With tBrowseInfo |
membre de données ou de méthodes introuvables
Marsh Posté le 24-03-2004 à 14:17:13
mmhh.. en effet, c'est du VBA/Excel, les fenetres n'ont apparament pas de hwnd (pas sûr, je ne fait que du *VRAI* VB, si j'ose dire )
Essaye sans initialiser le parametre .hwndOwner, ca devrait marcher
Marsh Posté le 24-03-2004 à 15:14:24
ou sinon regarde du cote de application.hwndowner je sais pas si ca y est dans excel
Marsh Posté le 24-03-2004 à 15:27:04
merci encore pour ces conseils !
bon maintenant c là qu'il rale :
.lpszTitle = lstrcat(szTitle, "" )
il me dit qu'il connait pas la fonction
Marsh Posté le 24-03-2004 à 15:37:03
jazzypec a écrit : merci encore pour ces conseils ! |
bon en fait après un petit ménage (j'ai viré tout ce qui l'emmerdait)
il arrive à m'afficher le browser (nickel merci !)
mais il un prob sur un objet/chaine de caractères :
sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
message : argument ou appel de procédure incorrect
Code :
|
Marsh Posté le 24-03-2004 à 16:04:20
le instr prend au moins 3 arguments en entrée (position de depart, chaine d'origine, chaine a rechercher)
Code :
|
Marsh Posté le 24-03-2004 à 16:13:08
ixemul a écrit : le instr prend au moins 3 arguments en entrée (position de depart, chaine d'origine, chaine a rechercher)
|
non ça vient pas de là, le instr passe avec ou sans la position de départ
à priori le problème est plus "profond"
dans ce passage :
Code :
|
je sélectionne mon disque c:
le Max_path reste vide et sbuffer également
Marsh Posté le 24-03-2004 à 16:15:55
Bon, t'embete pas, remet la syntaxe avec le lstrCat (comme a l'origine de mon bout de code)
et rajoute la declaration suivante:
Code :
|
Marsh Posté le 24-03-2004 à 16:39:48
ixemul a écrit : Bon, t'embete pas, remet la syntaxe avec le lstrCat (comme a l'origine de mon bout de code)
|
ça va un poil mieux, il tolère le lstrcat
en revanche le max path et le sbuffer reste toujours désespérement vide
dsl pour ce "tutos pas-à-pas", mais je suis peu familier avec une utilisation de VB "évolué", j'ai fait du VB de base à l'iut, et le VBA j'ai débuté y a une ou 2 semaine au taf pour des macros en apprenant sur le tas à coup de google et de msgbox
donc merci pour ta patience
Marsh Posté le 24-03-2004 à 16:49:37
je pense que c'est le instr que le vba a du mal a comprendre. Sinon, je vois pas ce code fonctionne parfaitement dans un prog en pure vb
Marsh Posté le 24-03-2004 à 16:51:31
non, en fait j'ai oublié de te dire que MAX_PATH est une constante, initialise la avec une valeur genre :
Code :
|
a placer juste apres les "declare"
Marsh Posté le 24-03-2004 à 17:24:28
ixemul a écrit : non, en fait j'ai oublié de te dire que MAX_PATH est une constante, initialise la avec une valeur genre :
|
JE TE HAIS !
Merci !! Ca marche nickel maintenant !
Code :
|
vraiment merci bcp ixemul pour ta patience et tes conseils
ça m'a dépanné et permis de rendre ma macro un peu plus "users-friendly" qu'un bon copier-coller de chemin à l'arrache
MERCI
merci aussi à axl63800 pour ta participation, j'avais essayé en mettant application mais le compilo m'engueulait, car à priori le .hwnd n'existe pas sous excel
Marsh Posté le 19-05-2008 à 13:49:54
je me permets de upper ce topic
j'ai adapté cette solution à ma sauce, c'est exactement ce qu'il me faut sauf que... il faut que j'ouvre un fichier.xls, et non un répertoire.
j'ai connement essayé de changer
lpIDList = SHBrowseForFolder(tBrowseInfo)
par
lpIDList = SHBrowseForFile(tBrowseInfo)
ou des dialogbox etc... et ça ne marche pas... vous auriez une petite minute à m'accorder?
merci d'avance
Marsh Posté le 19-05-2008 à 13:58:26
Salut ,as-tu essayé
Application.FileDialog(msoFileDialogFolderPicker) |
Application.FileDialog (msoFileDialogFilePicker) |
|
Sinon pour la partie personnalisation de SHBrowseForFolder voir http://j-walk.com/ss/excel/tips/tip29.htm
Marsh Posté le 19-05-2008 à 14:52:59
ReplyMarsh Posté le 19-05-2020 à 11:09:57
salut,
quelqu'un a deja essayer de faire ce programme sous un excel 64bits ?
j ai un problème quand à la conversion de SHGetPathFromIDList en 64 bits : excel crash et se ferme directement
des solutions ?
Marsh Posté le 19-05-2020 à 14:24:42
Bonjour,
Regardes ici :
https://arkham46.developpez.com/art [...] vba64bits/
https://docs.microsoft.com/en-us/of [...] s-overview
Marsh Posté le 24-03-2004 à 12:16:24
bonjour !
il est assez courant sur le net de trouver du code vba/excel permettant de créer un browser type windows pour ouvrir un fichier, récupérer son chemin...etc (tu cliques sur un bouton, le browser s'ouvre, tu choisis ton fichier dans l'arborescence, le fichier s'ouvre, ou du moins le code derrière récupère le chemin du fichier pour pouvoir écrire/lire ...Etc)
je cherche ce type de browser mais version répertoire !
et là ça coince, les seuls codes que j'ai pu trouver, était pour du vb pur et faisait appel à du shell, et ça coincait sous vba excel.
je recherche donc un code que je puisse appeler grace à un bouton sur ma feuille excel, je cliques, le browser s'ouvre, je sélectionne un répertoire dans l'arborescence, je récupère le chemin dans mon code dans un string)
si vous aviez ça en stock ou un bon site de code source, je suis preneur.
merci
Message édité par jazzypec le 24-03-2004 à 17:31:18