Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > VBScript
VBScript Le forum d'entraide sur VBScript. Avant de poster -> La FAQ VBScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/12/2012, 16h39   #1
Darkrems
Invité de passage
 
Homme
Inscription : mai 2012
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2012
Messages : 13
Points : 0
Points : 0
Par défaut HTA (Vbscript html javascript) chemin + création de répertoires

Bonjour/Bonsoir

Alors voilà je dois créer une application HTA qui doit pouvoir réaliser les point suivants :

but du programme en résumé : Un chef de projet lance le programme choisis les dossiers qu'il veut avoir dans son projet (checkbox) puis s'il n'a pas crée son dossier de projet il le crée à l'endroit souhaité (bouton parcourir) puis on appui sur valider pour créer tous les dossiers et sous-dossiers.

Alors voilà à quoi ressemble mon ébauche de code :

Code :
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 
<HTML>
<HEAD>
<HTA:APPLICATION INNERBORDER="no" SCROLL="no" ID="Structurerep" 
 BORDER="thin" 
BORDERSTYLE="complex"/>
<TITLE>HTA - Création structure de projets</TITLE>
</HEAD>
<STYLE type="text/css">
body
{
font-family:"Verdana";
font-size:16px;
background-color:#d0e4fe;
}
h1
{
font-family:"Verdana";
font-size:16px;
 
}
p
{
font-family:"Verdana";
font-size:16px;
}
</STYLE>
<BODY>
<H2>HTA - Création structure de projets</H2>
<div width=""  id="divFile">
 
Emplacement : <input type="Text" size="50" name="repchemin" id="repchemin" value="" /> <input type="submit" value="Parcourir" size="50" onclick="parcourir()" />
</div>
 
<FORM name="form2">
<input type="checkbox" name="chemin" value="gestionproj">01 - Gestion de Projet<br>
<input type="checkbox" name="chemin" value="dlt">02 - DLT<br> 
<input type="checkbox" name="chemin" value="photos">03 - Photos<br> 
<input type="checkbox" name="chemin" value="technique">04 - Technique<br> 
<input type="checkbox" name="chemin" value="mes">05 - MES<br> 
<input type="checkbox" name="chemin" value="documentation">06 - Documentation<br> 
<br>
 
<input type="submit" value="Valider" onclick="CreerRep()" />
</FORM>
 
<script language="vbscript">
Function parcourir()	
Const RETURNONLYFSDIRS = &H1
 
Set oShell = CreateObject("Shell.Application")
Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS, "c:\")
If oFolder is Nothing Then 
MsgBox "Abandon opérateur",vbCritical
Else
Set oFolderItem = oFolder.Self
 'oFolderItem.path
MsgBox oFolderItem.path
End If
 
Set oFolderItem = Nothing
Set oFolder = Nothing
Set oShell = Nothing
 
end Function
 
Dim ofso
Set ofso = CreateObject("Scripting.FileSystemObject")
 
'		Sub CreerRep()
'		Dim oFSO,oFld 
'		Set oFSO = CreateObject("Scripting.FileSystemObject")
'		'Crée le repertoire
'		Set oFld=oFSO.CreateFolder ("C:\")
'		end Sub			
</script>
 
<p>Statut</p>
 
<script language="Javascript">
window.resizeTo(600, 512);
</script>
</BODY>
</HTML>
(Désolé pour l'indentition qui n'est pas du tout la même que sur mon notepad ) EDIT j'ai tenter de limiter la casse pour l'identation!

Mon problème est que lorsque je veux modifié mon formulaire repchemin et lui mettre comme valeur le path que j'ai trouvé je recois beaucoup d'erreurs différentes.

A l'état actuel mon code fonctionne je peux choisir avec mon bouton parcourir le dossier de déstination (il ya aussi le paramètre que j'ai spécifié pour avoir un dossier de départ) lorsque je met ok mon message box s'affiche et me donne mon path, mais lorsque je veux récupérer cela de différentes manières j'ai des erreurs tels que : cette element ne peut pas utiliser cette propriété quelque chose du genre .... J'ai essayé avec les get element etc ...

Auriez-vous une manière simple ? Et si vous avez des corrections à me proposer j'en serais ravis merci et bonne soirée ! Si vous avez des questions n'hésitez pas
Darkrems est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2012, 17h46   #2
l_autodidacte
Modérateur
 
Avatar de l_autodidacte
 
Homme Moncef
Directeur de lycée
Inscription : juillet 2009
Messages : 1 213
Détails du profil
Informations personnelles :
Nom : Homme Moncef
Âge : 57
Localisation : Tunisie

