Impression PDF

rafi1875

XLDnaute Nouveau
Bonjour, je suis tout nouveau sur le forum et j'admire le travail et l'entraide sur celui-ci.

Je suis un débutant en VBA et je vous avoue que je coince sur une nouvelle macro.

J'aimerais pouvoir imprimer en PDF depuis excel via une macro, plusieurs fois une même page mais en changeant la référence de la première valeur en haut à gauche.

J'ai mis sur une autre feuille, sur une colonne, tout les références.

J'ai mis une condition pour ne pas sortir les factures en dessous d'un montant défini, "Amount", inférieur à 10€ dans ce cas précis. Le problème est que le msgbox apparaît trois fois et je dois cliquer trois fois pour le fermer...

Voici le code mais pour l'instant j'arrive à imprimer qu'une page.


Dim MonRepertoire As String 'Créer folder de l'année en cours
Dim RepertoireAnnuel As String 'Créer folder dans l'année en cours pour le trimestre en cours

MonRepertoire = "G:\D - ABC\Clientele\B - Facturation\FRAIS\" & ThisWorkbook.Sheets("FACTURE").Range("C2").Value 'Ceci créé le folder de l'année en cours

RepertoireAnnuel = "G:\D - ABC\Clientele\B - Facturation\FRAIS\" & ThisWorkbook.Sheets("FACTURE").Range("C2").Value & "\" & _
ThisWorkbook.Sheets("FACTURE").Range("C1").Value 'Ceci créé le folder du trimestre en cours

On Error Resume Next
MkDir MonRepertoire
MkDir RepertoireAnnuel

End Sub

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub ExportFullPDF()
Call Répertoire

Dim fName As Variant
Dim Nom$
Dim Year$
Dim Amount As Variant
Dim Cellule As Variant



For Each Cellule In ThisWorkbook.Sheets("TOTAL").Range("A2:A4")
Cellule = Cellule.Value

Nom = "FACTURE" & ThisWorkbook.Sheets("FACTURE").Range("C1").Value & " - " & ThisWorkbook.Sheets("FACTURE").Range("C13").Value 'Définit le nom de la facture
Amount = ThisWorkbook.Sheets("FACTURE").Range("I29").Value ' condition pour imprimer les factures au dessus du montant de 10€, en cellule I29.

If Amount <= 10 Then
MsgBox "Montant inférieur à la limite d'envoi..."

End If


If Amount > 10 Then

fName = Nom & ".pdf"

End If


If fName <> False Then

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

End If


Next


End Sub


Merci d'avance pour votre aide et je reste à votre disposition pour toutes informations complémentaires.

Rafaël
 
Solution
VB:
Const DossierRacine = "G:\D - ABC\Clientele\B - Facturation\FRAIS"

Sub ExportFullPDF()
Dim Valeur As Variant
    
    With Worksheets("Facture")
        .Activate
        For Each Valeur In WorksheetFunction.Transpose(Range([A2].Validation.Formula1))
            If Valeur <> vbNullString Then
                [A2] = Valeur
                If Val([I29]) > 10 Then
                    Fname = RepertoireAnnuel & "\" & "FACTURE " & [A2] & " " & [C1] & " - " & [C13] & ".pdf"
                    Debug.Print [A2], Fname
                    .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fname
                End If
            End If
        Next
    End With

End Sub
Function RepertoireAnnuel() As String 'Créer folder dans l'année en cours pour le...

rafi1875

XLDnaute Nouveau
Salut,

Mettre un mot de passe sur un ficher Excel, c'est faire l'autruche .
Sur un ficher Pdf également .
On trouve de nombreux moyens et pas très compliqués pour craquer de tels fichiers.

Il faut dire à votre Boss que la seule façon de sécuriser un document,
c'est de ne le transmettre à personne :

Stocker le ficher sur un serveur sécurisé ( personnel ou cloud ) .
Et donner un accès aux personnes concernées via connexion ou clé d'accès
ou lien par mail .
On est d'accord sur ce point, même avec IlovePDF, on peut le faire sauter mais d'un point de vue des régulateurs et agence de contrôle, ils nous demande de le faire, c'est bête mais c'est pour eux le moyen de cocher la case.

Avez-vous une idée de comment faire pour insérer du code dans ma macro ci-dessus qui fonctionne pour l'instant très bien. Il faudrait juste pouvoir appliquer un password (le même à chaque fois), quand je sauve en PDF la feuille excel.

Merci encore pour votre aide et belle fin de journée à vous,
 
Dernière édition:

rafi1875

XLDnaute Nouveau
On est d'accord sur ce point, même avec IlovePDF, on peut le faire sauter mais d'un point de vue des régulateurs et agence de contrôle, ils nous demande de le faire, c'est bête mais c'est pour eux le moyen de cocher la case.

Avez-vous une idée de comment faire pour insérer du code dans ma macro ci-dessus qui fonctionne pour l'instant très bien. Il faudrait juste pouvoir appliquer un password (le même à chaque fois), quand je sauve en PDF la feuille excel.

Merci encore pour votre aide et belle fin de journée à vous,
Est-ce que ceci pourrait fonctionner ? Merci

If fName <> False Then

'If ActiveDocument.ProtectionType = wdNoProtection Then
'ActiveDocument.Protect Type:=wdAllowOnlyFormFields, Password:="123456"
'Else: MsgBox "votre document est déjà protégé"
'End If

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

End If

End Sub
 
Dernière édition:

fanch55

XLDnaute Accro
Est-ce que ceci pourrait fonctionner ? Merci

If fName <> False Then

'If ActiveDocument.ProtectionType = wdNoProtection Then
'ActiveDocument.Protect Type:=wdAllowOnlyFormFields, Password:="123456"
'Else: MsgBox "votre document est déjà protégé"
'End If

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fName _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

End If

End Sub
Excel ne propage pas le password au fichier exporté ...
Il te faudra passer par un logiciel externe tel que PdfCreator qui a une Lib intégrable à Excel .
@kiki29 saura surement t'aider dans cette voie.

Moi, je ne te suivrai pas dans cette voie illusoire car le mot de passe sera probablement connu de tous petit à petit et rien n'empêchera le destinataire autorisé d'en sauvegarder une copie non protégée et de la transmettre ...
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
291 730
Messages
1 917 540
Membres
179 714
dernier inscrit
saiter
Haut Bas