Erreur su VBA de mails

Bonjour

J'ai construit cette macro pour envoyer des mails.

Sub MailAG()

'

' MailAG Macro

'

Dim Rep As Integer

With Sheets("Effectif") ' 'indiquer la feuille

dl = .Cells(Rows.Count, "AH").End(xlUp).Row

Set ol = CreateObject("Outlook.Application")

For i = 1 To dl

If .Cells(i, "V") = "Oui" Then 'envoyer un mail ?

If .Cells(i, "W") = "" Then 'si déjà fait, la date s'affiche

Set olm = ol.CreateItem(0)

With olm

.To = .Cells(i, "R") 'erreur ici

.CC = "monmail@gmail.com"

.Subject = "Documents de " & Sheets("Effectif").Cells(i, "C")

.body = "Bonjour," & vbCrLf & vbCrLf & "dans le cadre de l'accompagnement de " & Sheets("Effectif").Cells(i, "C") & " merci de nous faire parvenir sa CMU et son RIB." & vbCrLf & vbCrLf & "Cordialement"

.Display

.Send

End With

.Cells(i, "V") = "Fait" 'remplace oui par fait

.Cells(i, "W") = Format(Now, "dd.m.yyyy") 'indique la date

Rep = MsgBox("Message envoyé à " & Cells(i, "Q").Value & " pour " & Cells(i, "C").Value, vbOKCancel) 'affiche le message des envois réalisés

If Rep = vbCancel Then Exit Sub

Else

End If

End If

Next i

End With

End Sub

'

Si l'adresse est fixe, pas de problème, mais impossible de sélectionner le mail dans la colonne R. Comment faire ?

Bonjour

faire un essai en mettant .value

.To = .Cells(i, "R").value

Fred

Merci Fred.

Sais tu comment faire pour que dans le corps du message, le mot CMU apparaisse si dans la colonne X est indiqué non et RIB si dans la colonne AC est indiqué non ?

peut-être quelque chose comme :

 texte = "Bonjour," & vbCrLf & vbCrLf & "dans le cadre de l'accompagnement de " & Sheets("Effectif").Cells(i, "C") & " merci de nous faire parvenir "

If Cells(i, "X") = "non" And Cells(i, "AC") = "non" Then
texte = texte & " sa CMU et son RIB."
ElseIf Cells(i, "X") = "non" Then
    texte = texte & " sa CMU."
ElseIf Cells(i, "AC") = "non" Then
    texte = texte & " son RIB."
End If

 texte = texte & vbCrLf & vbCrLf & "Cordialement" 

et donc remplacer

 .body = "Bonjour," & vbCrLf & vbCrLf & "dans le cadre de l'accompagnement de " & Sheets("Effectif").Cells(i, "C") & " merci de nous faire parvenir sa CMU et son RIB." & vbCrLf & vbCrLf & "Cordialement"

par

 .body = texte

Fred

Encore merci, grâce à vous j'ai bouclé le principal

J'ai répondu trop vite, les CMU et RIB n'apparaissent pas.

Fais un fichier test avec 3 lignes représentant les 3 cas possibles et supprimant les données confidentielle évidemment...

et poste le ici

Fred

Voila :

et bah la réponse est assez simple en fait...

dans ta question que je rappel tu avait dit ceci :

Sais tu comment faire pour que dans le corps du message, le mot CMU apparaisse si dans la colonne X est indiqué non et RIB si dans la colonne AC est indiqué non

et dans ton fichier tu as :

capture

donc il faut savoir que non et Non c'est pas la même chose en informatique....

donc voici le code corrigé :

'ceci en dehors de ta boucle 
Set sh = Sheets("Effectif")
With sh

 For i = 1 To 10 'ici mettre ta boucle pas celle ci qui était pour test
  texte = "Bonjour," & vbCrLf & vbCrLf & "dans le cadre de l'accompagnement de " & .Cells(i, "C") & " merci de nous faire parvenir "

If LCase(.Cells(i, "X")) = "non" And LCase(.Cells(i, "AC")) = "non" Then
texte = texte & "sa CMU et son RIB."
ElseIf LCase(.Cells(i, "X")) = "non" Then
    texte = texte & "sa CMU."
ElseIf LCase(.Cells(i, "AC")) = "non" Then
    texte = texte & "son RIB."
End If

 texte = texte & vbCrLf & vbCrLf & "Cordialement"
'Debug.Print texte
 Next i
End With

Ainsi ?

Sub MailAG()

'

' MailAG Macro

'

Dim Rep As Integer

Set sh = Sheets("Effectif")

With sh 'indiquer la feuille

