valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 2022
-
8 janv. 2016 à 13:30
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 2022
-
9 janv. 2016 à 10:03
Bonjour tout le monde.
Après un certain temps en sommeil je reviens doucement à la prog.
J'ai une filedialog qui n'en fait qu'a sa tête, elle est paramétrée pour ouvrir le dossier "Windows Vidéos"mais en fait elle ouvre un sous-dossier nommé "Vidéos Lumia". J'ai lu qu'il y avait un bug sous VB. Donc ma question quelqu'un a-t-il réussit à contourner ce problème.
Je suis sous Windows 10 et Office 365
Private Sub cmdO_OpenPathVideos_Click()
Dim fd As FileDialog
Set fd = FileDialog(msoFileDialogFolderPicker)
With fd
.Filters.Clear
.AllowMultiSelect = False
.Title = " Sélectionnez un dossier ..."
.InitialView = msoFileDialogViewList
.InitialFileName = AddBackslash(DossierSpecial(Dossier.Videos))
'Renvoie le dossier special "Windows Vidéos"
'Avec ou sans BackSlash les deux ne fonctionnent pas
'Le chemin renvoyé est "D:\User\JeanPaul\vidéos" ou "D:\User\JeanPaul\vidéos\"
If .Show Then
txtO_PathVideos.SetFocus
txtO_PathVideos.Text = .SelectedItems(1)
SetParam PARAM_PATH_VIDEOS, txtO_PathVideos.Text
Else
MsgBox "Commande annulé par l'utilisateur."
End If
End With
Set fd = Nothing
End Sub
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 Modifié par ucfoutu le 8/01/2016 à 18:10
Bonjour,
Déjà :
Quel est le logiciel d'Office qu'utilise ton appli ?
1) J'ignore personnellement ce que sont :
- ce qui parait être une fonction : AddBackslash
- ce qui parait être une fonction : DossierSpecial
Sont-ce des fonctions natives du logiciel Office que tu utilises ? (je ne les trouve pas)
ou
Sont-ce des fonctions créées dans ton code ? Et voir leur code est alors nécessaire ...
2) qu'est exactement Dossier ? Décris-le ici avec précision et complètement
Dans l'état actuel des choses, il me faudrait une boule de cristal pour y voir clair.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20224 8 janv. 2016 à 18:14
Bonjour ucfoutu et merci de ton intérêt.
Pour le logiciel c'est Access .
Comme écrite dans les ligne de codes:
AddBackSlash renvoie le non de fichier avec ou sans un BackSlash à la fin.
DossierSpecial renvoie le chemin des dossier spéciaux windows ici en fait il renvoie la chaine "D:\User\JeanPaul\Vidéos" qui est mon dossier vidéos. Ce qui est bon.
Donc je me retrouve avec un:
.InitialFileName = "D:\User\JeanPaul\Vidéos"
ou un
.InitialFileName = "D:\User\JeanPaul\Vidéos\"
Mais aucun ne fonctionne FileDialog s'ouvre dans un sous répertoire donc en fait sous:
"D:\User\JeanPaul\Vidéos\Vidéos Lumia"
vb95
Messages postés3416Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165 8 janv. 2016 à 23:45
Bonjour valtrase
Une piste probable sans certitude
Ton souci vient du fait que certains dossiers Users ( ainsi que d'autres) ne sont point accessibles directement
Si tu te mets avec l'Explorateur de Windows et que les fichiers système sont visualisables tu le verras
Sur ta partition Windows essaies avec l'explorateur d'ouvrir le dossier "Documents and Settings" par exemple : l'accès est refusé (remarque la petite flèche dans l’icône de dossier : elle rappelle celle des raccourcis sur le Bureau)
Ces répertoires sont des dossiers spéciaux dont Windows se sert en interne
Le mieux est d'utiliser des dossiers que tu crées toi-même
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 Modifié par ucfoutu le 9/01/2016 à 08:28
La réponse de VB95, que je salue, est une réponse sage à divers titres.
Il est toujours de très loin préférable d'utiliser un dossier relatif (par rapport à celui de l'application distribuée).
Cela permet en outre de s'affranchir des fonctions utilisées ici (AddBackslash
et DossierSpecial)..
Soit par exemple toto le nom de ce sous-dossier du dossier de l'application ===>>
....... Set fd = FileDialog(msoFileDialogFolderPicker) With fd .Filters.Clear .AllowMultiSelect = False .Title = " Sélectionnez un dossier ..." .InitialView = Application.CurrentProject.Path & "\toto\" .....
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20224 9 janv. 2016 à 10:03
Merci de vos réponses,
Pour documents and settings je suis d'accord, Windows les gardes pour la compatibilité ascendante, il est donc bloqué comme d'autres depuis le passage à Windows 10.
Mon appli doit tourné sur des machines de pots je dois donc pouvoir "c'est un bien grand mot" me caler sur le dossier vidéos du PC et celui-ci n'est pas protégé (heureusement ).
Ucfoutu, en ce qui concerne la propriété InitialView, elle demande une valeur Long. Mais je pense que c'est un dérapage non voulu et que tu voulais mettre InitialFileName.
Je finalise ce projet de bibliothèque vidéos sur Access en VBA avant de la passer sous VB.Net qui n'est pas je l’avoue encore ma tasse de thé. Et je dois donc connaitre le répertoire vidéos, mais je pinaille bien entendu car une fois définie la première fois le chemin est sauvegardé dans une table de paramètres. J'aime bien savoir le pourquoi des choses ...... :)
Je vais donc marquer ce post résolu même s'il ne l'est pas car à mon humble avis c'est ma machine et Windows 10 qui fait des siennes, car les deux fonctions AddBackSlash et DossiersSpecial fonctionnent très bien et renvoient bien une valeur string du chemin. De plus d’après mes test dés que je mets le chemin (en dur) d'un dossier "User" ça fait n'importe quoi......