Folder qui vient d'être créé n'existe pas ! [Résolu]

Messages postés
569
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
28 novembre 2019
-
Bonjour,
J'ai une erreur 76 (Path not found) en essayant de créer un fichier dans un répertoire que je viens de créer, voici mon code
Dim fPath As New FileSystemObject
TankFolder = App.Path & "\Log Book " & TankNr
If Not fPath.FolderExists(TankFolder) Then fPath.CreateFolder (TankFolder)
ParFileName = TankFolder & "\Data.par"
Open ParFileName For Output As #1

Je n'ai pas d'erreur sur .FolderExists ni sur .CreateFolder
je suppose donc que soit le folder existait, soit il a été créé
par contre j'ai une erreur 76 sur Open.

Il est possible que je n'aie pas la permission d'accéder à ce folder
mais alors pourquoi pas d'erreur sur .CreateFolder ?
Je n'ai pas trouvé comment je peux vérifier si .CreateFolder a réellement fonctionné.
Comment puis-je vérifier si j'ai accès avant d'essayer de créer le fichier ?
Afficher la suite 

3 réponses

Messages postés
135
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
17 novembre 2019
2
0
Merci
Salut Hervé,

Utilise plutôt MKDIR de la DLL VB, car les Anti-virus et autres privilèges administrateurs, n'aiment plus les appels exotiques au sein d'un même programme.

Testes avec cette fonction ou fait un appel de EXE avec le privilège Administrateur car si ton répertoire est en zone protégée (ProgramFiles), le système ignorera ta requête.

Sinon, te devra déplacer ton programme dans un autre répertoire, ce qui est moins cool !

Amuse-toi bien.
Commenter la réponse de JeuDuTaquin
Messages postés
569
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
28 novembre 2019
2
0
Merci
Bonjour et merci pour l'info,
J'utilisais .CreateFolder parce que juste avant j'utilise .FolderExists il me semblait logique de rester en FSO.

Ceci dit chez moi tout fonctionne très bien mais certains utilisateurs installent le logiciel dans un répertoire déconseillé comme C:\Temp ou sur le bureau.
J'essaye de recréer ce genre de situation pour essayer de comprendre ce qui se passe afin d'y remédier.
Mais maintenant je n'y comprends plus rien !
Avec le .exe dans C:\Temp j'obtiens maintenant une erreur 424 (Un objet est requis) sur
If Not GetFile("VerCheck.par") Then ...
GetFile étant la fonction que j'ai indiquée tout au début
Si je place l'exe dans un autre répertoire ou si, dans C:\Temp je le démarre en tant qu'administrateur je n'ai pas d'erreur.
Je pensais que l'erreur 424 était due à un appel avec un paramètre qui ne respecte pas le type non ?
Qu'est-ce que ça a à voir ?
Et surtout comment faire savoir à l'utilisateur que s'il rencontre des problèmes c'est parce que le .exe se trouve dans un répertoire inadéquat ?
Commenter la réponse de Herve_be
Messages postés
569
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
28 novembre 2019
2
0
Merci
J'ai trouvé !
L'erreur qui se produit est bien 75 = Path acces error ce qui active la gestion d'erreur
Dans la routine de gestion d'erreur j'ai écrit Appp.Path au lieu de App.Path
du coup une autre erreur 424 (Un objet est requis) se produit et c'est celle là qu'on voit et non 75.
Commenter la réponse de Herve_be