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 15/11/2011, 15h43   #1
Nouveau Membre du Club
 
Homme Bruno
Étudiant
Inscription : novembre 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Bruno
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2011
Messages : 53
Points : 26
Points : 26
Par défaut Envoi EMail Type avec valeurs afichées dans Userform

Bonjour le Forum,
Me voici face à un nouveau problème :
J’ai créé une UserFormEMail dans laquelle on retrouve :
- 2 dates (TextBox11 et TextBox12)
- 1 nom (ComboBox1)
- 1 prenom (TextBox1)
- 1 e-mail (TextBox2)
- 1 numero projet (ComboBox3)
- 3 boutons d’options (OptionButton1, OptionButton2, OptionButton3) dans un Frame5
- 1 bouton « Envoyer »

J’ai réussi à charger les ComboBox et les ListBox

Est-il possible, lorsque j’ai sélectionné un bouton option (par exemple OptionButton1) et que je clique sur le bouton « Envoyer » que ma messagerie retourne un mail type avec comme destinataire : L’adresse mail affichée dans la « Textbox2 » du style :
Titre :
« Suivi projet »

Contenu message :
« Bonjour Monsieur *valeur affichée dans ComboBox1*,
Concernant le projet : *valeur affichée dans Combobox3* qui a commencer le *valeur affichée dans TextBox10* nous avons bien pris en compte votre demande »

La messagerie que j’utilise est « Lotus Notes 6.5 » et s’exécute par défaut directement si je clique sur une adresse mail présente sur ma feuille de calcul.

Je m’améliore petit à petit mais je n’ai encore jamais rencontré ces fonctions.
Auriez-vous une idée de comment faire ?

Merci pour votre aide.
brunounours est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 20h08   #2
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu...!!!

bonjour bruno


il te faudra formater tes trois modèles de mail ensuite quelle méthode utilise tu pour envoyer?


au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 12h14   #3
Nouveau Membre du Club
 
Homme Bruno
Étudiant
Inscription : novembre 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Bruno
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2011
Messages : 53
Points : 26
Points : 26
En fait, je n'ai jamais envoyé de mail directement par Userform sous Excel.

Je souhaiterai lorsque je clique sur un bouton que ma messagerie s'ouvre avec comme destinataire: le destinataire sélectionné dans une TextBox et qu'un message soit pré-écrit dans le corps du message.

Code :
1
2
3
4
5
6
7
 .From = "xxxxx@wanadoo.fr"
        .To = "  Destinataire extrait de ma TextBox1 "
        .CC = ""
        .BCC = ""
        .TextBody = "Bonjour monsieur  Texte extrait de ComboBox1 
Je vous ecrit concernant les projets:  Texte extrait de la ListBox1...
Cordialement"
Information peut-être utile:
Dans une feuille Excel, si dans une cellule je rentre une adresse Mail, et que je clique dessus, ma messagerie s'ouvre en affichant automatiquement le destinataire.

Peut-être puis-je extraire l'adresse mail de la TextBox1, la copier dans une cellule et provoquer un clic automatiquement sur cette même cellule pour ouvrir la messagerie. Et une fois la messagerie ouverte, faire une macro pour y mettre un message dedans.

Je n'ai aucune idée de la bonne méthode à utiliser.

Merci pour vos réponses.

Cordialement Bruno
brunounours est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 12h20   #4
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut re

bonjour bruno

tu n'a pas répondu a ma question

quelle messagerie utilise tu

et même sans savoir dans ma signature tu a mon mailer qui utilise un textbox pour contenir le message

télecharge le et regarde bien le code il est commenté et les modules sont bien séparés


sinon donne moi un exemple de mail fini et envoyé pour voir ce que tu veux vraiment
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 15h21   #5
Nouveau Membre du Club
 
Homme Bruno
Étudiant
Inscription : novembre 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Bruno
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2011
Messages : 53
Points : 26
Points : 26
La messagerie que j’utilise est « Lotus Notes 6.5 ».

Le lien de ta signature qui je pense m'intéresse (mon formulaire mail avec CDO en vba) ne fonctionne pas. De plus à quoi correspond un CDO?

Voici un exemple de mail type a envoyer a l'adresse *TextBox3 (Email destinataire)*: (après je m'adapterai)

Bonjour Monsieur *TextBox1(Prénom)* *ComboBox1(Nom)*,
Je vous écrit concernant les projets: *ListBox1(Nº de projet)*
Afin que vous apportiez les précisions suivante: *(if CheckBox1=true then CheckBox1.Caption)* avant la date suivante: *TextBox2 (date)*

Meilleures Salutations. Bruno



Voila merci encore de m'aider.
brunounours est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 18h20   #6
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut re

bonjour
le CDO est une librairie tu l'a forcement dans le références
"microsoft CDO for window 200 librairie"

je n'utilise pas lotus mais tu a diverse exemple dans le forum est la faq

