IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Création de dossier, sous-dossier, à partir de données existantes


Sujet :

VBScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut Création de dossier, sous-dossier, à partir de données existantes
    Bonjour à tous !!!

    Je viens vers vous pour automatiser 2/3 actions :-)

    J'ai une liste de Clients avec une liste de Références (format excel au autre si besoin) sous cette forme :
    Client A Référence A
    Client B Référence B
    Client B Référence C
    Client B Référence D
    Client C Référence A
    Client C Référence E
    Client D Référence F
    Client D Référence G
    Client D Référence H
    Client D Référence I

    Afin de gérer de manière plus "simple" toute la documentation liée à ces clients et références, j'aurais aimé créer une arborescence de dossiers et sous-dossiers dans windows de cette forme :
    \Dossiers_Clients
    ______________\Client A
    _____________________\Référence A
    _________________________________\Achats
    _________________________________\Commercial
    _________________________________\Production
    ______________\Client B
    _____________________\Référence B
    _________________________________\Achats
    _________________________________\Commercial
    _________________________________\Production
    _____________________\Référence C
    _________________________________\Achats
    _________________________________\Commercial
    _________________________________\Production
    _____________________\Référence D
    _________________________________\Achats
    _________________________________\Commercial
    _________________________________\Production
    ______________\Client C
    _____________________\Référence A
    _________________________________\Achats
    _________________________________\Commercial
    _________________________________\Production
    _____________________\Référence E
    _________________________________\Achats
    _________________________________\Commercial
    _________________________________\Production
    ______________\Client D
    _____________________\Référence F
    _________________________________\Achats
    _________________________________\Commercial
    _________________________________\Production
    _____________________\Référence G
    _________________________________\Achats
    _________________________________\Commercial
    _________________________________\Production
    _____________________\Référence H
    _________________________________\Achats
    _________________________________\Commercial
    _________________________________\Production
    _____________________\Référence I
    _________________________________\Achats
    _________________________________\Commercial
    _________________________________\Production

    Vous aurez remarqués que les dossiers
    \Achats
    \Commercial
    \Production
    sont communs à toutes les références.

    Chacun viendrait ensuite mettre dans les dossiers les docs concernés.

    Ce que j'aurais aimé pour l'instant est donc qu'à partir de cette liste, tous les dossiers soient créées en reprenant le nom du client la référence et en ayant bien les dossiers (pour l'instant vierge) achat, commercial et production.

    Comment puis-je faire d'après vous, vbscript,...???

    Merci d'avance pour votre aide,
    @ très vite j'espère

    P.S. J'espère être sur le bon forum sinon merci de rediriger :-)

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Comment puis-je faire d'après vous, vbscript,...???
    En parcourant ta liste et créant des dossiers et des sous dossiers ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Bonjour ced600, bonjour à tous !

    Surement...

    Le hic est que je n'ai aucun notion de vbscript, c'est pourquoi je fais appel à vous pour m'aider dans le code, voir me le faire...

    Je pense que cela pourrait aider d'autres personnes également.

    Par avance merci,
    @ très vite

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    voir me le faire
    Faut pas révêr (en tout cas ne compte pas sur moi).

    Avec une simple recherche dans ce forum sur la création de répertoire, tu trouveras plein d'exemple pour créer des répertoires et des sous répertoires.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Bonjour ced600, bonjour à tous !

    Ok le message est clair, c'est un peu rude car on est qd même tous dans une spirale d'entraide mais bon...

    Faire un bout de code comme celui-là prendrais surement qq minutes pour des spécialistes comme vous alors que pour moi...

    J'ai bien vu dans la faq qu'il fallait partir sur une création de dossier du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim oFSO,oFld 
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    'Crée le repertoire
    Set oFld=oFSO.CreateFolder ("C:\Essai")
    mais pour imbriquer les repertoires et sous-répertoires comme j'aurais aimé il faut sans doute faire des boucles, récupérer les noms de répertoires dans un fichier autres,...et là je n'ai aucune notion...

    Si une âme généreuse passe par là, sinon ben tant pis et je suis qd même preneur des lignes directrices...

    Par avance merci,
    @+

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Les lignes directrices tu sembles les avoir :
    Parcourir ta liste, créer les rep client s'ils n'existent pas, créer leur sous rep reférence.
    Pour chaque reference créer 3 sous rep.

    une boucle pour parcourir ta liste.
    Si tu récupère bien ta liste comme tu l'as cité, bah pour chaque ligne il faut utiliser les chaines de caractères pour découper celle ci et séparer le nom du client et la réference.
    Si le rép client n'existe pas on le crée, sinon pas besoin.
    On crée le sous rep reference, et les 3 sous rep.

    Tu n'as aucune notion de vbs ? Pas de problème c'est comme un autre langages de prog, il faut juste apprendre la nouvelle syntaxe.

    Tu n'as aucune notion de programmation ? Pas de problème cela s'apprend, même si faire une école d'info serait mieux, car ton temps serait dédier à apprendre l'info.

    Tu n'as pas le temps d'apprendre la programmation, on t'a demande de faire cela un point c'est tout ? Bah dis à ton chef que tu n'est pas développeur et que tu ne sais pas faire.


    L'entraide n'est pas fournir du code, on n'est pas une SSII.
    On débug en expliquant les problèmes au personnes sur ce forum.
    On explique les notions que les auteurs, des sujets, ne comprennent pas.
    On aide dans la recherche d'information.
    On fournis des liens vers des sites de confiance.
    On améliore les tutoriaux, on en crée des nouveaux, on complète la FAQ, ....
    C'est ça l'entraide.

    Une bonne âme généreuse qui te fournira ton code ? C'est plus quelqu'un de trop gentil qui ne sait pas encore dire non, et cela m'ennuis personnellement quand je vois cela. Je me dis que le gars a pris sur son temps personnelle, peut être même du temps qu'il n'avait pas, pour aider quelqu'un comme toi qui veut un code tout fait. Et je vois du coté de celui qui attend le code aucune recherche, aucun travail, juste comme un client de SSII qui attend le code, et après qui viendra raler car cela ne marche pas comme il veut !!!!!

    Il existe d'autre site où du code est founis gracieusement, pas ici, on allonge pas des programmes tout fait, on forme les personnes qui postes leur problème.

    Voilà mon avis.

    Si tu fais tout seul ton code je t'aiderais à le débuguer, je t'expliquerais les notions que tu n'as pas.
    Si tu ne fais rien, je ne ferais rien pour toi.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    No comment...sur d'autres forums de developpez.com j'ai vu d'autres démarches...

    J'ai commencer quelque chose, brut de pomme
    Cela donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Dim oFSO,oFld 
    Set oFSO = CreateObject("Scripting.FileSystemObject")
     
    'Création des répertoire et sous-répertoires
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientA")
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientA\ReferenceA")
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientB")
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientB\ReferenceB")
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientB\ReferenceC")
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientB\ReferenceD")
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientC")
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientC\ReferenceA")
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientC\ReferenceB")
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientC\ReferenceE")
     
    'Création des répertoire "fixe"
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientA\ReferenceA\Achats")
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientA\ReferenceA\Commercial")
    Set oFld=oFSO.CreateFolder ("D:\Clients\ClientA\ReferenceA\Production")
     
    'Copie des répertoires fixes dans tous les sous-répertoire concernés
    oFSO.CopyFolder "D:\Clients\ClientA\ReferenceA","D:\Clients\ClientB\ReferenceB"
    oFSO.CopyFolder "D:\Clients\ClientA\ReferenceA","D:\Clients\ClientB\ReferenceC"
    oFSO.CopyFolder "D:\Clients\ClientA\ReferenceA","D:\Clients\ClientB\ReferenceD"
    oFSO.CopyFolder "D:\Clients\ClientA\ReferenceA","D:\Clients\ClientC\ReferenceA"
    oFSO.CopyFolder "D:\Clients\ClientA\ReferenceA","D:\Clients\ClientC\ReferenceB"
    oFSO.CopyFolder "D:\Clients\ClientA\ReferenceA","D:\Clients\ClientC\ReferenceE"
    Vous vous rendez compte que ce n'est pas du tout optimiser mais pour le moment c'est le seule chose que j'arrive à faire !!!

    Que pensez-vous de cela ? Je suis loin de mon objectif de départ !!!

    Par avance merci,
    @+

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Pas si loin que cela.

    Essaye de faire une boucle qui parcours ta liste et afficher ce que tu parcoures.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Re,

    Pour la boucle qui m'affiche le contenu du fichier txt, c'est OK grâce à la faq ;-)

    Maintenant il faudrait qu'en parcourant la boucle je crée les dossiers, j'arrive à ce type de code...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Const ForReading = 1, ForWriting = 2
    Dim oFSO,oFld,f
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    
    Set f = oFso.OpenTextFile("C:\ListeClient.txt", ForReading)
    while Not f.AtEndOfStream
    Set oFld=oFSO.CreateFolder ("D:\Clients\f???")
    wscript.echo f.ReadLine
    Wend
    f.Close
    Par contre comment écrire le "f???" ?

    Ensuite j'ai beaucoup de mal pour les sous-répertoires car dans mon fichier texte, j'aurais ce type de données :
    Client A Référence A
    Client B Référence B
    Client B Référence C
    Client B Référence D
    Client C Référence A
    Client C Référence E


    Merci ;-)

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    readline te renvois du texte, on peut s'amuser avec.
    par exmple faire un split une fonction de chaine de caractères, et ceci sur les espace.

    Donc si on est sur la ligne : Client B Référence C on obtiendras un tbleau organisé comme suit :
    Client
    B
    Référence
    C

    Le code pour faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim resultsplit(4)
    resultsplit = split(f.Readline, " ")
    Donc on peut tester l'existence du répertoire client et le créer s'il n'existe pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    If Not objFSO.FolderExists("D:\Clients\" & resultsplit(1)) Then
        oFSO.CreateFolder("D:\Clients\" & resultsplit(1))
        's'il n'existe pas alors on peut créer automatiquement la référence
        oFSO.CreateFolder("D:\Clients\" & resultsplit(1) & "\" & resultsplit(3))
        'Puis tu crées les autre sous rep Achats, ....
    Else
        'S'il existe on va tester que le rep ref existe.
        If Not objFSO.FolderExists("D:\Clients\" & resultsplit(1) & "\" & resultsplit(3)) Then
           oFSO.CreateFolder("D:\Clients\" & resultsplit(1) & "\" & resultsplit(3))
           'Puis tu crées les autre sous rep Achats, ....
        End If
    End If

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Bonjour ced600, merci pour ton aide,

    j'ai une erreur sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultsplit = split(f.Readline, " ")
    "Type incompatible, ID Erreur 13"

    Est-ce que cela vous dit quelque chose ?

    Par avance merci.

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Bon voilà il y avait quelques erreurs, alors j'ai testé mon code cette fois ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Const ForReading = 1, ForWriting = 2
    Dim objFSO,oFld,f
    Dim resultsplit
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    Set f = objFSO.OpenTextFile("C:\temp\toto.txt", ForReading)
    while Not f.AtEndOfStream
    	resultsplit = split(f.Readline, " ")
    	msgbox resultsplit(1)
    	If Not objFSO.FolderExists("c:\temp\" & resultsplit(1)) Then
    		objFSO.CreateFolder("c:\temp\" & resultsplit(1))
    		msgbox "c:\temp\" & resultsplit(1) & " -> crée"
    		's'il n'existe pas alors on peut créer automatiquement la référence
    		objFSO.CreateFolder("c:\temp\" & resultsplit(1) & "\" & resultsplit(3))
    		msgbox "c:\temp\" & resultsplit(1) & "\" & resultsplit(3) & " -> crée"
    		'Puis tu crées les autre sous rep Achats, ....
    	Else
    		'S'il existe on va tester que le rep ref existe.
    		If Not objFSO.FolderExists("c:\temp\" & resultsplit(1) & "\" & resultsplit(3)) Then
    			objFSO.CreateFolder("c:\temp\" & resultsplit(1) & "\" & resultsplit(3))
    			msgbox "c:\temp\" & resultsplit(1) & "\" & resultsplit(3) & " -> crée"
    			'Puis tu crées les autre sous rep Achats, ....
    		End If
    	End If
    Wend
    f.Close

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    c'est génial ced600, merci beaucoup de ton aide, et en plus je pense avoir assez bien compris lol :-)

    Avant de mettre le tag "Resolu" et clore en beauté ce fil, aurais-tu une idée pour avoir un regroupement des clients par lettres de l'alphabets, soit "26 dossiers parents" A, B, C, D...comprenant chacun x clients...
    Il doit falloir tester la 1ère lettre du nom et ensuite le positionner dans le dossier lettre correspondant ou le créer s'il n'existe pas ?

    Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

  14. #14
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    pour lire la première lettre d'un mot tu utilise left :

    ensuite pour tester l'existence d'un répertoire .. où le créer .. tu as déjà le code plus haut...

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Merci de ton intervention bbil :-)

    Je viens de passer quelques heures dessus depuis tout à l'heure et je galère avec ces boucles, je pense que je m'y prends mal mais je ne vois pas où !!!

    J'ai finalement décidé de partir sur une liste avec 2 espaces de ce type
    A NomClientA Reference1ClientA
    A NomClientA Reference2ClientA
    B NomClientB Reference1ClientB
    B NomClientB Reference2ClientB

    où la première lettre est la 1ère lettre du nom client, puis le nom client et la référence !

    Si l'on exclue cette 1ère lettre j'ai ce code qui fonctionne parfaitement bien, merci ced600:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Const ForReading = 1, ForWriting = 2
    Dim objFSO,oFld,f
    Dim resultsplit
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    Set f = objFSO.OpenTextFile("C:\Client.txt", ForReading)
    while Not f.AtEndOfStream
    	resultsplit = split(f.Readline, " ")
     
    	If Not objFSO.FolderExists("D:\" & resultsplit(0)) Then
    		objFSO.CreateFolder("D:\" & resultsplit(0))
    		's'il n'existe pas alors on peut créer automatiquement la référence
    		objFSO.CreateFolder("D:\" & resultsplit(0) & "\" & resultsplit(1))
    		'Puis tu crées les autre sous rep Achats, ....
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\_Divers")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\Achat")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\ADV")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\Commercial")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\Etude")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\Methode")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\Production")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\Qualite")
     
     
    	Else
    		'S'il existe on va tester que le rep ref existe.
    		If Not objFSO.FolderExists("D:\" & resultsplit(0) & "\" & resultsplit(1)) Then
    			objFSO.CreateFolder("D:\" & resultsplit(0) & "\" & resultsplit(1))
    			'Puis tu crées les autre sous rep Achats, ....
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\_Divers")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\Achat")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\ADV")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\Commercial")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\Etude")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\Methode")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\Production")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\Qualite")
    		End If
    	End If
    Wend
    f.Close
    Par contre si je rajoute cette 1ère lettre j'ai essayé différente manière et impossible d'aboutir !!!
    Le dernier que j'avais était de cette forme mais à vrai dire, il ne fonctionne pas très bien lol
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Const ForReading = 1, ForWriting = 2
    Dim objFSO,oFld,f
    Dim resultsplit
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    Set f = objFSO.OpenTextFile("C:\Client2.txt", ForReading)
    while Not f.AtEndOfStream
    	resultsplit = split(f.Readline, " ")
     
     
    	If Not objFSO.FolderExists("D:\" & resultsplit(0)) Then
    		objFSO.CreateFolder("D:\" & resultsplit(0))
    		's'il n'existe pas alors on peut créer automatiquement le client
    		objFSO.CreateFolder("D:\" & resultsplit(0) & "\" & resultsplit(1))
     
    	If Not objFSO.FolderExists("D:\" & resultsplit(0) & resultsplit(1)) Then
    		objFSO.CreateFolder("D:\" & resultsplit(0) & resultsplit(1))
    		's'il n'existe pas alors on peut créer automatiquement la référence
    		objFSO.CreateFolder("D:\" & resultsplit(0) & "\" & resultsplit(1) & resultsplit(2))
    		'Puis tu crées les autre sous rep Achats, ....
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\_Divers")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\Achat")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\ADV")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\Commercial")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\Etude")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\Methode")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\Production")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\Qualite")
     
     
    	Else
     
     
     
                    'S'il existe on va tester que le rep ref existe.
                    If Not objFSO.FolderExists("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2)) Then
    			objFSO.CreateFolder("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2))
    			'Puis tu crées les autre sous rep Achats, ....
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\_Divers")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\Achat")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\ADV")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\Commercial")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\Etude")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\Methode")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\Production")
    Set oFld=objFSO.CreateFolder ("D:\" & resultsplit(0) & "\" & resultsplit(1) & "\" & resultsplit(2) & "\Qualite")
    		End If
     
     
    	End If
     
     
    	End If
    Wend
    f.Close
    Merci pour votre aide

  16. #16
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    tu pourrai utiliser ma fonction left ... quand .. même...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    (...)
    Dim resultsplit
     
    Dim MonRep 
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    Set f = objFSO.OpenTextFile("C:\Client.txt", ForReading)
    while Not f.AtEndOfStream
    	resultsplit = split(f.Readline, " ")
     '--- Code à rajouter 
    'Defini le répertoire de destination
    MonRep = "d:\"  & left(resultsplit (0),1)  & "\"  
           If Not objFSO.FolderExists(MonRep ) then
                 objFSO.CreateFolder(MonRep )
           end if
    '---
    'dans la suite du code remplace "d:\" par MonRep 
    	If Not objFSO.FolderExists(MonRep  & resultsplit(0)) Then
    ....

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Toutes mes excuses bbil !

    Enfin grâce à vous le code est terminé et surtout j'ai bien compris la réflexion que vous avez eu !!! Merci encore

    Le code pour ceux que ça intéresserait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Const ForReading = 1, ForWriting = 2
    Dim objFSO,oFld,f
    Dim resultsplit
    Dim MonRep
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    'Définir l'emplcament du fichier .txt contenant les données
    Set f = objFSO.OpenTextFile("C:\Client.txt", ForReading)
    while Not f.AtEndOfStream
    	resultsplit = split(f.Readline, " ")
     
    'Definir le répertoire de destination
    MonRep = "G:\DossiersClients\"  & left(resultsplit (0),1)  & "\"
           If Not objFSO.FolderExists(MonRep ) then
                 objFSO.CreateFolder(MonRep )
           end if
     
    	If Not objFSO.FolderExists(MonRep  & resultsplit(0)) Then
    		objFSO.CreateFolder(MonRep & resultsplit(0))
    		's'il n'existe pas alors on peut créer automatiquement la référence
    		objFSO.CreateFolder(MonRep & resultsplit(0) & "\" & resultsplit(1))
    		'Puis tu crées les autre sous rep Achats, ....
                    Set oFld=objFSO.CreateFolder (MonRep & resultsplit(0) & "\" & resultsplit(1) & "\_Divers")
                    Set oFld=objFSO.CreateFolder (MonRep & resultsplit(0) & "\" & resultsplit(1) & "\Achat")
                    Set oFld=objFSO.CreateFolder (MonRep & resultsplit(0) & "\" & resultsplit(1) & "\ADV")
     
    	Else
    		'S'il existe on va tester que le rep ref existe.
    		If Not objFSO.FolderExists(MonRep & resultsplit(0) & "\" & resultsplit(1)) Then
    			objFSO.CreateFolder(MonRep & resultsplit(0) & "\" & resultsplit(1))
    			'Puis tu crées les autre sous rep Achats, ....
                            Set oFld=objFSO.CreateFolder (MonRep & resultsplit(0) & "\" & resultsplit(1) & "\_Divers")
                            Set oFld=objFSO.CreateFolder (MonRep & resultsplit(0) & "\" & resultsplit(1) & "\Achat")
                            Set oFld=objFSO.CreateFolder (MonRep & resultsplit(0) & "\" & resultsplit(1) & "\ADV")
    		End If
    	End If
    Wend
    f.Close
    Merci encore beaucoup et @ Bientôt

  18. #18
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Mais de rien.

    Une dernière chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oFld=objFSO.CreateFolder (MonRep & resultsplit(0) & "\" & resultsplit(1) & "\_Divers")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objFSO.CreateFolder (MonRep & resultsplit(0) & "\" & resultsplit(1) & "\_Divers")
    C'est deux codes créerons le répertoire.
    Le premier sert, en plus de créer le répertoire, à récupérer un objet concernant celui-ci.
    A partir de cet objet tu auras accés à différentes propriétés du répertoires, comme les droits sur celuic-ci, son nom, le nom de son père, ...
    Cela peut être utile dans certain programme, mais dans le tiens, vu que tu ne crées que des répertoires, c'est inutile.
    Donc ne fait plutot que des :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objFSO.CreateFolder (MonRep & resultsplit(0) & "\" & resultsplit(1) & "\_Divers")
    Donc voilà, ce fut plus lent que de fournir direct un tel code, mais tu as compris ce qu'il fait, comment cela marche, tu sais le débugguer, et tu sauras faire des évolutions dessus si nécessaire

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Bonjour à tous !

    Merci pour le complément ced600 ;-)

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] création de diagramme sous C# avec des données reçues à partir des capteurs
    Par yassinesama dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/05/2013, 14h04
  2. [Leopard] Automatiser création de dossiers/sous dossiers
    Par Ambuletz dans le forum Apple
    Réponses: 6
    Dernier message: 03/03/2010, 20h07
  3. [XML] Création d'un flux RSS à partir des données en base
    Par Misoss dans le forum Bibliothèques et frameworks
    Réponses: 14
    Dernier message: 01/07/2008, 17h03
  4. Réponses: 1
    Dernier message: 22/02/2008, 18h22
  5. [CSV] Création dossier sous dossier et copie image
    Par mrsoyer dans le forum Langage
    Réponses: 9
    Dernier message: 11/07/2007, 16h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo