Bonjour,
Je débute en "macro" sous Excel. J'ai fait une macro pour avoir un bouton qui permet de créer un PDF de ma feuille Excel avec un enregistrement PDF incrémenté à chaque nouvelle création. j'ai peut-être été un peu trop optimiste dans mes capacités pour débuter..... Par contre celle-ci ne fonctionne pas. Ci-dessous ce que j'ai écris :
Sub GeneratePDF()
Dim ws As Worksheet
Dim pdfPath As String
Dim pdfName As String
Dim fileNum As Integer
Dim found As Boolean
Set ws = ThisWorkbook.Sheets("Fiche d'intervention maintenance")
pdfPath = "\\NASNewonat\Newonat\Newonat Commun\Maintenance\"
fileNum = 1
found = False
Do While found = False
pdfName = "Fiche_" & fileNum & ".pdf"
If Dir(pdfPath & pdfName) = "" Then
found = True
Else
fileNum = fileNum + 1
End If
Loop
ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath & pdfName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
MsgBox "PDF créé et enregistré sous : " & pdfPath & pdfName, vbInformation
End Sub
Merci de m'indiquer, si vous le pouvez, ce qui n'est pas bien écrit dans la macro et de m'expliquer là ou j'ai fait des erreurs pour ne pas les reproduire lors de mes prochaines macro.
Merci et bonne journée
Désolé de vous contredire...
mais je l'ai testé, et il fonctionne comme attendu... fichier 1, puis 2, puis ...
Certes, pour moi la variable booléenne n'est pas bien choisi
Dir() sur un dossier en réseau sur un serveur ne pose pas de souci (testé aussi)
Peut-être la chaleur, il faut s'hydrater de ce temps
re
désolé @wDog66
m"ais vous ne m'avez pas lu
il semblerait que le soleil ne cogne pas que chez moi
d'"ailleurs vous soulevez ce que j'"ai tenté d'expliquer donc vous m'avez très bien compris
mettez vous à la place d'une autre personne qui viendrait lire ce topic
on marche sur la tête là
VB:
fileNum = 1
ok = False
Do While ok = False
pdfName = "Fiche_" & fileNum & ".pdf"
If Dir(pdfPath & pdfName) = vbNullString Then ok = True: Exit Do'le exit do évite le renvoie au dernier test inutile
Else: fileNum = fileNum + 1
End If
Loop
Voici la modification de votre code, pour être "logique"
VB:
Sub GeneratePDF()
Dim ws As Worksheet
Dim PdfPath As String, PdfName As String
Dim FileNum As Integer
Dim Found As Boolean
'
Set ws = ThisWorkbook.Sheets("F.I.M")
PdfPath = "\\NASNewonat\Newonat\Newonat Commun\Maintenance\"
FileNum = 1: Found = False
Do
PdfName = "Fiche_" & FileNum & ".pdf"
If Dir(PdfPath & PdfName) <> "" Then
Found = True
FileNum = FileNum + 1
Else
Found = False
End If
Loop While Found = True
ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfPath & PdfName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
MsgBox "PDF créé et enregistré sous : " & PdfPath & PdfName, vbInformation
End Sub