Répertoire qui existe mais qui n'existe pas

Signaler
Messages postés
895
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
21 mars 2021
-
Messages postés
895
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
21 mars 2021
-
Bonjour,
Je veux créer le répertoire "Aquanest" dans le répertoire "Templates".
Je vérifie d'abord que le répertoire "Templates" existe mais j'obtiens quand même erreur 76 Path not found !
Voici mon code
      Dim fPath As New FileSystemObject
If fPath.FolderExists(App.Path & "\Templates") Then fPath.DeleteFolder (App.Path & "\Templates"), True
DoEvents
fPath.CreateFolder (App.Path & "\Templates")
DoEvents
If Not fPath.FolderExists(App.Path & "\Templates") Then
     MsgBox "Impossible de créer le répertoire " & App.Path & "\Templates", vbExclamation
Else  ' donc Templates existe
     fPath.CreateFolder (App.Path & "\Templates\" & Rootitem.Name) ' ==> erreur 76

10 réponses

Messages postés
2396
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
7 avril 2021
130
Bonjour
1) je factoriserais la variable Repertoire : cela évite de "recalculer" à chaque fois
App.Path & "\Templates"


Dim fPath As New FileSystemObject
Dim Repertoire as String = App.Path & "\Templates"
If fPath.FolderExists(Repertoire) Then fPath.DeleteFolder (Repertoire), True
DoEvents
fPath.CreateFolder (Repertoire)
DoEvents
If Not fPath.FolderExists(Repertoire) Then
     MsgBox "Impossible de créer le répertoire " & Repertoire, vbExclamation
Else  ' donc Templates existe
     fPath.CreateFolder (Repertoire & Rootitem.Name) ' ==> erreur 76


2) Que vaux
App.Path
dans ce cas précis ?
Messages postés
895
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
21 mars 2021
2
Bonjour,
App.Path = "C:\Users\Benji\Desktop\logiciel\log-aqua-lumiere" càd un sous-sous-répertoire sur le bureau !
Il n'empêche que le code revient à
If fPath.FolderExists(Repertoire) Then fPath.CreateFolder (Repertoire & Rootitem.Name)

et donne une erreur 76
un peu comme si
if x > 0 then y = 1/x
donnait "division par zéro" : à quoi se fier ?
Messages postés
895
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
21 mars 2021
2
Entretemps j'ai lu qu'il valait mieux utiliser le répertoire prévu par Windows pour les applications à savoir
C:\Users\UserName\AppData\Roaming
.
J'ai donc modifié mon code en conséquence mais j'ai quand même une erreur 76 !
App.Path = C:\Users\Viaco\AppData\Roaming
If fPath.FolderExists(App.Path & "\Templates") Then fPath.DeleteFolder (App.Path & "\Templates"), True
DoEvents
fPath.CreateFolder (App.Path & "\Templates")
DoEvents
If Not fPath.FolderExists(App.Path & "\Templates") Then
MsgBox "Impossible de créer le répertoire " & App.Path & "\Templates", vbExclamation
Else
fPath.CreateFolder (App.Path & "\Templates\Aquanest") ' ==> Erreur : 76 : Path not found
Messages postés
2396
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
7 avril 2021
130
Bonjour
Pour avoir le répertoire utilisateur en VB6 :
Dim sPathUser as String
sPathUser = Environ$("USERPROFILE") & "\mes documents\"
MsgBox sPathUser

App.Path est le répertoire contenant l'exécutable de l'application
Messages postés
895
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
21 mars 2021
2
Bonjour,
J'ai toujours mis les fichiers de l'application dans le même répertoire que l'exécutable qui est dans App.Path = C:\Users\UserID\AppData\Roaming.

