Envoi de mail de relance en fonction d'un statut

Bonjour à tous,

J'essaye de réaliser une macro en VBA afin d'automatiser des relances sur un fichier très basique, mais je suis à ce jour bloqué par beaucoup de détail et je cherche de l'aide. Mon objectif est qu'a l'appuie d'un bouton sur une feuille 2 nommé "Relance fournisseur" cela permette d'envoyer un mail à une adresse qui se trouve dans la feuille 1 " RIB" en fonction du statut de la demande (si Cloturé alors pas de mail, si en attente de réponse envoie d'un mail)

Colonne statut = I, colonne mail = G

24suivi-r-i-b.xlsm (43.65 Ko)

Vous avez accès au morceau de VBA que j'ai commencé à écrire dans le fichier ci-joint.

Dim Debut_Texte As String
Dim Fin_Texte As String
Dim Fin_Ligne_Fichier As Integer
Dim Text_Mail As String
Dim Matricule As String
Dim Debut_Text As String
Dim Fin_Text As String

Sub Relance_fournisseur()

    Sheets("RIB").Select
    Fin_Ligne_Fichier = Application.WorksheetFunction.CountA(Columns(1))
    Debut_Texte = "Bonjour, La société ArianeGroup voudrait vérifier votre RIB afin d'éviter d'éventuelles fraudes."
    Fin_Texte = "Pouvez-vous nous renvoyer  votre RIB par retour de ce mail, en gardant en copie le service comptabilité ?" & _
                "En vous remerciant par avance"

    For id_ligne = 2 To Fin_Ligne_Fichier

        If Range("I" & id_ligne).Text = "Cloturé" Then
            id_ligne = id_ligne + 1
        Else
            Matricule = Range("G" & id_ligne)
            Texte_Mail = Debut_Text & Fin_Text
            Mail Text_Mail, "Relance Vérification RIB", Matricule
        End If
     Next

End Sub

Private Sub Mail(Corps_Mail As String, Sujet As String, Mail As String)
    Dim olApp As Outlook.Application
    Dim olItem As Outlook.MailItem
    Set olApp = CreateObject("Outlook.application")
    Set olItem = olApp.CreateItem(olMailItem)

    With olItem
        If Mail = " " Then
            .to = "ND@"
            .Subject = Sujet
            .BodyFormat = olFormatHTML
            .HTMLBody = Corps_Mail
            .Close (olSave)
        Else
            .to = Mail
            .Subject = Sujet
            .BodyFormat = olFormatHTML
            .HTMLBody = Corps_Mail
            .Save

            On Error GoTo sauve

        Test = True

       End If
sauve:
      If Test = False Then
        .Close (olSave)
        Test = False
        End If

    End With

End Sub

Pourriez vous me venir en aide ?

Merci d'avance :)

Cordialement,

Light

Hello

avant te t'aider ça peut être bien de rendre anonyme le fichier (en cachant les nom des noms des entreprises et les emails)
Egalement sur quel point tu bloques ?

Merci pour l'info. Fait.

Re,

Voici une petite correction, comme j'ai apporté une correction seulement là où ça me semblait flagrant

Re,

J'avoue ne pas voir de fichier dans ta réponse, ni de "correction". Je m'excuse d'avance si je loupe quelques choses mais pourrais tu être plus précis.

Merci d'avance.

Light

Hello

Effectivement

Sub Relance_fournisseur()

    Sheets("RIB").Select
    iRow = [i36000].End(xlUp).Row

    Debut_Texte = "Bonjour, La société ArianeGroup voudrait vérifier votre RIB afin d'éviter d'éventuelles fraudes."
    Fin_Texte = "Pouvez-vous nous renvoyer votre RIB par retour de ce mail, en gardant en copie le service comptabilité ?" _
                & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "En vous remerciant par avance"

    For i = 2 To iRow
        If Range("I" & i).Value <> "Cloturé" Then
            Matricule = Range("G" & i)
            Texte_Mail = Debut_Text & Chr(13) & Chr(10) & Chr(13) & Chr(10) & Fin_Text
            Call Mail(Text_Mail, "Relance Vérification RIB", Matricule)
        End If
     Next

End Sub

Merci pour les infos, mais j'adore comprendre ce que je fais et je ne comprends pas CHR ?

Je suis autodidacte sur le VBA et j'avoue ne pas avoir encore vue cette partie.

Pourrais tu m'éclairer ?

Oui pas de soucis

[i36000].End(xlUp).Row

[i3600] c'est pour sélectionner la cellule I3600, End(xlUp) c'est pour faire le raccourci ctrl+fleche (là c'est vers le haut) et row pour récupérer la ligne
Assez pratique pour récupérer numéro de ligne ou de colonne

Chr(13) & Chr(10)

Chr c'est pour utiliser un caractère spécifique, ici chr(13) & chr(10) c'est pour faire un saut à la ligne dans ton message

Merci pour ton aide et les informations.

Je me retouve avec un erreur lors de la compilation :

OlApp As OutlookApplication- non défini par l'utilisateur

J'avoue ne pas comprendre pourquoi ? Saurez tu m'éclairer ?

J'ai trouvé seul, il suffisait de rajouter dans outils/Préférence la bonne librairie Outlook (Microsoft Office Outlook)

Merci pour ton aide précieuse, je clôture le sujet tout fonctionne

Rechercher des sujets similaires à "envoi mail relance fonction statut"