Bonjour à toutes et à tous,

j'ai deux questions relatives à la macro ci-dessous pour laquelle j'aurais besoin de votre assistance

1) comment éviter le Worksheets("Staff").Activate pour ensuite revenir sur la page principale via Worksheets("Dashboard").Activate.
En effet il s'agit d'une macro permettant d'envoyer des mails avec pièce jointes mais en arrière plan et donc non visible
En effet j'arrive à jongler entre deux feuilles distinctes (T_Reports vs Projects) au début mais pas lors de la boucle
j'ai tenté via un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Set Sp = Worksheets("Staff")
 Set plage = Sp.Range("A1:A" & Range("A" & Rows.Count).End(xlUp).row)
 MsgBox Sp.Cells(ici.row, 4) & " " & Sp.Cells(ici.row, 3)
mais j'ai le droit une erreur d'exécution 1004


2) comment procéder au lieu d'afficher Cells(ici.row, 4) & " " & Cells(ici.row, 3) mettre cela dans un array ( ce sont des noms et prénoms que je peux facilement transformer en mail
Mon objectif étant de pouvoir le récupérer en dehors de la boucle et pouvoir le splitter pour un envoi de mail

merci par avance pour votre aide


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
nomtableau = "T_Reports"
TblBD = Range(nomtableau)
 
  For i = 1 To UBound(TblBD)
 
If TblBD(i, 7) > Now And TblBD(i, 7) <= Now + 56 And TblBD(i, 10) = "Y" Then
Project_ID = TblBD(i, 1)
periodid = TblBD(i, 2)
Acronym_Range = Application.Match(Project_ID, Worksheets("Projects").Range("A:A"), 0)
Acronym = Worksheets("Projects").Cells(Acronym_Range, 3)
 
Worksheets("Staff").Activate
 
Dim plage As Range, valeur1 As Variant, valeur2 As Variant, decalage As Integer
    Set plage = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).row)
    valeur1 = Project_ID
    valeur2 = periodid
    decalage = 7 '(de A à H)
    With plage
        Set ici = .Find(valeur1, LookIn:=xlValues)
        If Not ici Is Nothing Then
            prem = ici.Address
            Do
 
            If ici.Offset(0, decalage) = valeur2 Then MsgBox (Cells(ici.row, 4) & "." & Cells(ici.row, 3))
 
                            Set ici = .FindNext(ici)
            Loop While Not ici Is Nothing And ici.Address <> prem
        End If
    End With
 
End If
Next
Worksheets("Dashboard").Activate