begin process at 2010 02 10 07:18:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > CREER UN DOSSIER (AVEC SES DOSSIERS PARENTS)

CREER UN DOSSIER (AVEC SES DOSSIERS PARENTS)


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Classé sous :creer, creation, dossier Niveau :Débutant Date de création :31/07/2007 Date de mise à jour :31/07/2007 17:50:45 Vu :6 084

Auteur : bouv

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note


 Description

Je sais pas si le titre est clair.

L'idée est que si je demande de créer par exemple le dossier 'c:\fifi\riri\loulou\' et que seul 'c:\fifi\' existe avec MkDir on obtiens une belle erreur.

Ici on fait : MakeDirectory "'c:\fifi\riri\loulou\"
et cela cré riri et loulou

J'ai pas trouvé de code similaire sur le site (mais j'avoue ne pas avoir beaucoup cherché)
J'espère que cela poura aider quelques un.

Source

  • Option Explicit
  • Public Function MakeDirectory(ByRef sDir As String) As Boolean
  • Dim sPath() As String
  • Dim sTemp As String
  • Dim i As Integer
  • On Error GoTo err_MakeDirectory
  • 'On décompose le chemin
  • sPath = Split(sDir, "\")
  • 'Puis on avance dans le chemin pour créer les dossiers un par un
  • For i = 0 To UBound(sPath)
  • sTemp = sTemp & sPath(i) & "\"
  • If Not DossierExiste(sTemp) Then
  • Call MkDir(sTemp)
  • End If
  • Next i
  • 'Si on arrive là on renvoi True
  • MakeDirectory = True
  • Exit Function
  • err_MakeDirectory:
  • 'Si on à une erreur on renvoi False
  • MakeDirectory = False
  • End Function
  • 'Fonction trouvée sur VBFrance il y a longtemps mais je sais plus où désolé
  • Public Function DossierExiste(ByRef Nom As String) As Boolean
  • Dim attrib As Integer
  • On Error Resume Next
  • attrib = GetAttr(Nom)
  • If (Err <> 0) Then
  • DossierExiste = False
  • Else
  • If ((attrib And vbDirectory) = vbDirectory) Then
  • DossierExiste = True
  • Else
  • DossierExiste = False
  • End If
  • End If
  • End Function
Option Explicit

Public Function MakeDirectory(ByRef sDir As String) As Boolean
    Dim sPath() As String
    Dim sTemp   As String
    Dim i       As Integer
    On Error GoTo err_MakeDirectory
    'On décompose le chemin
    sPath = Split(sDir, "\")
    'Puis on avance dans le chemin pour créer les dossiers un par un
    For i = 0 To UBound(sPath)
        sTemp = sTemp & sPath(i) & "\"
        If Not DossierExiste(sTemp) Then
            Call MkDir(sTemp)
        End If
    Next i
    'Si on arrive là on renvoi True
    MakeDirectory = True
    Exit Function
err_MakeDirectory:
    'Si on à une erreur on renvoi False
    MakeDirectory = False
End Function


'Fonction trouvée sur VBFrance il y a longtemps mais je sais plus où désolé
Public Function DossierExiste(ByRef Nom As String) As Boolean
    Dim attrib As Integer
    On Error Resume Next
    attrib = GetAttr(Nom)
    If (Err <> 0) Then
        DossierExiste = False
    Else
        If ((attrib And vbDirectory) = vbDirectory) Then
            DossierExiste = True
        Else
            DossierExiste = False
        End If
    End If
End Function

 Conclusion

Pas de zip, copier/coller tout ça dans un module et c'est tout.

Si vraiment cela pose problème, demandez et je mettrai un zip.


 Historique

31 juillet 2007 17:50:45 :
Mise à jour de DossierExiste

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) OCR (UTILISATION DE TESSNET2.DLL)
Source avec Zip Source avec une capture Source .NET (Dotnet) LISTVIEWEX
Source avec Zip Source avec une capture Source .NET (Dotnet) SPAM ANTI SPAM
Source avec Zip Source .NET (Dotnet) UTILISER ADO.NET COMME EN ADO (RECORDSET)
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION DOUBLE CLIC SUR LISTVIEW (SUBCLASSING)

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) GESTION DE PARC AUTOMOBILE AVEC SÉRIALISATION par guyr07
Source avec Zip Source avec une capture Source .NET (Dotnet) FICHIERS_CACHÉS_LECTURE_SEULE par Le Pivert
Source avec Zip Source avec une capture CHANGEUR D'ICONES par djgab21
Source .NET (Dotnet) DIRECTDISKACCESS par XelectroX
Source avec Zip Source avec une capture UTILITAIRE WAV, MID ET MP3 par SnkVrt

 Sources en rapport avec celle ci

