XL 2019 vba : copier en valeur un onglet avant envoi par mail

  • Initiateur de la discussion Initiateur de la discussion douguy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

douguy

XLDnaute Junior
bonjour le forum

Je bute sur un problème de copie valeur
je veux envoyer un onglet par mail avec VBA
L'onglet en question a des formules que je souhaite remplacer par la valeur avant envoi
Le code marche super sauf qu'il reprend les formules puisqu'il ne fait pas le coller pastespecial xlvalue
comment indiqué ce collage spécial?

MErci pour votre aide

le code utilisé est le suivant

VB:
Sub EnvoiMailavecPJ()
 
    Dim chemin As String, fichier As String
 
    chemin = ThisWorkbook.Path
    fichier = chemin & "\" & "fichier" & Range("A3") & ".xls"
 
    ThisWorkbook.Sheets("base").Copy
    ActiveWorkbook.SaveAs Filename:=fichier
 
    Dim MonOutlook As Object
    Dim MonMessage As Object
 
    Set MonOutlook = CreateObject("Outlook.Application")
    Set MonMessage = MonOutlook.CreateItem(0)
 
        MonMessage.To = "xxxxx@yyyy.fr"
        MonMessage.Subject = "pppp"
        MonMessage.body = "Bonjour," & _
                    Chr(13) & Chr(13) & "Veuillez trouver, ci-joint, fichier pppp ." & _
                    Chr(13) & Chr(13) & "Bonne réception."
 
        MonMessage.Attachments.Add ActiveWorkbook.FullName
        MonMessage.display
 
    ActiveWorkbook.Close
 
    Set MonOutlook = Nothing
 
End Sub
 
Dernière édition:
Bonjour Douguy

Merci d'éditer votre post et de mettre le code entre balises SVP 🙄

Sinon, voici comment on peut faire
VB:
ThisWorkbook.Sheets("base").Copy
With ActiveWorkbook
  With .Sheets(1)
    .Cells.Copy
    .Cells.PasteSpecial Paste:=xlPasteValues
  End With
  .SaveAs Filename:=Fichier
End With

A+
 
Re

Une autre syntaxe possible
(test OK sur mon PC- le classeur contenant le code VBA doit être enregistré au préalable)
VB:
Sub copievaleursseules()
ThisWorkbook.Sheets("base").Copy
ActiveSheet.UsedRange = ActiveSheet.UsedRange.Value
With Workbooks(ActiveSheet.Parent.Name)
    .SaveAs ThisWorkbook.Path & "\test1.xlsx", 51
    .Close 0
End With
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
714
Réponses
7
Affichages
718
Retour