|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
CONNECTION INTERNET VIA VBA
Information sur la source
Description
Ce code permettra de se connecter à Internet Explorer et d'y naviguer ... récupérer des données ou y envoyer des données. Attention je n'ai pa insérer toutes les fonctions, et il est nécessaire de connaitre la stucture du HTML afin de pouvoir optimiser votre code. Attention, ceci est ma première source, alors je vous demanderais d'être critique. Merci à tous ceux qui la lirons.
Source
- 'Il est nécessaire de référencer IE dans votre programme dans le VBA
- 'outils - références - référencer les outils ... sinon ca marche pas ....
-
-
- 'Code à insérer dans un module
-
- Public Etat As String
- Public IE As New InternetExplorer '****** Internet Explorer
- Public LibelleLien As String '****** Libelle du lien IE
-
-
-
- Sub ConnectionIE()
-
- 'définition de IE en tant que nouvel Objet
- 'rend IE visible
- IE.Visible = True
- 'IE navique vers le site demandé
- IE.Navigate2 "http://www.VotreSite.fr/"
-
- 'Fonction Timer ... regardé plus bas ... la fonction est décrite
- If Timer = False Then GoTo Error_Timer
-
- 'défini la variable de la page web.
- Dim htmlDoc As HTMLDocument
- Set htmlDoc = IE.document
- While htmlDoc.Title <> "Nom de la page Web"
- Wend
-
- 'la variable htmlDoc peut prendre les attributs suivants :
- IETxt = htmlDoc.documentElement.innerText 'récupère le texte de la page HTML
- IESource = htmlDoc.documentElement.innerHTML 'récupère le code source de la page HTML
- IETitre = htmlDoc.Title 'récupère le Titre du document HTML
- IENom = htmlDoc.Name 'récupère le Nom "Microsoft Internet Explorer"
-
-
- '**************** Défini le un controle de la page **************************
- Dim IECtrl As HTMLFormElement
- Set IECtrl = htmlDoc.forms(0).'Nom du controle
- 'Insert une valeur dans un controle dans la page en cours
- IECtrl.Value = "La Valeur Que je veux y mettre"
-
- 'récupère une valeur d'un controle de la page en cours et le met dans une cellule
- Selection = IECtrl.Value
-
- '**************** Défini l'envoi de la page ne cours (simulation de la touche entrer *************************
- Dim IESubmit As HTMLFormElement
- Set IESubmit = htmlDoc.forms(0)
- IESubmit.submit
- If Timer = False Then GoTo Error_Timer
-
- '**************** Ckiquer sur un lien IE************************
- If CliquerLien("libellé du lien sur IE", "Nom de la page suivante") = False Then Exit Sub
-
-
- '**************** Arret Programme correctement ************************
- IE_Fin:
- Application.Visible = True
- MsgBox "Arrêt du programme", vbInformation, "Fin"
-
- '**************** Arret Programme Error Timer ************************
- Error_Timer:
- IE.Quit
- Set IE = Nothing
- End Sub
-
-
- '**********************************************************************************
- '**************************** FONCTION TIMER DE IE ************************
- '**********************************************************************************
- Function Timer() As Boolean
- On Error GoTo Error_IE_Timer
- While IE.readyState <> READYSTATE_COMPLETE
- Wend
- While IE.Busy
- Wend
- Timer = True
- Exit Function
- Error_IE_Timer:
- Timer = False
- MsgBox "Arrêt de Internet Explorer dû à une erreur interne de l'application", vbInformation, "Erreur Application Internet Explorer"
- End Function
-
- '**********************************************************************************
- '**************************** FONCTION Cliquer sur lien IE ************************
- '**********************************************************************************
- Public Function CliquerLien(LibelleLien As String, Optional NomPageSuivante As String) As Boolean
- On Error GoTo ErrLien 'si erreur av ç la gestion de l'erreur
- Dim ObjLien As HTMLLinkElement (défini les liens de la page en Objet
- For Each ObjLien In IE.document.Links 'pour chaque lien de la page active
- If ObjLien.innerText = LibelleLien Then 'si le text du lien = au Libellé visible sur la page alors
- TextePage = IE.document.documentElement.innerText
- ObjLien.Click 'clique sur le lien
- If Timer = False Then GoTo ErrTimer 'gestion du time sur IE
- If NomPageSuivante <> "" Then 'si le nom de la page a été renseigné dnas la fonction alors
- While IE.document.Title <> NomPageSuivante 'attends jusqua ce que la page change (2e gestion du passage de la page qui peuit etre tres utile)
- Wend
- Else
- While IE.document.documentElement.innerText <> TextePage
- Wend
- End If
- CliquerLien = True: Exit Function 'tout c'est bien passer alors la fonction CliquerLien prend la TRUE
- Exit For
- End If
- Next ObjLien
-
-
- 'Sinon prend la valur FALSE
- CliquerLien = False
- 'Permet de demander à l'utilisateur s'il désire terminé l'action manuellement dans le cas ou cela n'a pas fonctionné
- Message = "Une erreur est surevenue sur le lien : " & LibelleLien & "."
- Message = Message & vbCrLf & "Oui : Je souhaite terminer l'action manuellement ?"
- Message = Message & vbCrLf & "Non : Je souhaite terminer le programme ?"
- If MsgBox(Message, vbQuestion + vbYesNo, "Erreur sur le lien : < " & LibelleLien & " >") = vbYes Then
- TextePage = IE.document.documentElement.innerText
- While TextePage = IE.document.documentElement.innerText
- Wend
- If Timer = False Then GoTo ErrTimer
- CliquerLien = True: Exit Function
- End If
-
- ErrLien:
- CliquerLien = False: Exit Function
-
- ErrTimer:
-
- IE.Quit
- Set IE = Nothing: Exit Function
-
- End Function
-
-
- '**********************************************************************************
- '********************** Fonction RECUPERER TEXTE sur IE par Valeur Texte **********
- '**********************************************************************************
- Public Function RécupérerTexte(TexteARechercher As String, TexteARécupérer As String) As String
- Dim MaPosition As Variant
- Dim TextePage As String
-
- On Error GoTo ErrRécupérerTexte
-
- TextePage = IE.document.documentElement.innerText 'récuper le texte entier de la page IE (faite un test avec msgbox TextePage)
- MaPosition = InStr(1, TextePage, TexteARechercher)
- RécupérerTexte = Mid(TextePage, MaPosition + Len(TexteARechercher), Len(TexteARécupérer))
- Exit Function
-
-
-
- ErrRécupérerTexte:
- SearchTexte = False
- End Function
'Il est nécessaire de référencer IE dans votre programme dans le VBA
'outils - références - référencer les outils ... sinon ca marche pas ....
'Code à insérer dans un module
Public Etat As String
Public IE As New InternetExplorer '****** Internet Explorer
Public LibelleLien As String '****** Libelle du lien IE
Sub ConnectionIE()
'définition de IE en tant que nouvel Objet
'rend IE visible
IE.Visible = True
'IE navique vers le site demandé
IE.Navigate2 "http://www.VotreSite.fr/"
'Fonction Timer ... regardé plus bas ... la fonction est décrite
If Timer = False Then GoTo Error_Timer
'défini la variable de la page web.
Dim htmlDoc As HTMLDocument
Set htmlDoc = IE.document
While htmlDoc.Title <> "Nom de la page Web"
Wend
'la variable htmlDoc peut prendre les attributs suivants :
IETxt = htmlDoc.documentElement.innerText 'récupère le texte de la page HTML
IESource = htmlDoc.documentElement.innerHTML 'récupère le code source de la page HTML
IETitre = htmlDoc.Title 'récupère le Titre du document HTML
IENom = htmlDoc.Name 'récupère le Nom "Microsoft Internet Explorer"
'**************** Défini le un controle de la page **************************
Dim IECtrl As HTMLFormElement
Set IECtrl = htmlDoc.forms(0).'Nom du controle
'Insert une valeur dans un controle dans la page en cours
IECtrl.Value = "La Valeur Que je veux y mettre"
'récupère une valeur d'un controle de la page en cours et le met dans une cellule
Selection = IECtrl.Value
'**************** Défini l'envoi de la page ne cours (simulation de la touche entrer *************************
Dim IESubmit As HTMLFormElement
Set IESubmit = htmlDoc.forms(0)
IESubmit.submit
If Timer = False Then GoTo Error_Timer
'**************** Ckiquer sur un lien IE************************
If CliquerLien("libellé du lien sur IE", "Nom de la page suivante") = False Then Exit Sub
'**************** Arret Programme correctement ************************
IE_Fin:
Application.Visible = True
MsgBox "Arrêt du programme", vbInformation, "Fin"
'**************** Arret Programme Error Timer ************************
Error_Timer:
IE.Quit
Set IE = Nothing
End Sub
'**********************************************************************************
'**************************** FONCTION TIMER DE IE ************************
'**********************************************************************************
Function Timer() As Boolean
On Error GoTo Error_IE_Timer
While IE.readyState <> READYSTATE_COMPLETE
Wend
While IE.Busy
Wend
Timer = True
Exit Function
Error_IE_Timer:
Timer = False
MsgBox "Arrêt de Internet Explorer dû à une erreur interne de l'application", vbInformation, "Erreur Application Internet Explorer"
End Function
'**********************************************************************************
'**************************** FONCTION Cliquer sur lien IE ************************
'**********************************************************************************
Public Function CliquerLien(LibelleLien As String, Optional NomPageSuivante As String) As Boolean
On Error GoTo ErrLien 'si erreur av ç la gestion de l'erreur
Dim ObjLien As HTMLLinkElement (défini les liens de la page en Objet
For Each ObjLien In IE.document.Links 'pour chaque lien de la page active
If ObjLien.innerText = LibelleLien Then 'si le text du lien = au Libellé visible sur la page alors
TextePage = IE.document.documentElement.innerText
ObjLien.Click 'clique sur le lien
If Timer = False Then GoTo ErrTimer 'gestion du time sur IE
If NomPageSuivante <> "" Then 'si le nom de la page a été renseigné dnas la fonction alors
While IE.document.Title <> NomPageSuivante 'attends jusqua ce que la page change (2e gestion du passage de la page qui peuit etre tres utile)
Wend
Else
While IE.document.documentElement.innerText <> TextePage
Wend
End If
CliquerLien = True: Exit Function 'tout c'est bien passer alors la fonction CliquerLien prend la TRUE
Exit For
End If
Next ObjLien
'Sinon prend la valur FALSE
CliquerLien = False
'Permet de demander à l'utilisateur s'il désire terminé l'action manuellement dans le cas ou cela n'a pas fonctionné
Message = "Une erreur est surevenue sur le lien : " & LibelleLien & "."
Message = Message & vbCrLf & "Oui : Je souhaite terminer l'action manuellement ?"
Message = Message & vbCrLf & "Non : Je souhaite terminer le programme ?"
If MsgBox(Message, vbQuestion + vbYesNo, "Erreur sur le lien : < " & LibelleLien & " >") = vbYes Then
TextePage = IE.document.documentElement.innerText
While TextePage = IE.document.documentElement.innerText
Wend
If Timer = False Then GoTo ErrTimer
CliquerLien = True: Exit Function
End If
ErrLien:
CliquerLien = False: Exit Function
ErrTimer:
IE.Quit
Set IE = Nothing: Exit Function
End Function
'**********************************************************************************
'********************** Fonction RECUPERER TEXTE sur IE par Valeur Texte **********
'**********************************************************************************
Public Function RécupérerTexte(TexteARechercher As String, TexteARécupérer As String) As String
Dim MaPosition As Variant
Dim TextePage As String
On Error GoTo ErrRécupérerTexte
TextePage = IE.document.documentElement.innerText 'récuper le texte entier de la page IE (faite un test avec msgbox TextePage)
MaPosition = InStr(1, TextePage, TexteARechercher)
RécupérerTexte = Mid(TextePage, MaPosition + Len(TexteARechercher), Len(TexteARécupérer))
Exit Function
ErrRécupérerTexte:
SearchTexte = False
End Function
Conclusion
Vous pouvez définir toute vos fonctions sur IE, mais il n'y a pas de fonction natives. Vous devrez surement modifier vos fonctions par rapport à la page HTML. Les bugs ... il peut y en avoir ... Le plus important est de connaitre le nom de chaque champs dans votre page. En espérant que cela pourra vous aider ... ChaPaTa
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Lien internet en VBscript dans un formulaire [ par Piero69 ]
Bonjour,je crée actuellement des formulaires personnalisés sous outlook 2000.Quelqu'un saurait créer un lien internet inclus dans le formulaire, aille
ouvrir un lien internet sous vb [ par Sokar ]
donc c pour savoir s'il existe un objet, une methode, fonction... de vb pour kil reconnaisse un lien internet et donc ke lon puisse l'ouvrir depuis vb
internet exploreur : lien du genre "irc://" [ par neocracker ]
j'aimerais savoir comment lancer mon programme a l'aide d'un lien du genre "irc://"merci d'avanceneocracker
Pb de formulaire en DHTML avec VB6 [ par sergebab ]
Bonjour,j'ai créé un formulaire en DHTML avec VB6 pour mon siteinternet que j'héberge sur mon serveur donc, la page fonctionne à partir de mon ordineu
Internet Explorer [ par zibou ]
Bonjours,Je voudrais que lorsque l'on clic sur un lien d'une page sur un controle webbrowser , le lien est mis dans un textbox ( text1 ) .
extraire lien avec internet control de Ms [ par Gilloub ]
Qui pourait me donner la methode pour extraire les lien d'un site avec le contrôle internet control
ASP et liens [ par enovia ]
Bonjour,j'ai un prog asp qui permet de lister tous les fichiers d'un repertoire. Lors du clic sur ce lien, il ouvre un formulaire pour faire de la sai
lien internet [ par psychodingue ]
Voilà, j'ai un prob avec les liens internet, je fais comme ça:Public Sub gotoweb(url)Dim Success As LongSuccess = ShellExecute(2, vbNullString, url, v
Lien vers Internet [ par Flash451 ]
Comment mettre un lien vers une page Web dans une application
Lien DDE avec un serveur internet [ par Stpierre39 ]
Je suis connecté à un serveur et avec des liens DDE, j'importe dans des contrôle Label ou contrôle Texte....etc des données sans problème grâce aux pr
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version

HTC Magic
Entre 429€ et 429€
|