mais néanmoins tu pourrais utiliser le mien il fait exactement ce que tu cherche
et il a l'avantage de n'utiliser aucune librairie d'aucune application

il prend le destinataire dans un textbox l'expéditeur aussi

il te suffit de modifier le serveur sortant correspondant a ton fournisseur d'accès
je ne vois aucune raison qu'il ne fonctionne pas

le module envoiemail doit être très peu modifier pour te donner satisfaction

au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 13h11   #7
Nouveau Membre du Club
 
Homme Bruno
Étudiant
Inscription : novembre 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Bruno
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2011
Messages : 53
Points : 26
Points : 26
Bonjour, après mes recherches, voici le code auquel j'arrive qui effectue à peu pres la fonction que je souhaite. (sans la fonction avec les 3 messages type mais c'est un début)

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
Private Sub CommandButton1_Click()
 
 
 
'Set up the objects required for Automation into lotus notes
Dim Maildb As Object 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDbName As String 'THe current users notes mail database name
Dim MailDoc As Object 'The mail document itself
Dim AttachME As Object 'The attachment richtextfile object
Dim Session As Object 'The notes session
Dim EmbedObj As Object 'The embedded object (Attachment)
 
 
If UserFormEMail.ListBox2.ListCount = 0 Then MsgBox "No Hay Proyectos Seleccionados Para Mensaje"
If UserFormEMail.ListBox2.ListCount = 0 Then Exit Sub
 
'Start a session to notes
Set Session = CreateObject("Notes.NotesSession")
'Get the sessions username and then calculate the mail file name
'You may or may not need this as for MailDBname with some systems you
'can pass an empty string
UserName = Session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
'Open the mail database in notes
Set Maildb = Session.GETDATABASE("", MailDbName)
If Maildb.IsOpen = True Then
'Already open for mail
Else
Maildb.OPENMAIL
End If
'Set up the new mail document
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
MailDoc.Sendto = "CST_BAntoniol@xxxxxx.com" 'UserFormEMail.TextBox9.Value
MailDoc.CopyTo = ""
MailDoc.Subject = "essaie d'envoi adresse differentes"
' Construction du corps du message
Set objNotesField = MailDoc.CreateRichTextItem("Body")
With objNotesField
.AppendText "Buenos Dias,"
.AddNewline 2
.AppendText "Usted podrìa enviarme el Order Entry Form del (de los) proyecto(s) sigienete(s):"
.AddNewline 2
For i = 0 To UserFormEMail.ListBox2.ListCount - 1
.AppendText UserFormEMail.ListBox2.List(i) & " --- " & UserFormEMail.ListBox3.List(i)
.AddNewline 2
Next i
.AddNewline 2
.AppendText "Un saludo Cordial"
.AddNewline 1
.AppendText "Bruno Antoniol"
.AddNewline 3
End With
 
 
MailDoc.SaveMessageOnSend = True
'Set up the embedded object and attachment and attach it
 
 
'Send the document
MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
MailDoc.Send 0, Recipient
 
'Clean Up
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing
 
 
End Sub
Mon probleme est que cette commande envoie le mail directement.
aurriez vous un moyen d'afficher le message avant de l'envoyer pour effectuer les dernières modifications si besoin est?

Merci, Cdt
Bruno
brunounours est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 15h54   #8
Nouveau Membre du Club
 
Homme Bruno
Étudiant
Inscription : novembre 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Bruno
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2011
Messages : 53
Points : 26
Points : 26
Voici mon code final qui je pense adapté correctement pourra servir à 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
 
'---------- API -----------
'pour faire passer au premier plan
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
'pour ouvrir la fenêtre
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, _
                    ByVal nCmdShow As Long) As Long
'pour vérifier si Lotus est ouvert
Private Declare Function FindWindow Lib "user32" Alias _
    "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
Dim sSrvr As String 'Le serveur de mail de l'utilisateur courant
Dim MailDbName As String 'Le nom de la base mail de l'utilisateur courant
Dim UserName As String 'Le nom de l'utilisateur courant
 
Dim retVal As Variant 'La valeur de retour de la fonction
 
'---------------- fonction ouverture de session Notes -----------
Function CreateNotesSession() As Boolean
    Const notesclass$ = "NOTES"
    Const SW_SHOWMAXIMIZED = 3 'plein ecran
  Const SW_SHOWMMINIZED = 2 'reduire
  Const SW_SHOWWINDOW = 1 'fenetre
  Const SW_SHOW = 5
 
    Dim Lotus_Session As Object
    Dim rc&
    Dim lotusWindow&
 
'    lotusWindow = FindWindow(notesclass, vbNullString)
 
'    sSrvr = Lotus_Session.GETENVIRONMENTSTRING("MailServer", True)
'    MailDbName = Lotus_Session.GETENVIRONMENTSTRING("MailFile", True)
'    UserName = Lotus_Session.UserName
 
