Ecrire une page html en vbs

Ecrire une page html en vbs - VB/VBA/VBS - Programmation

Marsh Posté le 08-07-2009 à 10:37:39    

Bonjour
Merci d'avance de votre lecture et pour aide apportée :)
J'essaye depuis un petit moment de faire une interface interactive en vbs
Mon besoin est la création d'une page html dépendante de paramètre, telle que les clicks de l'utilisateur
Ainsi imaginons, j'ai une table

Code :
  1. <table>
  2.   <tr>
  3.     <td>a</td>
  4.     <td>b</td>
  5.   </tr>
  6.   <tr>
  7.     <td><span>button 1</span><span>button 2</span></td>
  8.     <td>d</td>
  9.   </tr>
  10. </table>


Il me faudrait que si l'utilisateur clique sur bouton 1 ou bouton 2 alors la lettre d soit remplacée par tel chose ou tel autre.
Sachant que ce tel autre peut être par exemple le rajout d'une colonne  :whistle:  
 
N'ayant pas vu de solution au début en vb j'ai essayé en javascript.
Le problème c'est qu'on ne peut apparament pas modifier la stucture de la page avec des astuces du genre  

Code :
  1. document.getElementById('ligneA_'+i).innerHTML

 :sweat:  
 
Du coup j'aimerais regénérer correctement la page
J'ai découvert alors Document.write
Je me suis super voila la solution à mon problème  :bounce:  
 
Je sauvegarde la page dans une variable string, je la modifie comme je l'entend et je fais des document.write si besoin. :sol:  
Belle solution théorique mais dans la pratique, j'y arrive pas  :cry:  
Voici mon code à l'heure actuelle.

Code :
  1. <html>
  2.   <HEAD>
  3.     <TITLE>Managment vision</TITLE>
  4.   </HEAD>
  5.   <BODY> 
  6.     <input type="button" value="OptCC" name="OptCC" onClick="OptCC()"/><!--Me sert a tester!-->
  7.     <p>test</p>
  8.     <script language="VBScript">
  9.       contenu=array("1","2" )
  10.       Sub Window_OnLoad
  11.       contenu(0)="<div align=center><table height=100% width=100% border =""5px"">"
  12.       contenu(0)=contenu(0) & "<tr><td>Vue possible</td><td>Option disponible</td></tr>"
  13.       contenu(0)=contenu(0) & "<tr><td> <input type=""button"" value=""OptCC"" name=""OptCC"" onClick=""OptCC()"" /> CostCentre</td>"
  14.       contenu(1) = contenu(0) & "<td>&nbsp;</td></tr></table></div>"
  15.       Document.write contenu(1)
  16.       End Sub
  17.       Public Function OptCC()
  18.       MsgBox "test"
  19.       ' contenu(1)=contenu(0)&"<td>test</td></tr></table></div>"
  20.       ' Document.write contenu(1)
  21.       End Function
  22.     </script>
  23.   </BODY>
  24. </html>


J'obtiens l'erreur :
Object doesn't support this propety or method"
J'hallucine  :heink:  
surtout que si je sors mon button et que je commente le document.write ca marche  :sweat:  
Du coup deux questions:
Est ce quelqu'un voit un bug ou à une solution?
Sinon connaissez un autre moyen de faire ce que je désire?
 
Je précise que le "" c'est ce que j'ai lu pour l'escapement de " et apparament dans la source html c'est correcte.
 
Merci de votre attention.


Message édité par _xme_ le 08-07-2009 à 13:53:53
Reply

Marsh Posté le 08-07-2009 à 10:37:39   

Reply

Marsh Posté le 08-07-2009 à 11:13:47    

Bon ben finalement j'ai trouvé :)
 
Le problème venait soit de Window_OnLoad soit du fait que ce soit un Sub
J'y avais pas pensé mais du coup soit il ne connaissait pas les autres fonctions
soit il ne connaissait pas la variable string
J'ai pas trop cherché mais j'ai une solution qui marche et ça me suffit :)

Reply

Marsh Posté le 08-07-2009 à 14:01:07    

Re bonjour
J'ai crié victoire trop vite ...
le script plante du moment que l'on clique deux fois sur le bouton
Du coup je ne sais pas trop comment résoudre cela....
Mon code actuel

