Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/11/2011, 13h40   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
Par défaut Envoi par mail de données Excel

Actuellement j'utilise le code qui suit pour ouvrir la page GMAIL dans internet explorer. Ensuite en manuel, je rentre le nom d'utilisateur et le mot de passe pour accéder à la messagerie. J'ouvre un nouveau message et je fais un copier coller des données d'une feuille excel pour les envoyer.
Comment faire pour automatiser le tous dans la même macro?
C'est à dire que le nom d'utilisateur, le mot de passe, l'ouverture du nouveau message, et le copier coller s'effectue au lancement de la macro depuis mon classeur Excel?

Code :
1
2
3
4
5
6
7
8
9
Sub OuvrirInternet()
 
Dim NomAppli, AdresseHTTP
 
NomAppli = "C:\Program Files\Internet Explorer\IEXPLORE.EXE "
AdresseHTTP = "http://www.gmail.fr/"
N = NomAppli + AdresseHTTP
Call Shell(N, 3)
End Sub
J'ai changé mon code pour celui-ci que j'ai trouvé sur le forum. Par contre il ne fonctionne pas. Il s'arrête à la ligne N°20 "nom d'utilisateur". Pourquoi?

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
Sub connexion()
 
    Dim ie As InternetExplorer
    Dim IEdoc As Object
    Dim DOCelement As Object
 
    Set ie = New InternetExplorer
    ie.Visible = True
    ie.Navigate ("http://www.gmail.com")
 
     ' attente de fin de chargement
    Do Until ie.ReadyState = 4
        DoEvents
    Loop
 
    Set IEdoc = ie.Document
 
    'login
     Set DOCelement = IEdoc.getElementsByName("vb_login_username").Item
     DOCelement.Value = "nom d'utilisateur"
 
    'password
     Set DOCelement = IEdoc.getElementsByName("vb_login_password").Item
     DOCelement.Value = "mot de passe"
     DOCelement.Select
 
    'connexion
     Set DOCelement = IEdoc.Forms(0)
     DOCelement.submit
 
End Sub
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 20h37   #2
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 668
Points : 7 668
Bonjour,

C'est tout à fait normal.
Il n'y a, dans la page de login aucun élément ayant pour nom "vb_login_username" ni même "vb_login_password".

J'en trouve un dont le nom est "email" et un autre, "passwd".
Il me semble que ce sont ceux que tu cherches.

Par contre, je pense que tu vas rencontrer un autre problème.
Vu que le formulaire est en mode Post, tu ne pourras pas remplir les champs par une simple assignation.

J'ai un code qui traite l'envoi de données par formulaire Post mais pas ici.
J'essayerai de l'avoir pour demain.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 21h21   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
Je dois reconnaître que je ne comprends pas tout!
J'espère que tu retrouveras ton code demain pour essayer. Merci de ton aide.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 21h52   #4
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 668
Points : 7 668
Bonjour,

Voici un code que j'avais trouvé sur internet.

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
'****************************************
'Post form data - begin
'sends form fields specified In Names/Values arrays To the URL
Sub PostRequest(strURL As String, aNames, aValues)
  Dim i As Integer
  Dim strFormData As String
  Dim strName As String
  Dim strValue As String
 
  'Enumerate form names And it's values
  'and built string representaion of the form data
  For i = 0 To UBound(aNames)
    'URL encode source fields
    strName = URLEncode(aNames(i))
    strValue = URLEncode(aValues(i))
    If strFormData <> "" Then strFormData = strFormData & "&"
    strFormData = strFormData & strName & "=" & strValue
  Next
 
  IEPostStringRequest strURL, strFormData
End Sub
 
'sends URL encoded form data To the URL using IE
Sub IEPostStringRequest(URL, FormData)
 
  'Send the form data To URL As POST request
  Dim bFormData() As Byte
 
  ReDim bFormData(Len(FormData) - 1)
  bFormData = StrConv(FormData, vbFromUnicode)
  objIE.navigate URL, 2 + 4 + 8, , bFormData, _
    "Content-type: application/x-www-form-urlencoded" + Chr(10) + Chr(13)
 
  Do Until objIE.readyState = READYSTATE_COMPLETE
    DoEvents
  Loop
 
End Sub
 
'URL encode of a string data
Function URLEncode(strData)
  Dim i As Long
  Dim C As Integer
  Dim strOut As String
 
  For i = 1 To Len(strData)
    C = Asc(Mid(strData, i, 1))
 
    Select Case C
      Case 32
        strOut = strOut + "+"
      Case 0 To 31, 33 To 47, 58 To 64, 91 To 94, 96, 123 To 127
        strOut = strOut + "%" + Hex(C)
      Case Else
        strOut = strOut + Mid(strData, i, 1)
    End Select
 
  Next
  URLEncode = strOut
End Function
'Post form data - end
'****************************************
Je ne suis pas certain de te rendre service en te le donnant mais, sait-on jamais...

aNames est un Array avec les noms des champs et aValues un Array avec les valeurs correspondantes.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 22h08   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
Je t'avoue que j'ai beaucoup de mal à comprendre comment elle fonctionne. Je suis complètement novice en VBA.
Peux tu m'aider un peu en me mettant des commentaires stp.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h03.


 
 
 
 
Partenaires

Hébergement Web