erreur dans macro

cartus02

XLDnaute Junior
bonjour

apparement une erreure c'est glisse dans ma macro
pouvez vous me la corriger? merci
voila le code qui se deroule mais ne m envoi pas de mail

Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub TextBox1_Change()
TextBox1 = LCase(TextBox1)
End Sub
Private Sub CommandButton1_Click()
Dim Arobase As String
Dim Point As String
Dim Vide As Variant
If TextBox1.Value = "" Then
MsgBox "Vous avez oublié de rentrer une adresse !", vbInformation, ""
TextBox1.SetFocus
Exit Sub
End If
MailAdresse = TextBox1.Value
MailSubject = TextBox2.Value
'Textbody = TextBox3.Value
On Error GoTo BadMail
Arobase = Application.WorksheetFunction.Search("@", MailAdresse, 1)
Point = Application.WorksheetFunction.Search(".", MailAdresse, 1)
On Error GoTo Suite
Vide = Application.WorksheetFunction.Search(" ", MailAdresse, 1)
Suite:
If Vide <> "" Then GoTo BadMail
Call SendWorkBook
'SortirUserForm
Exit Sub
BadMail:
MsgBox "Adresse Email incorrecte !", vbInformation, ""
TextBox1.SetFocus
End Sub
Private Sub UserForm_Initialize()
Me.Caption = " ENVOI DU CLASSEUR"
End Sub


Sub SendWorkBook()

Set objMessage = CreateObject("CDO.Message")
With objMessage
.Subject = TextBox2.Value
.To = TextBox1.Value
.CC = TextBox4.Value
.TextBody = TextBox3.Value

End With

Set objMessage = Nothing

MsgBox "Votre classeur a bien été envoyé", vbInformation, ""
Unload Me
End Sub



peux tu voir pourquoi?
MERCI
 

Roland_M

XLDnaute Barbatruc
Re : erreur dans macro

bonsoir

je t'ai déjà envoyé un fichier mais tu ne m'as pas répondu si c'était ok !?
voici une autre petite routine que tu peux adapter avec CDO

Code:
Public Sub RoutineEnvoiMailCDO()
On Error Resume Next
Dim cMail As New CDO.Message
If Err Then
   M$ = "CDO n'est pas installé !" & vbLf & _
   "Vous devez cocher(du côté VB) la référence suivante:" & vbLf & _
   "Microsoft CDO for..." & vbLf & _
   "probablement: Microsoft CDO for Windows 2000 Library"
   MsgBox M$, vbCritical, "Erreur référence"
   On Error GoTo 0: Err.Clear
   Exit Sub
End If
'INITIALISATION des variables
Application.ScreenUpdating = False
Dim CheminFichier As String
Dim Sujet As String, Message As String
Dim AdresExpediteur As String, AdresDestinataire As String
'
CheminFichier = "????????????????" '<<<
AdresExpediteur = "??????????????" '<<<
AdresDestinataire = "????????????" '<<<
Sujet = "????????????????????????" '<<<
Message = "??????????????????????" '<<<
'envoi directement NET messagerie
On Error GoTo ErreurNET
With cMail
 .From = AdresExpediteur '<<<<<<<<<<<<<
 .To = AdresDestinataire '<<<<<<<<<<<<<
 .Subject = Sujet '<<<<<<<<<<<<<<<<<<<<
 .TextBody = Message '<<<<<<<<<<<<<<<<<
 .AddAttachment (CheminFichier) '<<<<<<
 .Send
End With
'
On Error GoTo 0: Err.Clear
Application.ScreenUpdating = True
Exit Sub
'--------------------------------
ErreurNET:
Msg$ = "Erreur " & Err.Source & "  No " & Err.Number & vbLf & vbLf & Err.Description
T$ = "Envoi Mail: Problème de connexion !?"
MsgBox Msg$, vbCritical, T$, Err.HelpFile, Err.HelpContext
On Error GoTo 0: Err.Clear
Application.ScreenUpdating = True
End Sub
 

cartus02

