A voir également:
- Selectionner et imprimer des onglets
- Selectionner et imprimer des onglets ✓ - Forum - Excel
- Imprimer plusieurs onglets excel - Forum - Excel
- Imprimer un onglet avec Pdfcreator sur un chemin défini ✓ - Forum - VB / VBA
- Macro Excel: Imprimer tous onglets sauf 1 ✓ - Forum - Excel
- Macro pour imprimer plusieurs onglets excel avec choix ✓ - Forum - Excel
2 réponses
gbinforme
- Messages postés
- 14934
- Date d'inscription
- lundi 18 octobre 2004
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2020
Bonjour,
Je souhaiterais que ma macro selectionne et imprime en pdf tous les onglets qui on le meme nom en colomme B.
En mettant ce code dans un module tu devrais l'obtenir :
Je souhaiterais que ma macro selectionne et imprime en pdf tous les onglets qui on le meme nom en colomme B.
En mettant ce code dans un module tu devrais l'obtenir :
Option Explicit Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String _ , ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Public Sub Macro1() Dim i As Integer, nom As String, cda As Long cda = FindWindow("XLMAIN", Application.Caption) With Sheets("FEUILLE DE GARDE") For i = 2 To 5 If .Range("B" & i).Value = "Steph" Then nom = CStr(.Range("A" & i).Value) If Dir(nom) <> "" Then Kill nom Sheets(nom).ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=nom, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:= _ False, OpenAfterPublish:=False ShellExecute cda, "print", nom & ".pdf", "", "", 1 End If Next i End With End Sub
ThomasJ45
- Messages postés
- 6
- Date d'inscription
- mardi 29 septembre 2015
- Statut
- Membre
- Dernière intervention
- 12 novembre 2015
gbinforme
- Messages postés
- 14934
- Date d'inscription
- lundi 18 octobre 2004
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2020
Bonsoir,
Plusieurs erreurs :
- tu mets en commentaire
- c'est quoi la
- les 2
- tu as ainsi 2 procédures et un seul
C'est sûr que le compilateur n'est pas heureux, heureux à trier tout cela !
Si déjà tu répares cela, le résultat sera sans doute meilleur !
Je comprends bien que tu as voulu adapter, mais il n'y avait rien à rajouter, sinon changer le nom de la macro : bon test.
Plusieurs erreurs :
- tu mets en commentaire
Option Explicitet pourtant cette option t'évites de faire des erreurs de frappes que tu vas chercher pendant des heures ... mais tu as le droit, c'est une option !!!
- c'est quoi la
Sub Macro2()que tu as rajouté en tête ?
- les 2
Private Declare Functiondoivent être en tête du module !
- tu as ainsi 2 procédures et un seul
End Sub
C'est sûr que le compilateur n'est pas heureux, heureux à trier tout cela !
Si déjà tu répares cela, le résultat sera sans doute meilleur !
Je comprends bien que tu as voulu adapter, mais il n'y avait rien à rajouter, sinon changer le nom de la macro : bon test.
ThomasJ45
- Messages postés
- 6
- Date d'inscription
- mardi 29 septembre 2015
- Statut
- Membre
- Dernière intervention
- 12 novembre 2015
- Messages postés
- 14934
- Date d'inscription
- lundi 18 octobre 2004
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2020
Bonjour gbinforme,
Merci beaucoup, cela fonctionne très bien.
Pourrais-tu me donner le code VBA si je veux que tous les onglets qui sont liés à une meme valeur en B s'imprime à la suite et en 1 page PDF.
Merci
Merci beaucoup, cela fonctionne très bien.
Pourrais-tu me donner le code VBA si je veux que tous les onglets qui sont liés à une meme valeur en B s'imprime à la suite et en 1 page PDF.
Merci
gbinforme
- Messages postés
- 14934
- Date d'inscription
- lundi 18 octobre 2004
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2020
- Messages postés
- 6
- Date d'inscription
- mardi 29 septembre 2015
- Statut
- Membre
- Dernière intervention
- 12 novembre 2015
Bonsoir Thomasj45,
Pour imprimer tous les onglets sélectionnés dans le même PDF, il faut modifier le code, comme ceci par exemple :
Tu n'auras qu'un PDF mais avec des pages différentes pour chaque onglet sélectionné.
Pour imprimer tous les onglets sélectionnés dans le même PDF, il faut modifier le code, comme ceci par exemple :
Option Explicit Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String _ , ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Public Sub Imprimer() Dim i As Integer, nom As String, cda As Long, sel(), idx As Integer idx = -1: cda = FindWindow("XLMAIN", Application.Caption) nom = Left(ActiveWorkbook.FullName, InStrRev(ActiveWorkbook.FullName, ".")) & "pdf" With Sheets("FEUILLE DE GARDE") For i = 2 To 5 If .Range("B" & i).Value = "Steph" Then idx = idx + 1: ReDim Preserve sel(idx) sel(UBound(sel)) = CStr(.Range("A" & i).Value) End If Next i Sheets(sel).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=nom, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:= _ False, OpenAfterPublish:=False ShellExecute cda, "print", nom, "", "", 1 End With End Sub
Tu n'auras qu'un PDF mais avec des pages différentes pour chaque onglet sélectionné.
ThomasJ45
- Messages postés
- 6
- Date d'inscription
- mardi 29 septembre 2015
- Statut
- Membre
- Dernière intervention
- 12 novembre 2015
- Messages postés
- 14934
- Date d'inscription
- lundi 18 octobre 2004
- Statut
- Contributeur
- Dernière intervention
- 24 juin 2020
Bonjour gbinforme,
C'est parfait merci beaucoup.
Je n'ai plus qu'à apprendre à bien faire du VBA. au vu des possibilités sa me rendra de grand servir.
Encore merci pour ton aide.
Thomas
C'est parfait merci beaucoup.
Je n'ai plus qu'à apprendre à bien faire du VBA. au vu des possibilités sa me rendra de grand servir.
Encore merci pour ton aide.
Thomas