Bonjour à tous,
J'utilise un code VBA qui me convient bien mais j'aimerai l’optimiser pour gagner en rapidité et y rajouter un élément.
Sub Bouton_unique_DI()
'Archivage du formulaire vers l'onglet "Sauvegarde des DI"
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim OutApp As Object
Dim OutMail As Object
Dim S As Shape
Dim sNomFic As String, sRep As String, WshShell As Object
i = 5
Do While Sheets("Sauvegarde_DI").Range("D" & i).Value <> ""
i = i + 1
Loop
With Sheets("Demande_d'Intervention")
.Range("J17").Copy
Sheets("Sauvegarde_DI").Range("E" & i).PasteSpecial Paste:=xlPasteValues
.Range("J19").Copy
Sheets("Sauvegarde_DI").Range("D" & i).PasteSpecial Paste:=xlPasteValues
.Range("J21").Copy
Sheets("Sauvegarde_DI").Range("I" & i).PasteSpecial Paste:=xlPasteValues
.Range("I24").Copy
Sheets("Sauvegarde_DI").Range("F" & i).PasteSpecial Paste:=xlPasteValues
.Range("M24").Copy
Sheets("Sauvegarde_DI").Range("G" & i).PasteSpecial Paste:=xlPasteValues
.Range("G27").Copy
Sheets("Sauvegarde_DI").Range("H" & i).PasteSpecial Paste:=xlPasteValues
.Range("L45").Copy
Sheets("Sauvegarde_DI").Range("M" & i).PasteSpecial Paste:=xlPasteValues
.Range("I45").Copy
Sheets("Sauvegarde_DI").Range("K" & i).PasteSpecial Paste:=xlPasteValues
.Range("I47").Copy
Sheets("Sauvegarde_DI").Range("L" & i).PasteSpecial Paste:=xlPasteValues
.Range("M49").Copy
Sheets("Sauvegarde_DI").Range("J" & i).PasteSpecial Paste:=xlPasteValues
Sheets("Demande_d'Intervention").Select
End With
' Créer une instance Windows Script pour retrouver le chemin du bureau
Set WshShell = CreateObject("WScript.Shell")
sRep = WshShell.SpecialFolders("Desktop")
Set WshShell = Nothing
' Définit le nom du fichier à enregistrer
sNomFic = "Demande d'intervention.pdf"
' Enregistrer la feuille en PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sRep & "\" & sNomFic, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Set OutApp = CreateObject("outlook.application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = ""
.Cc = ""
.Attachments.Add (sRep & "\" & sNomFic)
.Subject = "Demande d'intervention - "
.Body = "Bonjour" & Chr(13) & Chr(13) & "Ci-joint, la demande d'intervention au format PDF."
.Display
End With
Kill (sRep & "\" & sNomFic)
'Bouton permattant d'effacer les cellules demandées
Range("J17:L17,J19:K19,J21,G27:N41,L45:M45,I47:K47").ClearContents
ActiveWorkbook.Save
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
J'ai besoin de rajouter dans l'objet du mail le chiffre noté en cellule J19 de la feuille "Demande_d'Intervention" et de-même lors de l'enregistrement en PDF.
Merci de votre aide :)