Sharkiller
Messages postés71Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention 9 janvier 2009
-
31 juil. 2007 à 14:14
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
29 mai 2008 à 14:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 29 mai 2008 à 14:34
Dagry -> juste pour remplacer 'As Long' par 'As Integer'? :s
Dagry
Messages postés29Date d'inscriptionsamedi 17 mars 2007StatutMembreDernière intervention 1 septembre 2008 29 mai 2008 à 14:24
pas mal du tout. mais pour ceux que ça interesse, je vais publier le code vb.net :)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 2 août 2007 à 06:21
tu aurais pu la renommer (tout comme une certaine fonction MsgBox, dans un certain projet).
si tu veux appeler la fonction d'origine, il suffit de mettre son nom complet :
FileSystem.MkDir
ou mieux :
VBA.FileSystem.MkDir
(visible dans l'explorateur d'objets: la touche F2)
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 1 août 2007 à 20:46
Renfield>>Pas de pb ce code m'a pris moins de 5 min.
Sinon j'aime bien ta façon de déclarer l'API. Cela évite de changer tout un code déjà existant.
Moi je n'ai pas pu le faire car ma fonction MakeDirectory utilise la fonction MkDir de VB.
En tout cas je vais utiliser cette API pour mon prog en cours ^^
Cette source devient donc obsolete.
Merci à vous
++
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 20091 1 août 2007 à 12:25
Je ne connaissais pas MakeSureDirectoryPathExists. J'avais écris ma propre fonction... que je viens de remplacer. Merci pour l'info.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 1 août 2007 à 08:18
du coup, maintenant, quand j'ai besoin, je déclare l'API suivante :
Public Declare Function MkDir Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long
Elle remplace ainsi le MkDir de VB
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 août 2007 à 05:03
si çà change si il n'y a pas le dernier ""
Private Sub Form_Load()
Const DEST As String = "C:\dossiertest"
' création
MkDir DEST
If LenB(Dir(DEST, vbDirectory)) Then
MsgBox "dossier trouvé"
Else
MsgBox "dossier non-trouvé"
End If
' on le rend caché + systeme
SetAttr DEST, vbHidden Or vbSystem
If LenB(Dir(DEST, vbDirectory)) Then
MsgBox "dossier trouvé"
Else
MsgBox "dossier non-trouvé"
End If
Unload Me
End Sub
(ici Bouv bien le test. simple précision, tout comme pour l'API)
Sharkiller
Messages postés71Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention 9 janvier 2009 1 août 2007 à 01:36
Salut PCPT,
En fait je ne vois pas ce que ça change que ce soit un dossier caché ou système, du moment qu'il existe?
Cordialement^^
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 31 juil. 2007 à 17:49
PCPT>>Parce que je connaissais pas ;-)
Va falloir que je regarde ça de plus près, j'ai toujours une préférence pour les API.
Par ailleurs, je m'apperçois qu'une partie de la fonction DossierExiste est inutile (tout le début où on affecte une valeur à Tmp). Je la met à jour de suite.
Sinon merci pour l'info.
++
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 31 juil. 2007 à 17:42
ps : Dir("C:\mondossier", vbDirectory) renvoie "."
mais dir est à éviter (system? caché? etc...). voir sur codyx.org
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 31 juil. 2007 à 17:37
salut Bouv,
à tester pour vista (mais y'a pas de raison), l'API MakeSureDirectoryPathExists fonctionne pour tous les Win. pourquoi ne pas t'en servir? elle teste déjà l'existance ou non d'un dossier.
++
PCPT [AFCK]
Sharkiller
Messages postés71Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention 9 janvier 2009 31 juil. 2007 à 14:26
Ah ah.. OK, désolé d'avoir dis n'importe quoi^^. Faut dire que j'ai pas eu l'occasion de tester avec des dossiers vides...
Autant pour moi^^. C'est une bonne idée tout de même ;).
Bonne continuation.
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 31 juil. 2007 à 14:20
Salut,
Non car si le dossier est vide : Dir(Dossier) te renvoi un vbNullString alors que le dossier existe.
Sharkiller
Messages postés71Date d'inscriptiondimanche 12 octobre 2003StatutMembreDernière intervention 9 janvier 2009 31 juil. 2007 à 14:14
Salut,
T'as plus simple pour savoir si un dossier existe ou non, avec Dir. Si Dir(Répertoire)<>"" c'est que le répertoire existe.
Enfin je dis ça comme ça, je peux me tromper^^.
29 mai 2008 à 14:34
My.Computer.FileSystem.CreateDirectory("C:\Cette\Simple\Ligne\créé\toute\mon\arborescence")
29 mai 2008 à 14:34
29 mai 2008 à 14:24
2 août 2007 à 06:21
si tu veux appeler la fonction d'origine, il suffit de mettre son nom complet :
FileSystem.MkDir
ou mieux :
VBA.FileSystem.MkDir
(visible dans l'explorateur d'objets: la touche F2)
1 août 2007 à 20:46
Sinon j'aime bien ta façon de déclarer l'API. Cela évite de changer tout un code déjà existant.
Moi je n'ai pas pu le faire car ma fonction MakeDirectory utilise la fonction MkDir de VB.
En tout cas je vais utiliser cette API pour mon prog en cours ^^
Cette source devient donc obsolete.
Merci à vous
++
1 août 2007 à 12:25
1 août 2007 à 08:18
désolé, j'aurais du t'en parler :
http://www.vbfrance.com/codes/MKDIR-RECURSIF_36211.aspx
du coup, maintenant, quand j'ai besoin, je déclare l'API suivante :
Public Declare Function MkDir Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long
Elle remplace ainsi le MkDir de VB
1 août 2007 à 05:03
Private Sub Form_Load()
Const DEST As String = "C:\dossiertest"
' création
MkDir DEST
If LenB(Dir(DEST, vbDirectory)) Then
MsgBox "dossier trouvé"
Else
MsgBox "dossier non-trouvé"
End If
' on le rend caché + systeme
SetAttr DEST, vbHidden Or vbSystem
If LenB(Dir(DEST, vbDirectory)) Then
MsgBox "dossier trouvé"
Else
MsgBox "dossier non-trouvé"
End If
Unload Me
End Sub
(ici Bouv bien le test. simple précision, tout comme pour l'API)
1 août 2007 à 01:36
En fait je ne vois pas ce que ça change que ce soit un dossier caché ou système, du moment qu'il existe?
Cordialement^^
31 juil. 2007 à 17:49
Va falloir que je regarde ça de plus près, j'ai toujours une préférence pour les API.
Par ailleurs, je m'apperçois qu'une partie de la fonction DossierExiste est inutile (tout le début où on affecte une valeur à Tmp). Je la met à jour de suite.
Sinon merci pour l'info.
++
31 juil. 2007 à 17:42
mais dir est à éviter (system? caché? etc...). voir sur codyx.org
31 juil. 2007 à 17:37
à tester pour vista (mais y'a pas de raison), l'API MakeSureDirectoryPathExists fonctionne pour tous les Win. pourquoi ne pas t'en servir? elle teste déjà l'existance ou non d'un dossier.
++
PCPT [AFCK]
31 juil. 2007 à 14:26
Autant pour moi^^. C'est une bonne idée tout de même ;).
Bonne continuation.
31 juil. 2007 à 14:20
Non car si le dossier est vide : Dir(Dossier) te renvoi un vbNullString alors que le dossier existe.
31 juil. 2007 à 14:14
T'as plus simple pour savoir si un dossier existe ou non, avec Dir. Si Dir(Répertoire)<>"" c'est que le répertoire existe.
Enfin je dis ça comme ça, je peux me tromper^^.
Bonne journée!