Informations professionnelles :
Activité : Directeur de lycée
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 213
Points : 2 226
Points : 2 226
Envoyer un message via Skype™ à l_autodidacte
Il y a pas mal de modifications à faire dans ton code, en voici une esquisse :
Code :
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<HTML>
<HEAD>
<HTA:APPLICATION INNERBORDER="no" SCROLL="no" ID="Structurerep" 
 BORDER="thin" 
BORDERSTYLE="complex"/>
<TITLE>HTA - Création structure de projets</TITLE>
</HEAD>
<STYLE type="text/css">
body
{
font-family:"Verdana";
font-size:16px;
background-color:#d0e4fe;
}
h1
{
font-family:"Verdana";
font-size:16px;
}
p
{font-family:"Verdana";
font-size:16px;}
</STYLE>
<BODY>
<H2>HTA - Création structure de projets</H2>
<div width=""  id="divFile">
 
Emplacement : <input type="Text" size="50" name="repchemin" id="repchemin" value="" /> <input type="submit" value="Parcourir" size="50" onclick="parcourir()" />
</div>
 
<FORM name="form2">
<input type="checkbox" name="chemin" value="gestionproj">01 - Gestion de Projet<br>
<input type="checkbox" name="chemin" value="dlt">02 - DLT<br> 
<input type="checkbox" name="chemin" value="photos">03 - Photos<br> 
<input type="checkbox" name="chemin" value="technique">04 - Technique<br> 
<input type="checkbox" name="chemin" value="mes">05 - MES<br> 
<input type="checkbox" name="chemin" value="documentation">06 - Documentation<br> 
<br>
 
<input type="button" value="Valider" onclick="CreerRep()"> <!-- On remplace submit par button --!>
 
</FORM>
<script language="vbscript">
 
Option Explicit
 
  Const RETURNONLYFSDIRS = &H1
  Dim oShell, oFolder, oFolderItem
  ' ========================
