Olmail à différentes personnes en meme temps

en fait je sais les afficher dans le body

 "WP " & WP_array(1, 2) & ": " & WP_array(1, 3) & "<br>" & _
       "WP " & WP_array(2, 2) & ": " & WP_array(2, 3)

mais le soucis c'est que je ne sais pas comment afficher cela automatiquement

j'ai tenté comme ceci mais cela ne récupère que le dernier

For x = 1 To nbr_WP
WP_Body = "WP " & WP_array.Cells(x, 2) & ": " & WP_array.Cells(x, 3)
 ' MsgBox ("WP " & WP_Array.Cells(x, 2))
 Next

J'ai déjà une erreur en début de tentative d'exécution, il ne me semble pas qu'elle existait auparavant !

capture d ecran 207

Qu'il te dise "mailing vide" est normal car cela correspond à la ligne 2.

En fait, ton fichier est mal indenté et il n'est pas facile à comprendre. Mais le end if correspondant à If tblReport(i, 7) > Now And tblReport(i, 7) <= Now + 55 And tblReport(i, 10) = "N" Then est mal placé, il doit se trouver plus bas

merci pour ton retour mais toutefois cela ne fonctionne pas. :(

Tout d'abord il y a un msgbox mailing vide

puis après ca génère un mail que pour le 2ème projet et le 1er est oublié

avec cette correction, je trouve 2 emails, un pour le projet 13 (ligne 3) et un autre pour le projet 14 (ligne 4)

 3             13 
                            Frédéric/Nom1/Acronym/2
                            Rosa/Nom2/Acronym/2
 5             14 
                            Jean/Nom1/Acronym1/2
                            Juliette/Nom2/Acronym1/2

voici le fichier ...

6mail.xlsm (22.51 Ko)

je fais des debug.print au moment du codage,

je remarque que tu n'as pas suivi le conseil, il n'y avait aucun debug.print dans ton fichier, c'est essentiel pour savoir ce qui se passe

j'ai laissé mes derniers pour bien comprendre et j'ai réindenté correctement le code avec plus de lisibilité

en fait je sais les afficher dans le body

 "WP " & WP_array(1, 2) & ": " & WP_array(1, 3) & "<br>" & _
       "WP " & WP_array(2, 2) & ": " & WP_array(2, 3)

mais le soucis c'est que je ne sais pas comment afficher cela automatiquement

j'ai tenté comme ceci mais cela ne récupère que le dernier

For x = 1 To nbr_WP
WP_Body = "WP " & WP_array.Cells(x, 2) & ": " & WP_array.Cells(x, 3)
 ' MsgBox ("WP " & WP_Array.Cells(x, 2))
 Next

de où vient tout ce code ? qui l'a écrit ? ta question est basique au regard d'un code aussi élaboré ...

problème d'indentation dans le dernier paragraphe aussi ! et pour ne pas avoir que le dernier, il faut écrire

For x = 1 To nbr_WP
    WP_Body = WP_Body + __________le nouvel élément_________________
Next

Bonjour Steelson,

Merci à toi pour ces retours nocturnes :)

concernant le fichier adressé je n'ai toujours qu'un seul mail généré et cela concernant le projet 14 le projet 13 ne remontant pas..

En fait, ton fichier est mal indenté et il n'est pas facile à comprendre. Mais le end if correspondant à If tblReport(i, 7) > Now And tblReport(i, 7) <= Now + 55 And tblReport(i, 10) = "N" Then est mal placé, il doit se trouver plus bas

ah ok merci pour cette précision.

ce que je souhaite ici c'st connaitre les dates entre maintenant et +55 pour cet exemple

avec cette correction, je trouve 2 emails, un pour le projet 13 (ligne 3) et un autre pour le projet 14 (ligne 4)

bah justement non pas moi juste le mail du projet 14 pourtant ils ont les mêmes dates donc je ne comprends pas pourquoi de ton coté cela fonctionnerait et pas du mien

je remarque que tu n'as pas suivi le conseil, il n'y avait aucun debug.print dans ton fichier, c'est essentiel pour savoir ce qui se passe

si pour ma période de codage mais je les ai enlever pour plus de lisibilité

merci à toi en tout cas

Moi j'ai bien 2 lignes en désactivant tout ce qui est outlook.

Le (nouveau) soucis (nouveau car auparavant je n'avais bien qu'un seul enregistrement dans debug.print) est bien lié à Outlook.

Il faut créer l'instance Olmail à l'intérieur de la boucle. Essaie ceci :

Sub Grant_Reminders()