Code :
  1. <html>
  2.   <HEAD>
  3.     <TITLE>Managment vision</TITLE>
  4.     <script language="VBScript">
  5.       Public Function CCrequete()
  6.       MsgBox "test"
  7.       End Function
  8.     </script>
  9.   </HEAD>
  10.   <BODY> 
  11.     <script language="VBScript">
  12.       ' Definition de la page de base
  13.       contenu=array("1","2","3","4" )
  14.       contenu(0)="<div align=center><table height=100% width=100% border =""5px"">"
  15.       contenu(0)=contenu(0) & "<tr height=30% align=""center""><td width=30%>Vue possible</td><td>Option disponible</td></tr>"
  16.       contenu(0)=contenu(0) & "<tr align=""center""><td> <input type=""button"" value=""Cost Centre"" name=""OptCC"" OnClick=""OptCC()""><br><input type=""button"" value=""Projet"" name=""OptProj"" OnClick=""OptProj()""> </td>"
  17.       ' Definition de la page d'accueil
  18.       contenu(1) = contenu(0) & "<td>&nbsp;</td></tr></table></div>"
  19.       ' Definition de la page selection d'option pour la vue cost centre
  20.       contenu(2)=contenu(0) & "<td>"
  21.       contenu(2)=contenu(2) & "<u>Releve entre les dates du</u>  : <br />"
  22.       contenu(2)=contenu(2) & "<input type=""text"" name=""datedebrel"" value=""01/01/"& year(date) & """ size=""8"">"
  23.       contenu(2)=contenu(2) & " jusqu'au "
  24.       contenu(2)=contenu(2) & "<input type=""text"" name=""datefinrel"" value="""& date & """ size=""8""><br /><br />"
  25.       contenu(2)=contenu(2) & "<u>Affichage du cout en</u> : <br />"
  26.       contenu(2)=contenu(2) & "<input type=""radio"" name=""unit_cout"" value=""kemd"" checked=""checked"" > K&euro; et Jour / Homme  <br />"
  27.       contenu(2)=contenu(2) & "<input type=""radio"" name=""unit_cout"" value=""ke"">K&euro;<br />"
  28.       contenu(2)=contenu(2) & "<input type=""radio"" name=""unit_cout"" value=""md""> Jour / Homme <br /><br />"
  29.       contenu(2)=contenu(2) & "<u>Affichage des couts pour</u> : <br />"
  30.       contenu(2)=contenu(2) & "<input type=""radio"" name=""source_cout"" value=""intext"" checked=""checked"" > Interne et externe <br />"
  31.       contenu(2)=contenu(2) & "<input type=""radio"" name=""source_cout"" value=""int"">Seulement les internes<br />"
  32.       contenu(2)=contenu(2) & "<input type=""radio"" name=""source_cout"" value=""ext"">Seulement les externes<br /><br /><br />"
  33.       contenu(2)=contenu(2) & "<input type=""button"" name=""CCrequete"" value=""Generer"" OnClick=""CCrequete()"">"
  34.       contenu(2)=contenu(2) & "</td>"
  35.       contenu(2)=contenu(2) & "</tr></table></div>"
  36.       ' Definition de la page de projet
  37.       contenu(3) = contenu(0) & "<td>&nbsp;</td></tr></table></div>"
  38.       Public Function Accueil()
  39.       Document.write contenu(1)
  40.       End Function
  41.       Public Function OptCC()
  42.       Document.write contenu(2)
  43.       End Function
  44.       Public Function OptProj()
  45.       Document.write contenu(3)
  46.       End Function
  47.       Call Accueil
  48.     </script>
  49.   </BODY>
  50. </html>


Un click c'est bon, deux ça plante -_-
L'erreur: "Object doesn't support this propety or method"  :heink:  
et ligne 1 :(  
Merci d'avance pour vos idées :)

Reply

Marsh Posté le 08-07-2009 à 17:10:54    

Bon je continue mon monologue, car j'ai plus ou moins trouvé ma solution.
Il semble que du moment qu'on utilise Document.write de bel merde se suive.
Du genre pas moyen de s'adresser au fonction precedement déclarer
En tout cas voici un code qui marche et qui fait ce dont j'avais besoin en espérant que ca puisse servir à d'autre

Code :
  1. <html>
  2.   <HEAD>
  3.     <TITLE>Managment vision</TITLE>   
  4.     <script language="VBScript">
  5.       ' Definition de la page de base
  6.       contenu=array("1","2","3","4" )
  7.       contenu(0)="<div align=center> <table height=100% width=100% border =""5px"">"
  8.       contenu(0)=contenu(0) & " <tr height=30% align=""center""> <td width=30%>Vue possible</td> <td>Option disponible</td> </tr> "
  9.       contenu(0)=contenu(0) & "<tr align=""center""> <td> <form name=""form1"" method=""post""> "
  10.       contenu(0)=contenu(0) & "<select name=""choix"">"
  11.       contenu(0)=contenu(0) & "<option value=""OptCC"">Cost Centre</option>"
  12.       contenu(0)=contenu(0) & "<option value=""OptProj"">Projet</option>"
  13.       contenu(0)=contenu(0) & " </select> <br>"
  14.       contenu(0)=contenu(0) & "<input type=""button"" name=""ChoixVue"" value=""Valider""/>"
  15.       contenu(0)=contenu(0) & " </form> </td> "
  16.       ' Definition de la page d'accueil
  17.       contenu(1) = contenu(0) & "<td><span id=""option""></span>&nbsp;</td> </tr> </table> </div> "
  18.       ' Definition de la page selection d'option pour la vue cost centre
  19.       contenu(2)="<u>Releve entre les dates du</u>  : <br /> "
  20.       contenu(2)=contenu(2) & "<form name=""form2"" method=""post"">"
  21.       contenu(2)=contenu(2) & "<input type=""text"" name=""datedebrel"" value=""01/01/"& year(date) & """ size=""8"">"
  22.       contenu(2)=contenu(2) & " jusqu'au "
  23.       contenu(2)=contenu(2) & "<input type=""text"" name=""datefinrel"" value="""& date & """ size=""8""><br /><br />"
  24.       contenu(2)=contenu(2) & "<u>Affichage du cout en</u> : <br />" 
  25.       contenu(2)=contenu(2) & "<select name=""unit_cout"">"
  26.       contenu(2)=contenu(2) & "<option value=""kemd""> K&euro; et Jour / Homme  </option>"
  27.       contenu(2)=contenu(2) & "<option value=""ke"">K&euro; seulement</option>"
  28.       contenu(2)=contenu(2) & "<option value=""md""> Jour / Homme seulement</option></select><br /><br/>"
  29.       contenu(2)=contenu(2) & "<u>Affichage des couts pour</u> : <br />"
  30.       contenu(2)=contenu(2) & "<select name=""source_cout"">"
  31.       contenu(2)=contenu(2) & "<option value=""intext""> Interne et externe  </option>"
  32.       contenu(2)=contenu(2) & "<option value=""int""> Seulement les internes </option>"
  33.       contenu(2)=contenu(2) & "<option value=""ext""> Seulement les externes </option></select><br /><br/>"
  34.       contenu(2)=contenu(2) & "</form>"
  35.       contenu(2)=contenu(2) & "<input type=""button"" name=""CCrequete"" value=""Generer"" OnClick=""CCrequete()"">"
  36.       ' Definition de la page de projet
  37.       contenu(3) = " test  "
  38.       a = "avant"
  39.       Public Function ChoixVue_OnClick()
  40.       choix=Document.form1.choix.value
  41.       MsgBox choix
  42.       If StrComp(choix,"OptCC" )=0 Then
  43.       a =  contenu(2)
  44.       End If
  45.       If StrComp(choix,"OptProj" )=0 Then
  46.       a = contenu(3)
  47.       End If
  48.       Call remplissage_option(choix)
  49.       End Function
  50.     </script>
  51.     <script type="text/javascript">
  52.       var i = 1;
  53.       var i2;
  54.       function remplissage_option(t) {
  55.       i2 = i + 1;
  56.       document.getElementById('option').innerHTML = a;
  57.       i=i2;
  58.       }
  59.     </script>
  60.   </HEAD>
  61.   <BODY> 
  62.     <script language="VBScript">
  63.       Public Function CCrequete()
  64.       MsgBox document.form2.datedebrel.value
  65.       MsgBox document.form2.datefinrel.value
  66.       MsgBox document.form2.unit_cout.value
  67.       MsgBox document.form2.source_cout.value
  68.       End Function
  69.       Public Function Accueil()
  70.       Document.write contenu(1)
  71.       End Function
  72.       Call Accueil
  73.     </script>
  74.   </BODY>
  75. </html>


Quelques remarques:
Je n'utilise plus de onclick car des que je fais ca plante
J'utilise des select car c'est le seul moyen d'obtenir . value
les radios par exemple doivent être vérifié à la main les uns après les autres c'est lourd.
J'utilise du javascript pour changer le contenu de la page ca marche très bien :)
Voila si certain on des questions, qu'il n'hésite pas :)


Message édité par _xme_ le 08-07-2009 à 17:11:56
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed