Utiliser un formulaire dans Internet Explorer

L'idée est d'ouvrir un formulaire dans Internet Explorer et de récupérer les variables entrées pour insérer toutes les données d'exemplaire.

Sub appel()
Dim IE
Dim CB
Dim Cote
Dim PEB
Dim Fonds
Dim L035

Set IE = CreateObject("InternetExplorer.Application")
IE.Left = 50
IE.Top = 100
IE.Height = 550
IE.Width = 550
IE.MenuBar = 0
IE.ToolBar = 0
IE.StatusBar = 0
IE.Navigate ("C:\OCLCPica\WinIBW30\Profiles\combot\form.htm")
IE.Visible = True
Screen = IE.Document.Focus
Do
On Error Resume Next
If Err.Number <> 0 Then
   Exit Do
End If
Loop While IE.Document.All("Hidden1").Value = 0
If CInt(IE.Document.All("Hidden1").Value) < 2 Then
IE.Quit
Set IE = Nothing
MsgBox ("Annulé")
Else
CB = IE.Document.All("CB").Value
Cote = IE.Document.All("Cote").Value
PEB = IE.Document.All("PEB").Value
Fonds = IE.Document.All("Fonds").Value
L035 = IE.Document.All("L035").Value
IE.Quit
Set IE = Nothing
MsgBox (CB & vbCrLf & Cote & vbCrLf & PEB & vbCrLf & Fonds & vbCrLf & L035)
End If
End Sub

Le script ouvre l'application Internet Explorer. Le document affiché est form.html.
On met ensuite la fenêtre au premier plan.

Do ... Loop While la valeur du champ Hidden1 est 0 : comme cette valeur est à 0 dès l'affichage, la boucle est infinie s'il ne se passe rien.
J'ai cependant ajouté un traitement d'erreur qui permet de sortir de cette boucle, surtout si l'utilisateur ferme la fenêtre en cliquant en haut sur la croix. Dans ce cas, la valeur du champ caché reste à 0 et la condition suivante s'applique : le message Annulé s'affiche.

Il en va de même si l'utilisateur clique sur le bouton Annuler : le champ Hidden1 prend alors la valeur 1, et la même condition est vérifiée.

Mais si l'utilisateur clique sur Envoyer, le champ Hidden1 prend la valeur 2 : on sort de la boucle infinie, et la condition Else s'applique : on récupère toutes les valeurs et on peut les envoyer dans le Sudoc.

Voici le formulaire :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Exemplaire</title>
<style type="text/css">
<!--
body {
background-color: #FFFFD2;
font-family: verdana,arial,sans-serif;
margin: 5%;
font-size: x-small;
line-height: 170%;}
h3 {text-align: center;}
peb {width: 50px;}
div.ligne {
 width: 100%;
}
div.agauche {
 position: relative; 
 padding: 10px; 
 margin-top: 5px; 
 width: 30%; 
 float: left;
}
div.adroite {
 position: relative; 
 padding: 10px; 
 margin-top: 5px; 
 width: 70%;
}
div.boutons {
 position: relative; 
 padding: 10px; 
 margin-top: 5px; 
 width: 100%;
 text-align: right;}
-->
</style>
</head>
<body>
<script id="1" language="VBScript" type="text/vbscript">
Sub B0_OnClick
Document.Formulaire.Hidden1.Value = 2
End Sub

Sub B1_OnClick
Document.Formulaire.Hidden1.Value = 1
End Sub

Sub CB_OnFocusOut
If Not Left(Document.Formulaire.CB.Value,1) = "C" Then
   If Len(Document.Formulaire.CB.Value) < 10 Then
   MsgBox ("Vérifiez le code-barre," & vbLf & "il est trop court !")
   ElseIf Len(Document.Formulaire.CB.Value) > 10 Then
   MsgBox ("Vérifiez le code-barre," & vbLf & "il est trop long !")
   End If
Else
   If Len(Document.Formulaire.CB.Value) < 8 Then
   MsgBox ("Vérifiez le code-barre," & vbLf & "il est trop court !")
   ElseIf Len(Document.Formulaire.CB.Value) > 8 Then
   MsgBox ("Vérifiez le code-barre," & vbLf & "il est trop long !")
   End If
End If
End Sub
</script>
<form name="Formulaire" id="Formulaire">
<h3>Données d'exemplaire</h3>
<hr>
<div class="ligne">
<div class="agauche">Code-barre :</div>
<div class="adroite"><input type="text" size="10" name="CB"></div>
</div>
<div class="ligne">
<div class="agauche">Cote :</div>
<div class="adroite"><input type="text" size="10" name="Cote"></div>
</div>
<div class="ligne">
<div class="agauche">Code PEB :</div>
<div class="adroite"><select size="1" name="PEB" class="peb">
<option value="u">u</option>
<option value="g">g</option>
<option value="f">f</option>
<option value="b">b</option>
</select></div>
</div>
<div class="ligne">
<div class="agauche">Fonds :</div>
<div class="adroite"><select size="1" name="Fonds">
<option value="Salle générale">Salle générale</option>
<option value="Salle générale : Usuels">Salle générale : Usuels</option>
<option value="Espace Sciences">Espace Sciences</option>
<option value="Espace Sciences : Usuels">Espace Sciences : Usuels</option>
<option value="Espace lettres">Espace Lettres</option>
<option value="Espace Lettres : Usuels">Espace Lettres : Usuels</option>
<option value="Espace Sports">Espace Sports</option>
<option value="Espace Sports : Usuels">Espace Sports : Usuels</option>
<option value="Espace Economie">Espace Economie</option>
<option value="Espace Economie : Usuels">Espace Economie : Usuels</option>
<option value="Espace Recherche">Espace Recherche</option>
<option value="Salle Europe">Salle Europe</option>
<option value="Salle Europe : Usuels">Salle Europe : Usuels</option>
<option value="Europe : Magasins">Europe : Magasins</option>
<option value="Fonds professionnel">Fonds professionnel</option>
<option value="Salle d'actualité">Salle d'actualité</option>
<option value="Salle Multimédia">Salle Multimédia</option>
<option value="Salle Léon Vérane">Salle Léon Vérane</option>
<option value="Magasins">Magasins</option>
<option value="Bureaux">Bureaux</option>
<option value="Accueil">Accueil</option>
<option value="Salle générale : Mises à jour">Salle générale : Mises à jour</option>
</select></div>
</div>
<div class="ligne">
<div class="agauche">L035 :</div>
<div class="adroite"><input type="text" size="10" name="L035"></div>
<input type="hidden" value="0" id="Hidden1" name="Hidden1">
</div>
<hr>
<div class="boutons">
<input type="button" value="Envoyer" name="B0">    
<input type="button" value="Annuler" name="B1">
</div>
</form>
</body>
</html>

Un inconvénient : avec Windows XP SP2, le script n'est pas lancé pour des raisons de sécurité. À voir