'    DoEvents
  'Ouverture de Lotus Notes
  'Mettre votre chemin d'accès pour notes.exe et notes.ini'
   'retVal = Shell("C:\Program Files\lotus\notes\notes.exe =C:\Program Files\lotus\notes\notes.ini", vbMaximizedFocus)
 
    'verifier que Lotus est bien ouvert (recupere le handle)
  lotusWindow = FindWindow(notesclass, vbNullString)
    If lotusWindow <> 0 Then
        rc = ShowWindow(lotusWindow, SW_SHOW)
        rc = SetForegroundWindow(lotusWindow)
        CreateNotesSession = True
    Else
         CreateNotesSession = False
    End If
End Function
 
 
 
 
 
 
Private Sub CommandButton1_Click()
 
 Const EMBED_ATTACHMENT As Integer = 1454
    Const EMBED_OBJECT As Integer = 1453
    Const EMBED_OBJECTLINK As Integer = 1452
 
    Dim s As Object ' use back end classes to obtain mail database name
  Dim db As Object '
  Dim doc As Object ' front end document
  Dim beDoc As Object ' back end document
  Dim workspace As Object ' use front end classes to display to user
  Dim bodypart As Object '
  Dim bodyAtt As Object '
  Dim lbsession As Boolean
 
    lbsession = CreateNotesSession
 
    If lbsession Then
        'cree la session Lotus Notes
      Set s = CreateObject("Notes.Notessession")
        'se connecte a sa database
      Set db = s.getDatabase(sSrvr, MailDbName)
        If db.IsOpen = True Then
            'database deja ouvert
      Else
            Call db.Openmail
        End If
        'cree un document memo
      Set beDoc = db.CreateDocument
        beDoc.Form = "Memo"
 
         'construction du mail
      Set bodypart = beDoc.CreateRichTextItem("Body")
        'beDoc.From = "Moi" 'inutile
      beDoc.SendTo = UserFormEMail.TextBox9.Value
        beDoc.CopyTo = CCToAdr
        beDoc.BlindCopyTo = BCCToAdr
        beDoc.Subject = UserFormEMail.TextBox10.Value & " Pendiente"
 
 
With bodypart
.AppendText "Buenos Dias,"
.AddNewline 2
.AppendText "Usted podrìa enviarme el Order Entry Form del (de los) proyecto(s) sigienete(s):"
.AddNewline 2
For i = 0 To UserFormEMail.ListBox2.ListCount - 1
.AppendText UserFormEMail.ListBox2.List(i) & " --- " & UserFormEMail.ListBox3.List(i)
.AddNewline 2
Next i
.AddNewline 2
.AppendText "Un saludo Cordial"
.AddNewline 1
.AppendText "Bruno Antoniol"
.AddNewline 3
End With
 
        '-----------------------------------------
      'Remarque s'il y a des destinataires multiples, il suffit de mettre un tableau
      'd'e-mail dans SendTo (CopyTo,BlindCopyTo)
      'exemple :
      'Dim recip(25) as variant
      'recip(0) = "emailaddress1"
      'recip(1) = "emailaddress2" e.t.c
      'beDoc.sendto = recip
      '----------------------------------------
      ' documents joint 1
      If Len(Attach1) > 0 Then
            If Len(dir(Attach1)) > 0 Then
               Set bodyAtt = bodypart.EmbedObject(EMBED_ATTACHMENT, "", Attach1, dir(Attach1))
            End If
        End If
 
        ' documents joint 2
      If Len(Attach2) > 0 Then
            If Len(dir(Attach2)) > 0 Then
                Call bodyAtt.EmbedObject(EMBED_ATTACHMENT, "", Attach2, dir(Attach2))
            End If
        End If
 
 For i = 0 To UserFormEMail.ListBox2.ListCount - 1
Textei = Textei & ListBox2.List(i) & " --- " & ListBox3.List(i) & Chr(10) & Chr(10)
Next i
 
        'Affichage du mail dans Lotus Notes
      Set workspace = CreateObject("Notes.NotesUIWorkspace")
        Call workspace.EditDocument(True, beDoc).FieldSetText("Body", "Bonjour Monsieur " & TextBox1 & " " & ComboBox1 & "," & Chr(10) & Chr(10) & _
"Je vous écrit concernant les projets: " & Listei & Chr(10) & Chr(10) & _
"Afin que vous apportiez les précisions suivantes: " & CheckBox1.Caption & _
" avant la date suivante: " & TextBox2 & Chr(10) & Chr(10) & Chr(10) & " Meilleures Salutations.Bruno")            
 
 
 
        Set s = Nothing
        Else
            MsgBox "Votre Lotus Notes est fermé !"
    End If
 
 
End Sub
Cdt et bonne chance si vous utilisez Lotus notes!!

Bruno
brunounours est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h24.


 
 
 
 
Partenaires

Hébergement Web