Dim spS As Worksheet
Dim spP As Range
Dim la As Range
Dim tblReport() As Variant
Dim project_ID As Variant
Dim period_ID As Variant
Dim acronym_Row As Variant
Dim acronym As Variant
Dim prem As String
Dim i As Long, j As Long
Dim n As Long

Dim destinataires As String, result, destination, fichier, staff
Dim mailing()

Const decalage As Integer = 7             '(de A à H)
Const tableName$ = "T_Reports"
Dim nb_persons As Integer

Dim Ol As New Outlook.Application
Dim Olmail As MailItem
Set Ol = New Outlook.Application
Dim CurrFile As String

    tblReport = Worksheets("Reporting").Range("A1").CurrentRegion.Value

    For i = 2 To UBound(tblReport) ' on ne prend pas les en-têtes
        If tblReport(i, 7) > Now And tblReport(i, 7) <= Now + 55 And tblReport(i, 10) = "N" Then

            n = 0
            project_ID = tblReport(i, 1)
            period_ID = tblReport(i, 2)
            acronym_Row = Application.Match(project_ID, Worksheets("Projects").Range("A:A"), 0)
            If Not IsError(acronym_Row) Then
                acronym = Worksheets("Projects").Cells(acronym_Row, 3).Value
                Set spS = ThisWorkbook.Worksheets("Staff")
                Set spP = spS.Range("A1:A" & spS.Range("A" & Rows.Count).End(xlUp).Row)
                With spP
                    Set la = .Find(project_ID, LookIn:=xlValues)
                    If Not la Is Nothing Then
                        prem = la.Address
                        Do
                            If la.Offset(0, decalage) = period_ID Then
                                n = n + 1
                                ReDim Preserve mailing(1 To n)     'Redimentionnement du tableau (ne pas typer)
                                mailing(n) = spS.Cells(la.Row, 4).Value & "/" & spS.Cells(la.Row, 3).Value & "/" & acronym & "/" & period_ID
                            End If
                            Set la = .FindNext(la)
                        Loop While la.Address <> prem
                    End If
                End With
            End If

            If n = 0 Then
                MsgBox "mailing est vide"
            Else

                Set Olmail = Ol.CreateItem(olMailItem)

                destinataires = ""
                For j = 1 To UBound(mailing)
                    result = Split(mailing(j), "/")
                    destinataires = destinataires & result(0) & "." & result(1) & "@mail.fr;"
                    staff = staff & "- " & result(0) & " " & result(1) & "<br>"
                Next

               With Olmail
                   .To = destinataires
                   .Subject = "Grant Office Reminders"
                   .Body = "Projet: " & result(2) & vbCrLf & vbCrLf & "Fin de période: " & fin_periode & vbCrLf & vbCrLf & "Période concernée: " & result(3) & vbCrLf & vbCrLf & "Ceci est un mail automatique de mon fichier de suivi."
Debug.Print i, project_ID
                    For j = 1 To UBound(mailing)
                        result = Split(mailing(j), "/")
                        destination = ThisWorkbook.Path & "\Projects_Library\" & result(2) & "-" & project_ID & "\Reporting\"
                        fichier = "FH (" & result(2) & ")-P" & result(3) & "-" & result(0) & " " & result(1) & " (PP)-vierge.xlsm"
                        .Attachments.Add (destination & fichier)
Debug.Print "", "", mailing(j)
                    Next
                   .DeleteAfterSubmit = True

                   .Display
               End With

            End If

        End If
    Next i

End Sub

Oui bien vu :)

merci a toi pour ce soutien sans faille et exemplaire!

Désolé mais il y a cependant encore un soucis avec staff

en effet quand j'affiche staff dans le body du mail y compris dans le fichier test cela:

1) fonctionne correctement pour le premier mail projet 13 (avec staff ok et pièces jointes ok)

2) pour le deuxième mail (projet 14) (le staff est compose du staff du projet 13 + celui du 14 meme si piece jointe ok

4mail.xlsm (23.39 Ko)

une idée du pourquoi svp?

parce qu'il n'est pas initialisé

correction, ajoute staff à côté de destinataires

                destinataires = "": staff = ""
                For j = 1 To UBound(mailing)
                    result = Split(mailing(j), "/")
                    destinataires = destinataires & result(0) & "." & result(1) & "@mail.fr;"
                    staff = staff & "- " & result(0) & " " & result(1) & "<br>"
                Next

et bah décidément j'en apprend des choses avec toi.

merci

Rechercher des sujets similaires à "olmail differentes personnes meme temps"