dl = .Cells(Rows.Count, "AC").End(xlUp).Row

Set ol = CreateObject("Outlook.Application")

For i = 1 To dl

If .Cells(i, "P") <> "IEF" Then

If .Cells(i, "V") = "Oui" Then 'envoyer un mail ?

If .Cells(i, "W") = "" Then 'si déjà fait, la date s'affiche

Set olm = ol.CreateItem(0)

With olm

.To = "harold.letessier@abriasso.org" 'liste des mails

.Subject = "Documents de " & Sheets("Effectif").Cells(i, "C") 'titre du mail

.body = texte

For i = 1 To 10 'ici mettre ta boucle pas celle ci qui était pour test

texte = "Bonjour," & vbCrLf & vbCrLf & "dans le cadre de l'accompagnement de " & .Cells(i, "C") & " merci de nous faire parvenir "

If LCase(.Cells(i, "X")) = "non" And LCase(.Cells(i, "AC")) = "non" Then

texte = texte & "sa CMU et son RIB."

ElseIf LCase(.Cells(i, "X")) = "non" Then

texte = texte & "sa CMU."

ElseIf LCase(.Cells(i, "AC")) = "non" Then

texte = texte & "son RIB."

End If

texte = texte & vbCrLf & vbCrLf & "Cordialement"

'Debug.Print texte

Next i

End With

.Send

End With

.Cells(i, "V") = "Fait" 'remplace oui par fait

.Cells(i, "W") = Format(Now, "dd.m.yyyy") 'indique la date

Rep = MsgBox("Message envoyé à " & Cells(i, "Q").Value & " pour " & Cells(i, "C").Value, vbOKCancel) 'affiche le message des envois réalisés

If Rep = vbCancel Then Exit Sub

Else

End If

End If

End If

Next i

End With

End Sub

'

Non.. pas tout à fait...

Je suis sur mon téléphone je te dirais demain.. mais supprime le mail que tu as mis en Claire dans le code du dernier post

Fred

Ok merci de ton aide. Je remballe aussi pour ce soir, fin de service.

Par contre l'adresse mail par recherche en colonne R indique une erreur 438

Bonjour

normalement plus comme ceci :

Sub MailAG()
'
' MailAG Macro
'
Dim sh
Dim olm
Dim ol
Dim Rep As Integer
Dim i As Integer
Dim dl As Integer

Set sh = Sheets("Effectif")
With sh 'indiquer la feuille
    dl = .Cells(Rows.Count, "AC").End(xlUp).Row
    Set ol = CreateObject("Outlook.Application")
    For i = 1 To dl
        texte = "Bonjour," & vbCrLf & vbCrLf & "dans le cadre de l'accompagnement de " & .Cells(i, "C") & " merci de nous faire parvenir "

        If LCase(.Cells(i, "X")) = "non" And LCase(.Cells(i, "AC")) = "non" Then
            texte = texte & "sa CMU et son RIB."
        ElseIf LCase(.Cells(i, "X")) = "non" Then
            texte = texte & "sa CMU."
        ElseIf LCase(.Cells(i, "AC")) = "non" Then
            texte = texte & "son RIB."
        End If
        texte = texte & vbCrLf & vbCrLf & "Cordialement"
        If .Cells(i, "P") <> "IEF" Then
            If .Cells(i, "V") = "Oui" Then 'envoyer un mail ?
                If .Cells(i, "W") = "" Then 'si déjà fait, la date s'affiche
                    Set olm = ol.CreateItem(0)
                    With olm
                        .To = "XXXXXX@XXX.fr" 'liste des mails
                        .Subject = "Documents de " & Sheets("Effectif").Cells(i, "C") 'titre du mail
                        .body = texte
                        .display '.Send
                    End With
                    .Cells(i, "V") = "Fait" 'remplace oui par fait
                    .Cells(i, "W") = Format(Now, "dd.m.yyyy") 'indique la date

                    Rep = MsgBox("Message envoyé à " & Cells(i, "Q").Value & " pour " & Cells(i, "C").Value, vbOKCancel) 'affiche le message des envois réalisés
                    If Rep = vbCancel Then Exit Sub
                End If
            End If
        End If

    Next i
End With
End Sub

Penses a déclarer tes variables...

Fred

Merci beaucoup de ton aide.

J'ai modifié .To =... par .To = Sheets("Effectif").Cells(I, "R") et cela fonctionne

Bonjour

tu peux aussi mettre :

To = .Cells(i, "R").value

comme la question initiale de ce post...

Fred

cela ne fonctionnait pas

Rechercher des sujets similaires à "erreur vba mails"