AFFECTATION D'UNE ICÔNE À UN DOSSIER DANS L'EXPLORATEUR par djebbipgm
Source avec une capture Source .NET (Dotnet) CREATION DE CONTROLS DYNAMIQUE + DEPLACEMENT ET REDIMENTION ... par tresorsdevie
CRÉATION DE SOUS-RÉPERTOIRE À PARTIR DU MENU CONTEXTUEL par djebbipgm
Source avec Zip MKDIR RECURSIF... par Renfield
FICHIERS ET DOSSIERS par Zarbiboss

Commentaires et avis

Commentaire de Sharkiller le 31/07/2007 14:14:21

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^^.

Bonne journée!

Commentaire de bouv le 31/07/2007 14:20:46

Salut,
Non car si le dossier est vide : Dir(Dossier) te renvoi un vbNullString alors que le dossier existe.

Commentaire de Sharkiller le 31/07/2007 14:26:14

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.

Commentaire de PCPT le 31/07/2007 17:37:56 administrateur CS

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]

Commentaire de PCPT le 31/07/2007 17:42:44 administrateur CS

ps : Dir("C:\mondossier\", vbDirectory) renvoie "."
mais dir est à éviter (system? caché? etc...). voir sur codyx.org

Commentaire de bouv le 31/07/2007 17:49:39

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.
++

Commentaire de Sharkiller le 01/08/2007 01:36:17

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^^

Commentaire de PCPT le 01/08/2007 05:03:39 administrateur CS

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)

Commentaire de Renfield le 01/08/2007 08:18:46 administrateur CS

Salut bouv,

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

Commentaire de cavo789 le 01/08/2007 12:25:48

Je ne connaissais pas MakeSureDirectoryPathExists.   J'avais écris ma propre fonction... que je viens de remplacer.   Merci pour l'info.

Commentaire de bouv le 01/08/2007 20:46:32

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
++

Commentaire de Renfield le 02/08/2007 06:21:57 administrateur CS

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)

Commentaire de Dagry le 29/05/2008 14:24:52

pas mal du tout. mais pour ceux que ça interesse, je vais publier le code vb.net :)

Commentaire de PCPT le 29/05/2008 14:34:13 administrateur CS

Dagry -> juste pour remplacer 'As Long' par 'As Integer'? :s

Commentaire de Renfield le 29/05/2008 14:34:21 administrateur CS

indispensable, de publier ça en .NET ?

My.Computer.FileSystem.CreateDirectory("C:\Cette\Simple\Ligne\créé\toute\mon\arborescence")

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

creation dossier avec un fichier csv [ par rbenj78 ] Bonjour alors voila je vous explique, a partir d'un fichier .csv j'aurais besion de creer des dossiers mais le probleme c'est que ji connait rien J'ai probleme pour creer un dossier ayant comme nom la date courante dans un fichier BATCH [ par coudezef ] BONJOUR A TOUS,Savez vous si je peux creer automatiquement un DOSSIER avec la date courante de la sauvegarde. que j effectue chaque mois ??j effectue Comment créer un dossier avec nom de dossier entrer sur une textBox [ par AnthoBich ] Salut a tous, je sais creer un dossier en utilisant:Set FsoNvelleSource = CreateObject("Scripting.FileSystemObject")FsoNvelleSource.CreateFolder ("C:\ BATCH : creer un dossier avec polices favorites [ par skouby ] 1) Bonjours j'utilise une visionneuse de police (sans installation) qui cree un fichier avec ladresse des polices que j'ai choisi comme favories .je v Fonction Vb [ par Skyyyy ] Voila je cherche des fonction VB -Creer un dossier avec un nom definis - effacer un fichier ou un dossier precis -creer un nombre de dossier predef Creation et Ecriture dans un fichier EXCEL [ par guiche9 ] Hello,Je cherche à creer un nouveau fichier EXCEL,de preference il serait un CSV, mais si qq un sait pour creer un XLS ca m'aideraitTypiquement je veu creation d'un dossier sur un ftp!!???!!! [ par Alexandre Gauthier ] j'essaye de cree un nouveau dossier sur un compte ftp... voici mon code:With Inet1 .url = "ftp.geocites.com" .UserName = "salut" .password creation application pour formation [ par pin-pon1 ] je cherche a creer une application sous visual basic qui aurait a peu pres les memes fonctions que la visonneuse powerpoint ou qui permettrait de cree creation de plusieur label [ par PDT ] comment faut il faire pour creer des label dans une boucle while, la solution suivante ne fonction pas j'ai du faire une erreur, laquelle ?set db = op


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales