Exporter plusieurs onglet excel dans un nouveau fichier

Résolu/Fermé
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 - Modifié par Villette54 le 31/07/2013 à 16:23
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 - 11 août 2013 à 23:11
Bonjour,

Je suis débutant en VBA, et j'utilise actuellement une macro qui me permet d'exporter 1 onglet de mon fichier Excel en PDF (afin de me servir de ce pdf comme pièce jointe à un mail)

Cependant je souhaiterais modifier cela pour exporter non plus un seul mais 2 onglets (d'un fichier qui en comporte une dizaine) en format xlsx et non plus PDF.

Ci-joint un extrait de mon code actuel

 Dim pj as String
pj = ActiveWorkbook.Path & "\" & Sheets("Infos").[L15].Value & ".pdf"

Sheets("Facture").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
pj, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


Merci d'avance pour votre aide
A voir également:

1 réponse

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
1 août 2013 à 09:18
bonjour,

c'est simple tu copies, tu colles et tu modifies ce dont tu as besoin :

Dim pj as String
pj = ActiveWorkbook.Path & "\" & Sheets("Infos").[L15].Value & ".pdf"

Sheets("Facture").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
pj, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


pj = ActiveWorkbook.Path & "\" & Sheets("infos").[L15].Value & ".pdf" 'remplaces Infos, par le nom du pdf correct

'remplaces "Factures" par la feuille excel que tu veux exporter.
Sheets("Facture").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
pj, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
2 août 2013 à 13:38
Bonjour Mélanie,

Merci de ta réponse, mais je ne comprends pas très bien ce que tu veux dire ?

Mon objectif est d'exporter 2 ou 3 onglets d'un fichier Excel qui en comporte une dizaine, non plus en PDF mais vers un nouveau fichier Excel.

En espérant être clair, merci d'avance
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
Modifié par melanie1324 le 2/08/2013 à 14:47
tu veux exporter dans un novueau classeur ou tu veux dans un classeur existant?
Quels sont les onglets que tu veux exporter?
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
2 août 2013 à 14:50
Un bout de solution, pour copier une feuille d'un classeur à l'autre. Les 2 classeurs sont ouverts dans Excel.


Code :

Sub test()
Dim objWbk As Workbook
Dim objSht1 As Worksheet, objSht2 As Worksheet

' Selection de la feuille source du classeur actif par son nom.
' (feuille à copier)
Set objSht1 = ThisWorkbook.Worksheets("Data1" )

' Classeur destination
Set objWbk = Application.Workbooks("Classeur2.xls" )

' Feuille destination
Set objSht2 = objWbk.Worksheets("Data2" )

' Copie de la feuille.
objSht1.Copy before:=objSht2

End Sub
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
Modifié par Villette54 le 5/08/2013 à 08:34
Bonjour,

Enfaîte je me rend compte que je ne t'ai pas donné toutes les infos

J'ai un fichier Excel de 10 onglets qui comporte de très nombreuses informations liées à mes tarifs fournisseurs, clients, listing des produits, ect.
Sur l'un des onglets j'ai plusieurs boutons qui activent des macros avec pour but d'envoyer certaines parties des informations à certains collaborateurs en fonction de quantité que j'encode. (Ex. l'un est concerné uniquement par les prix clients / qté, l'autre par les prix fournisseurs / qté et le dernier uniquement par les quantités par produit)
Je ne souhaite donc pas envoyé tous le fichier à chacun d'entre eux.
J'aimerais donc créer un fichier Excel temporaire qui ne reprend que 2 ou 3 onglets (différent en fonction du destinataire du mail), mettre ce fichier en pièce jointe et le supprimer une fois le mail envoyé.
Actuellement ma macro est opérationnelle mais elle n'envoie qu'un seul onglet, au format PDF (hors mes collaborateurs ne peuvent utiliser ce type de fichier pour leurs opérations) c'est pourquoi je souhaite maintenant exporter en Excel et plusieurs onglets.

Ci-joint ma macro actuelle :
Sub Button5_Click()

If MsgBox("Êtes-vous sûr de vouloir envoyer ce mail ?", vbQuestion + vbYesNo, "Confirmation") = vbYes Then
 
Application.DisplayAlerts = False
 
Dim ObjOutlook
Dim oBjMail
Dim pj As String
Dim Corps As String

' Je pense qu'il faut changer cette partie du code
pj = ActiveWorkbook.Path & "\" & Sheets("Infos").[L15].Value & ".pdf"
Sheets("Facture").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
pj, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
' Jusqu'ici

Set ObjOutlook = CreateObject("outlook.application")
Set oBjMail = ObjOutlook.CreateItem(olMailItem)

If pj = "Faux" Then Exit Sub
If VarType(pj) = vbBoolean Then Exit Sub

Corps = "Bonjour," & vbCrLf & "<br>" _
    & vbCrLf & "<br>" _
    & "En pièce jointe le détail" & vbCrLf & "<br>" _
    & vbCrLf & "<br>" _
    & "Bien à vous,"

With oBjMail
.To = "...@..."
.CC = "...@..."
'.Bcc =
.Subject = "Détail Enlèvement"
.Attachments.Add pj
.HTMLBody = ""
.BodyFormat = 2
.HTMLBody = Corps & oBjMail.HTMLBody
'.Display
.Send
End With

Kill pj
Application.DisplayAlerts = True
MsgBox "Le mail a bien été envoyé !"
 Else: MsgBox "Envoi annulé !"
End If
End Sub
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
11 août 2013 à 23:11
Bonjour à tous,

Je suis toujours dans le besoin je me permet donc de relancer.

Merci d'avance
0