XLDnaute Junior
Re : erreur dans macro

bonjour

tout d'abord merci de ton aide :rolleyes:

le fichier que vous m'avez envoyer serai pas mal cependant je ne travail pas avec outlook expresse j'ai outlook.

et lorsque je met ton ode que tu m'as envoyé en dernier ne m'envoi rien dans ma boite de reception outlook?

je te joint mon fichier

merci:eek:
 

Pièces jointes

  • ex.xls
    46 KB · Affichages: 44
  • ex.xls
    46 KB · Affichages: 48
  • ex.xls
    46 KB · Affichages: 45

Roland_M

XLDnaute Barbatruc
Re : erreur dans macro

bonjour

la routine que je t'ai jointe fonctionne très bien puisque je m'en sert !
mais ici elle est incomplète ! tu dois remplir les paramètres !
il te faut la compléter partout ou il y a des ?????

CheminFichier = "????????????????" '<<<
AdresExpediteur = "??????????????" '<<<
AdresDestinataire = "????????????" '<<<
Sujet = "????????????????????????" '<<<
Message = "?????????????????????" '<<<


ensuite vérifier le code que tu as recopié car dans ton classeur
tu as collé des caractères qui vont te causer des erreurs de compilation !
tu as collé ceci ci-dessous
----------------------------------------------------------------------

End Sub__________________ < ici il faut supprimer le tiret
Roland_M < ici ceci il faut supprimer

----------------------------------------------------------------------

apparemment tu n'y connais rien en vb ! ça va pas être facile !
car des routines toutes prêtes ça n'existe pas il faut toujours adapter !
 

Roland_M

XLDnaute Barbatruc
Re : erreur dans macro

bonjour

à savoir, qu'avec cette méthode CDO, le message est envoyé directement !
tu n'auras rien dans outlook !

exemple aussi pour toi compléter le code...
tout d'abord tu peux mettre tes paramètres dans des cellules
EXEMPLE que tu adapteras selon les cellules que tu choisiras !?
ICI dans la feuille no 1 en ligne 1 colonne 1 soit départ A1 puis A2...

CheminFichier = Sheets(1).Range("A1") ' < ici ou se situe la pièce jointe(fichier), s'il y a !?
AdresExpediteur = Sheets(1).Range("A2") ' < exemple Cartus@Site.fr
AdresDestinataire = Sheets(1).Range("A3")' < exemple Dupond@Site.com
Sujet = Sheets(1).Range("A4")
Message = Sheets(1).Range("A5")

'envoi message directement !!!!!! rajouter le test If Trim(CheminFichier)>"" Then

On Error GoTo ErreurNET
With cMail
.From = AdresExpediteur
.To = AdresDestinataire
.Subject = Sujet
.TextBody = Message
If Trim(CheminFichier)>"" Then .AddAttachment (CheminFichier)
.Send ' <<<<< c'est ceci qui envoie !!
End With

----------------------------------------------------------------------------
On peut mettre un message de plusieurs lignes !
j'ai une méthode très simple et efficasse avec cadre texte
mais tu risques d'être perturbé avec tout ça !?
Donc pour faire simple, pour l'instant, tu peux faire comme ceci...
en supposant que le message débute en A5 : ( & VbLf pour retour ligne)


Message = Sheets(1).Range("A5")
Message = Message & VbLf & Sheets(1).Range("A6")
Message = Message & VbLf & Sheets(1).Range("A7")
Message = Message & VbLf & Sheets(1).Range("A8")

si beaucoup de lignes avec une boucle !
Exemple ici 10 lignes débutant en A5 et donc finissant en A14

Message = ""
For Lig = 5 To 14 ' (A5-A14)
Message = Message & Sheets(1).Range("A" & Lig) & VbLf

Next
 
Dernière édition:

Discussions similaires

Réponses
6
Affichages
317
Réponses
10
Affichages
387
Réponses
17
Affichages
472

Statistiques des forums

Discussions
312 691
Messages
2 090 997
Membres
104 723
dernier inscrit
floch