Function parcourir()
	Set oShell = CreateObject("Shell.Application")
	Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS, "")
	If oFolder is Nothing Then 
	    MsgBox "Abandon opérateur",vbCritical
	Else
		Set oFolderItem = oFolder.Self
		'oFolderItem.path
		'MsgBox oFolderItem.path 
		repchemin.Value = oFolderItem.path
	End If
 
	Set oFolderItem = Nothing
	Set oFolder = Nothing
	Set oShell = Nothing
	End Function
	'========================
	' Fonction de test pour pouvoir créer au moins un répertoire
	Function TestCheckBox()
	   Dim T
	   For T = 0 To form2.chemin.length - 1
	      If form2.chemin(T).checked Then
		     TestCheckBox = True
			 Exit For
		  End If
       Next
    End Function	   
	'========================
	Sub CreerRep()
	    Dim oFld , i, oFso
	    If repchemin.Value ="" Then 
		    Msgbox "Vous devez d'abord remplir le champ Emplacement",VbCritical
			Exit Sub
		End If	
		If TestCheckBox Then	
			Set oFSO = CreateObject("Scripting.FileSystemObject")
		    ' Crée le repertoire
            For i = 0 To form2.chemin.length - 1
		       If form2.chemin(i).checked Then
		  	      If Not oFSO.FolderExists(repchemin.Value & "\" & form2.chemin(i).Value) Then
		             Set oFld=oFSO.CreateFolder(repchemin.Value & "\" & form2.chemin(i).Value)
				  End If   
			   End If
            Next
		Else : MsgBox "Aucun choix n'a été entré, Veuillez en choisir au moins un"	
        End If			
 	     Set oFld = Nothing
		 Set oFso = Nothing
	End Sub
</script>
 
<p>Statut</p>
 
<script language="Javascript">
window.resizeTo(600, 512);
</script>
</BODY>
</HTML>
En espérant avoir bien compris la demande et avoir pu aider.
__________________
A cœur vaillant rien d'impossible
l_autodidacte est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 07/12/2012, 08h07   #3
Darkrems
Invité de passage
 
Homme
Inscription : mai 2012
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2012
Messages : 13
Points : 0
Points : 0
Merci beaucoup c'est exactement ce que je cherchais . Je cherchais beaucoup trop loin pour utiliser mon formulaire en Vbscript alors qu'en faite c'est tout simple ! Merci beaucoup et au plaisirs
Darkrems est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 09h50   #4
Darkrems
Invité de passage
 
Homme
Inscription : mai 2012
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2012
Messages : 13
Points : 0
Points : 0
J'ai une dernière question en rapport avec la réponse donnée. Est-il possible d'ajouter des sous-repertoires avec ce script ou doit-on modifier un tant soi peu le code ? Parce que je sais qu'on pourrait utiliser copyfolder avec tout une arborescence ...

Quelle est selon vous la meilleur solution ?

- Copier une arborescence qui sera toujours au même endroit .

ou

- Créer à chaque fois les dossiers.
Darkrems est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 11h46   #5
l_autodidacte
Modérateur
 
Avatar de l_autodidacte
 
Homme Moncef
Directeur de lycée
Inscription : juillet 2009
Messages : 1 213
Détails du profil
Informations personnelles :
Nom : Homme Moncef
Âge : 57
Localisation : Tunisie

Informations professionnelles :
Activité : Directeur de lycée
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 213
Points : 2 226
Points : 2 226
Envoyer un message via Skype™ à l_autodidacte
OUI et NON
OUI si on veut les créer dans l'un des répertoires déjà créés, par exemple, en recommençant par le bouton Parcourir et en sélectionnant l'un de ces répertoires mais les noms seront parmi la liste des CheckBox.

NON si le nom voulu est différent et par conséquent la modification du script est obligatoire.

Un peu plus de précisions quant aux sous-dossiers à créer sera utile et permettra de mieux voir les choses. Le choix de la méthode en dépend aussi.
__________________
A cœur vaillant rien d'impossible
l_autodidacte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 14h28   #6
Darkrems
Invité de passage
 
Homme
Inscription : mai 2012
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2012
Messages : 13
Points : 0
Points : 0
Alors je peux vous répondre que OUI les sous-dossiers ont des noms différents et qu'ils ne sont jamais les mêmes.

Je pense donc qu'il est préférable d'utiliser copyfolder pour copier une arborescence ! Mon seul problème étant j'ai disons 6 dossiers contenant environ 3-4 sous-dossiers chacun et chacun de ces sous-dossiers contient d'autres dossiers ...

J'ai peut-être une solution :

J'utilise le compteur pour parcourir mon repertoire sourceDir qui contient mon arborscence avec tous les dossiers selon les checkbox qui sont remplissent je copy les dossiers qui correspondent au chiffre des checkbox exemple : je click sur la checkbox 2 et donc ca me copie le dossier 2 avec tout ce qui va derrière ...

Est-ce que mon raisonnement tiens la route ? Y a -til une manière plus simple de faire encore ? Je vais déjà essayer comme ça et je vous redis
Darkrems est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 13h50   #7
Darkrems
Invité de passage
 
Homme
Inscription : mai 2012
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2012
Messages : 13
Points : 0
Points : 0
Voilà j'ai terminé mon pour ceux qui chercherait des solutions . Je ne dis pas que c'est parfait mais ça fait ce que je voulais. Merci grandement pour l'aide et j'espère que ça aidera d'autres personnes !

Code :
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<HTML>
<HEAD>
<HTA:APPLICATION INNERBORDER="no" SCROLL="no" ID="Structurerep" 
 BORDER="thin" 
BORDERSTYLE="complex"/>
<TITLE>HTA - Création structure de projets</TITLE>
</HEAD>
<STYLE type="text/css">
body
{
font-family:"Verdana";
font-size:16px;
background-color:#d0e4fe;
}
h1
{
font-family:"Verdana";
font-size:16px;
}
p
{font-family:"Verdana";
font-size:16px;}
fieldset {
	padding : 5px;
}
 
</STYLE>
<BODY>
<H2>HTA - Création structure de projets</H2>
<div width=""  id="divFile">
 
Emplacement : <input type="Text" size="50" name="repchemin" id="repchemin" value="" /> <input type="submit" value="Parcourir" size="50" onclick="parcourir()" />
</div>
 
<FORM name="form2">
<input type="checkbox" name="chemin" value="gestionproj">01 - Gestion de Projet<br>
<input type="checkbox" name="chemin" value="dlt">02 - DLT<br> 
<input type="checkbox" name="chemin" value="photos">03 - Photos<br> 
<input type="checkbox" name="chemin" value="technique">04 - Technique<br> 
<input type="checkbox" name="chemin" value="mes">05 - MES<br> 
<input type="checkbox" name="chemin" value="documentation">06 - Documentation<br> 
<br>
 
<input type="button" value="Valider" onclick="CreerRep()"> 
</FORM>
<script language="vbscript">
 
Option Explicit
 
  Const RETURNONLYFSDIRS = &H1
  Dim oShell, oFolder, oFolderItem
'==================================================================================================================================================================================
Function parcourir()
	Set oShell = CreateObject("Shell.Application")
	Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS, "")
	If oFolder is Nothing Then 
	    MsgBox "Abandon opérateur",vbCritical
	Else
		Set oFolderItem = oFolder.Self
		'oFolderItem.path
		'MsgBox oFolderItem.path 
		repchemin.Value = oFolderItem.path
	End If
 
	Set oFolderItem = Nothing
	Set oFolder = Nothing
	Set oShell = Nothing
	End Function
'==================================================================================================================================================================================
	' Fonction de test pour pouvoir créer au moins un répertoire
	Function TestCheckBox()
	   Dim T,CHK
	   For T = 0 To form2.chemin.length - 1
	      If form2.chemin(T).checked Then
		     TestCheckBox = True
			 Exit For
		  End If
       Next
    End Function	
'==================================================================================================================================================================================    
 
'==================================================================================================================================================================================
	Sub CreerRep()
	    Dim oFld , i, oFso
	    If repchemin.Value ="" Then 
		    Msgbox "Vous devez d'abord remplir le champ Emplacement",vbCritical
			Exit Sub
		End If	
		If TestCheckBox Then	
			Set oFSO = CreateObject("Scripting.FileSystemObject")
		    ' Crée le repertoire
            For i = 0 To form2.chemin.length - 1 
 
		  	     if form2.chemin(0).checked Then
		  	     oFSO.CopyFolder "sourceDir\01-Gestion De Projets", repchemin.value & "\01-Gestion De Projets"  ,True ' True : pour copier en "écrasant" destination si existe..
		  	     End If 
 
		  	     if form2.chemin(1).checked Then
		  	     oFSO.CopyFolder "sourceDir\02-Gestion DLT",repchemin.value & "\02-Gestion DLT",True ' True : pour copier en "écrasant" destination si existe..
		  	     End If 
 
		  	     if form2.chemin(2).checked Then
		  	     oFSO.CopyFolder "sourceDir\03-Photos",repchemin.value & "\03-Photos",True ' True : pour copier en "écrasant" destination si existe..
		  	     End If 
 
		  	     if form2.chemin(3).checked Then
		  	     oFSO.CopyFolder "sourceDir\04-Technique",repchemin.value & "\04-Technique",True ' True : pour copier en "écrasant" destination si existe..
		  	     End If 
 
		  	     if form2.chemin(4).checked Then
		  	     oFSO.CopyFolder "sourceDir\05-MES",repchemin.value & "\05-MES",True ' True : pour copier en "écrasant" destination si existe..
		  	     End If 
 
		  	     if form2.chemin(5).checked Then
		  	     oFSO.CopyFolder "sourceDir\06-Documentation ",repchemin.value & "\06-Documentation",True ' True : pour copier en "écrasant" destination si existe..
		  	     End If 
 
            Next
		Else : MsgBox "Aucun choix n'a été entré, Veuillez en choisir au moins un"	
        End If			
 	     Set oFld = Nothing
		 Set oFso = Nothing
	End Sub
'==================================================================================================================================================================================
 
</script>
 
<fieldset>
	<legend><b>Astuce</b></legend>
	- Le bouton parcourir vous permet de choisir dans quel dossier l'arborescence sera ajouté. 
	<br>
	- Après avoir crée et choisis votre dossier vous pouvez ajouter les dossiers de votre choix en checkant ceux dont vous avez besoin.
</fieldset>
 
<script language="Javascript">
window.resizeTo(600, 512);
</script>
</BODY>
</HTML>
La ou vous avez votre hta il faut une dossier nommé sourceDir contenant votre arborescence et il faudra changer quelque trucs dans mon code.
Darkrems est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 16h47   #8
l_autodidacte
Modérateur
 
Avatar de l_autodidacte
 
Homme Moncef
Directeur de lycée
Inscription : juillet 2009
Messages : 1 213
Détails du profil
Informations personnelles :
Nom : Homme Moncef
Âge : 57
Localisation : Tunisie

Informations professionnelles :
Activité : Directeur de lycée
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 213
Points : 2 226
Points : 2 226
Envoyer un message via Skype™ à l_autodidacte
Citation:
</script>
<fieldset>
<legend><b>Astuce</b></legend>
- Le bouton parcourir vous permet de choisir dans quel dossier l'arborescence sera ajoutée.
<br>
- Après avoir crée créé et choisis choisi votre dossier vous pouvez ajouter les dossiers de votre choix en checkant cochant(ou choisissant) ceux dont vous avez besoin.
</fieldset>

<script language="Javascript">
window.resizeTo(600, 512);
</script>
Cette partie du code est à corriger(une présentation ne devrait pas contenir d'erreurs d'orthographe ou de langue, c'est en quelque sorte la façade de l'application)
__________________
A cœur vaillant rien d'impossible
l_autodidacte est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h33.


 
 
 
 
Partenaires

Hébergement Web