Selectionner et imprimer des onglets [Résolu/Fermé]

Signaler
-
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
-
Bonjour,

Après avoir regarder certaine des solutions que vous avait écrit je me tourne vers vous car je bloque.
je dois selectionner et imprimer un grand nombre d'onglet en fonction d'un liste.

Colonne A le nom des onglets et colomme B le nom des personnes Liés.

Je souhaiterais que ma macro selectionne et imprime en pdf tous les onglets qui on le meme nom en colomme B.

J'ai essayé avec ce code mais sans réussite.

Macro1 Macro


Dim i As Integer

With Sheets("FEUILLE DE GARDE")
For i = 2 To 5
If .Range("B" & i).Value = Steph Then Sheets(CStr(.Range("A" & i).Value)).PrintOut
Next i

End With
End Sub

Pouvez-vous m'aider ?

Merci d'avance



2 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 292
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 :
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

Messages postés
6
Date d'inscription
mardi 29 septembre 2015
Statut
Membre
Dernière intervention
12 novembre 2015

Bonjour gbinforme,

J'ai mis le code que tu m'as très gentillement donné dans mon fichier mais j'ai une erreur.
Je n'ai pas ton niveau de code, je t'avoue que j'ai mis un bon moment à commencer à comprendre le début du code.

Peux-tu m'aider à résoudre le problème ?

Merci mille fois.

Bonne journée
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 292
Bonsoir,

Plusieurs erreurs :
- tu mets en commentaire
Option Explicit
et 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 Function
doivent ê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.
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
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 292 >
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 :
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é.
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
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 292
Bonsoir Thomasj45,

Merci du retour et bon courage pour te mettre au VBA, qui a beaucoup de possibilités effectivement.