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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| Sub Alerte()
Dim I As Long, nbLignes As Long, LigneDest As Long
Dim Sh As Worksheet
Dim NomTableau As String
Sheets("Envoi").Cells.Clear
For Each Sh In Worksheets
If Sh.Name <> "Envoi" Then
Sh.Activate
nbLignes = Sh.Cells(Rows.Count, "A").End(xlUp).Row
NomTableau = GetNomTableau(Sh)
LigneDest = Sheets("Envoi").Cells(Rows.Count, "A").End(xlUp).Row + 2
Sh.ListObjects(NomTableau).Range.AutoFilter Field:=7, Criteria1:="<>"
Range("A1:G" & nbLignes).SpecialCells(xlCellTypeVisible).Copy
Sheets("Envoi").Range("A" & LigneDest).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("Envoi").Range("A" & LigneDest).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End If
Next
Sheets("Envoi").Columns.AutoFit
Envoyer
End Sub
Function GetNomTableau(Sh As Worksheet) As String
Dim Tablo As ListObject
For Each Tablo In Sh.ListObjects
GetNomTableau = Tablo
Exit Function
Next
End Function
Sub Envoyer()
Dim OL As Object
Dim MailItem As Object
Sheets("Envoi").Copy
ActiveWorkbook.SaveAs "C:\Commandes.xlsx"
ActiveWorkbook.Close False
Set OL = CreateObject("Outlook.Application")
Set MailItem = OL.CreateItem(0)
With MailItem
.Display 'permet d'afficher la signature, le cas échéant
.To = "Nom@FAI.com" 'Mettre l'adresse à qui envoyer
.CC = "" 'au cas où
.BCC = "" 'au cas où
.Subject = "Commandes à effectuer"
.htmlbody = "Ci-joint les commandes à effectuer" & .htmlbody
.attachments.Add "C:\Commandes.xlsx"
' .Send 'pour envoyer directement sans manipulation
.Display 'pour afficher le message avant de l'envoyer manuellement
End With
Kill "C:\Commandes.xlsx" 'Supprime le fichier créé
Set OL = Nothing
Set MailItem = Nothing
End Sub |
Partager