XL 2013 conversion d'une feuille excel au pdf en vba

sitaleb

XLDnaute Nouveau
Salut
j'ai utilisé un code pour sauvegarder mes factures en forme PDF et et les transférer les informations a une deuxième feuille ,mais toujours l'Excel m'indique qu'il y'a une erreur dans le code dans la dernière ligne, que je n'arrive pas a corriger.
 

Pièces jointes

  • Adr.xlsm
    25.3 KB · Affichages: 64
  • Adr.xlsm
    25.3 KB · Affichages: 66
Dernière édition:

kiki29

XLDnaute Barbatruc
Re : conversion d'une feuille excel au pdf en vba

Salut, et pourtant c'est le B A BA.

Code:
Option Explicit

Sub transfert()
Dim myfile As String
    '........
    'sauvegarder la facture en pdf
    If NomFichierValide(myfile) Then
        Sheets(1).ExportAsFixedFormat Type:=xlTypePDF, Filename:=myfile
    Else
        MsgBox "Nom de fichier invalide !", vbCritical + vbOKOnly, "Nom de fichier"
    End If
End Sub

Private Function NomFichierValide(sChaine As String) As Boolean
Dim i As Long
Const CaracInterdits As String = """*/:<>?[\]|"
    NomFichierValide = True
    If Len(sChaine) = 0 Then
        NomFichierValide = False
        Exit Function
    End If
    For i = 1 To Len(CaracInterdits)
        If InStr(sChaine, Mid$(CaracInterdits, i, 1)) > 0 Then
            NomFichierValide = False
            Exit Function
        End If
    Next i
End Function
 
Dernière édition:

kiki29

XLDnaute Barbatruc
Re : conversion d'une feuille excel au pdf en vba

Re, pour être plus complet, auquel on pourrait rajouter une vérif de l'existence du dossier et la non existence de doublons pdf.
Code:
Option Explicit

Sub transfert()
Dim myfile As String
Dim LRow As Long, sNom As String

    sNom = Sheets(1).Range("F12") & " - " & Format(Sheets(1).Range("G6"), "dd mmm yyyy")
    myfile = "D:\factures\" & sNom & ".pdf"
    
    LRow = Sheets(2).Range("a" & Rows.Count).End(xlUp).Row + 1

    Sheets(2).Range("a" & LRow).Value = Sheets(1).Range("G6").Value
    Sheets(2).Range("b" & LRow).Value = Sheets(1).Range("F12").Value
    Sheets(2).Range("c" & LRow).Value = Sheets(1).Range("F15").Value
    Sheets(2).Range("d" & LRow).Value = Sheets(1).Range("G34").Value

    Sheets(2).Hyperlinks.Add anchor:=Sheets(2).Range("e" & LRow), Address:=myfile, TextToDisplay:=myfile

    'sauvegarder la facture en pdf

    If NomFichierValide(sNom) Then
        Sheets(1).ExportAsFixedFormat Type:=xlTypePDF, Filename:=myfile
    Else
        MsgBox "Nom de fichier invalide !", vbCritical + vbOKOnly, "Nom de fichier"
    End If
End Sub

Private Function NomFichierValide(sChaine As String) As Boolean
Dim i As Long
Const CaracInterdits As String = """*/:<>?[\]|"
    NomFichierValide = True
    If Len(sChaine) = 0 Then
        NomFichierValide = False
        Exit Function
    End If
    For i = 1 To Len(CaracInterdits)
        If InStr(sChaine, Mid$(CaracInterdits, i, 1)) > 0 Then
            NomFichierValide = False
            Exit Function
        End If
    Next i
End Function
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
347

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87