Je ne comprends toujours pas pourquoi
je n'ai pas d'erreur en y créant un répertoire
qu'après l'avoir créé si j'en crois .FolderExists ce répertoire existe bien
mais que j'obtiens "path not found" quand j'essaye de créer un sous-répertoire
et ce de façon exceptionnelle, la plupart du temps ça fonctionne.
Messages postés
2396
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
7 avril 2021
130
bonjour
C'est vrai que c'est bien étrange .
Et de plus VB6 est loin pour moi ( je suis passé à VB Net il y a facilement 10 ans )
Désolé !
Messages postés
206
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
13 février 2021
7
Salut Hervé,

Tout comme Vb95, j'avoue ne pas avoir de réponses...

Mais, "C:\Users\UserName\AppData\Roaming" n'est utilisé que dans le répertoire "Programme files" et applications installées à cet endroit.

Dernièrement, Avast m'a planté une appli recompilée, avec un accès disque sur le bureau.

Généralement, à la première utilisation, il se lance, et est scanné, puis redémarre.

Mais, là, à la première sauvegarde ... plantage et fenêtre d'alarme : " Ce programme est sur le point d'accéder à votre disque dur... permission?" (Erreur 76, comme toi!)

Si l'utilisateur répond "Non", l'application restera boquée en écriture, avec un "Oui"... tout fonctionnera bien!
Mais, avec un mode silencieux ou une erreur de réponse, il faudra réinstaller le programme...


Bon, cinq minute de travail de perdu... mais, cet arrêt non voulu du programme par l'anti-virus peut planter de manière impromptue une application.
Bilan, il faut effectuer un enregistrement de test au démarrage pour passer ce premier test et demander de redémarrer...

Avast nous a déjà habitué à vampiriser nos programmes "C" lors du premier chargement pour l'envoyer "au centre de vérification..." ... mais j'avoue que ces pratiques sont des "vols" de fichiers, ne sachant pas où vont nos programmes, et s'ils sont conservés sur leurs serveurs.

Pour ma part, je suis amené à pointer une faille sécuritaire d'Avast, qui upload sans autorisation nos nouveaux fichiers, mais bon...

Pour l'analyse VB, cela ne pose pas de problèmes... mais comme je l'ai décrit, cela peut poser des problèmes à la première écriture disque.

Dans tous les cas, lors du débogage/recompilation de tests et construction de projets, il faut choisir un répertoire hors "structures Windows protégées", et créer sont projet sous la racine "c:\monprojet" pour éviter les intrusions des anti-virus, trop gênantes lors des premiers tests... Puis, prévoir un message utilisateur au démarrage pour éviter de se faire planter lors d'une sauvegarde de données... car l'anti-virus ne mets pas en attente l'appli... mais la plante lamentablement.

Pour les anciennes applis, ça posera problème, pour les nouvelles... il faudra prendre en compte ces désagréments.
Messages postés
895
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
21 mars 2021
2
Bonjour,
tu dis "créer sont projet sous la racine "c:\monprojet""
Dans cette autre discussion https://codes-sources.commentcamarche.net/forum/affich-10101769-kill-erreur-70-permission-denied
erreur 70 alors que le projet étant dans C:\répertoire dédié
VB95 m'a conseillé de le mettre dans Environ$("APPDATA")
là tu me proposes le contraire !
Messages postés
895
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
21 mars 2021
2
Bonsoir,
J'ai aussi le contraire
      Dim fPath As New FileSystemObject
If Not fPath.FolderExists(App.Path & "\Stats") Then fPath.CreateFolder (App.Path & "\Stats")    ' Create Statistics folder

==> Erreur : 58 : File already exists
Messages postés
895
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
21 mars 2021
2
Nouveau cas
      Dim fPath As New FileSystemObject
If Not fPath.FolderExists(App.Path & "\Stats") Then fPath.CreateFolder (App.Path & "\Stats")    ' Create Statistics folder
AppPath = C:\Program Files (x86)\RV Reef Tools

Erreur 58:Ce fichier existe déjà
Je ne comprends toujours pas comment un fichier qui n'existe pas peut exister.