XL 2013 VBA-Envoyer par email "Plage de cellules collée dans un nouveau classeur en gardant formules de certaines cellules

MONTREAL2020

XLDnaute Junior
Bonjour,

Un petit caprice d'un profane en VBA :cool:

J'ai trouvé ce code que j'utilise et qui fonctionne parfaitement bien et me permet d'envoyer une plage de cellules d'un fichier original coller dans un nouveau classeur. Le fichier (classeur) est une copie en valeurs de ma plage.

Serait-il possible de garder juste une colonne avec les formules, la colonne en question contient une Somme des cellules ( Ex. Cellule T74 contient la somme de E1:S1)

Merci à vous



********************************************************************************************************************
Option Explicit

'Ne pas oublier :
'de cocher la référence Microsoft Outlook xx.0 object library dans l'éditeur VBE (outil>références)



Sub EnvoiMailFeuilleActive_Watch_List()
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String




With Application
.ScreenUpdating = False
.EnableEvents = False
End With

Set Sourcewb = ActiveWorkbook

'Copy the sheet to a new workbook
ActiveSheet.Copy
Set Destwb = ActiveWorkbook

'Determine the Excel version and file extension/format
With Destwb
If Val(Application.Version) < 12 Then
'You use Excel 97-2003
FileExtStr = ".xls": FileFormatNum = -4143



Else
'You use Excel 2007-2010, we exit the sub when your answer is
'NO in the security dialog that you only see when you copy
'an sheet from a xlsm file with macro's disabled.
If Sourcewb.Name = .Name Then
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
MsgBox "Your answer is NO in the security dialog"
Exit Sub
Else
Select Case Sourcewb.FileFormat
Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
Case 52:
If .HasVBProject Then
FileExtStr = ".xlsm": FileFormatNum = 52
Else
FileExtStr = ".xlsx": FileFormatNum = 51
End If
Case 56: FileExtStr = ".xls": FileFormatNum = 56
Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
End Select
End If
End If
End With




'Change all cells in the worksheet to values if you want
With Destwb.Sheets(1).UsedRange
.Cells.Copy
.Cells.PasteSpecial xlPasteValues
.Cells(1).Select
End With
Application.CutCopyMode = False

Range("A1:A70").EntireRow.Delete
'Columns("A:E").Delete



'Save the new workbook/Mail it/Delete it
TempFilePath = Environ$("temp") & "\"
TempFileName = "Liste à surveiller - Watch_List " & " " _
& Format(Now + 1, "dd-mm-yyyy ")

With Destwb
.SaveAs TempFilePath & TempFileName & FileExtStr, _
FileFormat:=FileFormatNum
.Close Savechanges:=False
End With
Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem
Set OLApplication = CreateObject("Outlook.Application")
Set OLMail = OLApplication.CreateItem(OLMailItem)
With OLMail

.To = "..com" ' Destinataire à préciser
.CC = "" ' MailCC ' Copie"
.BCC = "...com"
.Importance = olImportanceNormal
.Subject = "Liste à surveiller " & " " _
& Format(Now + 1, "dd-mm-yyyy ") ' Sujet
.body = "Fichier en PJ" ' Message
.Attachments.Add (TempFilePath & TempFileName & FileExtStr) ' Pièce jointe
.Categories = "Daily"
'.OriginatorDeliveryReportRequested = True ' Accusé de dépôt
'.ReadReceiptRequested = True ' Accusé de lecture
.Send '<<<<<<<<<<<<<<<Pour envoyer directement
'.Display '<<<<<<<<<<<<<Pour voir le mail avant envoi
End With



'Delete the file you have send
Kill TempFilePath & TempFileName & FileExtStr

With Application
.ScreenUpdating = True
.EnableEvents = True
End With

Set OLApplication = Nothing
Set OLMail = Nothing




End Sub


**********************************************************************************************************************
 

Deadpool_CC

XLDnaute Accro
Bonjour,

.Cells.PasteSpecial xlPasteValues
Vous coller uniquement les valeurs
Donc si vous voulez remettre les formules dans la nouvelle feuille il va falloir après avoir Coller, allez remettre les formules dans les cellules concernées ... par exemple positionné vous sur la nouvelle feuille et ensuite forcer les formule des cellules concernées

Sheets("NouvelleFeuil").Activate
Range("T74").formula = "=somme("$E$1:$S$1)"

Sinon, copier tout en valeur, puis ensuite faite des copier coller "normaux" des cellules ou vous souhaitez conserver les formule ...

bref cela dépend de votre fichier et du résultat attendu.

ps. : un fichier exemple aurait facilité la réponse, voir vous auriez eu une réponse sur mesure.

A+
 

MONTREAL2020

XLDnaute Junior
Bonjour è tous,

Merci pour vos suggestions, mais elles ne répondent pas è mon besoin malheureusement.

Mon classeur s'envoie directement vers le destinataire, donc je ne veux pas l'ouvrir.
la macro que j'ai, crée le classeur et lui donne un nom et copie/colle en valeurs le tableau (plage de cellules)
Ce que je veux c'est de garder les formule sur ma dernière colonne qui représente le total (somme)

MERCI

CODECond L.PORLANDOMASSACHUSSETCALGARYHALIFAXOTTAWATotal
POS901022100612"250
NAT1010121003241110
NAT241003100123"510161078
NAT241001100111"520201098
POS901288100114x6729
POS9010211001201563
NAT901003100218472
NAT201043100120x454GR118
NAT201026100840"31010138
POS1210011004113101839
POS111001100110KG45520109
NAT211006100515"1530165193
NAT22101510021210
NAT1010011004242231362
NAT18101210024KG520831888
NAT121007100224111212
POS90100610018x454GR301040318
 

Discussions similaires

Statistiques des forums

Discussions
312 079
Messages
2 085 131
Membres
102 789
dernier inscrit
raoul6768