begin process at 2012 02 13 11:28:26
  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 :7 384

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 .NET (Dotnet) ADO.NET SANS DOULEUR
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)

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture FILE,SECURITY,FICHIER par okosa
Source avec Zip Source avec une capture Source .NET (Dotnet) PATCHEUR DE FICHIER par tototh
Source avec Zip Source avec une capture LECTURE DES INFORMATIONS DES DISQUES COMPOSANT UN ENSEMBLE R... par jack

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture [VBS] COMMENT CRÉER UN DOSSIER ET LE PROTÉGER PAR MOT DE PAS... par hackoo
LISTER DOSSIER + SOUS DOSSIER + "PUBLICATION" TABLEAU HTML par Alexis28130
Source avec Zip Source avec une capture Source .NET (Dotnet) RENOMMER TOUS LES FICHIERS D'UN DOSSIER PAR CLIC DROIT par Le Pivert
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

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,702 sec (4)

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