Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres bouton d'action sous excel

Newonat

XLDnaute Nouveau
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
 

wDog66

XLDnaute Occasionnel
Bonjour Newonat et bienvenue,

Merci de mettre le code entre balises STP avec le bouton prévu à cet effet

Ca t'ouvre une fenêtre dans laquelle il faut coller le code

Le nom de l'onglet est impossible (TROP LONG)
sinon le code quoi un peu long est fonctionnel pour moi

A+
 

Newonat

XLDnaute Nouveau
Merci de ton retour mais je n'ai pas tout compris dans ton explication.
Ci joint mon fichier si tu peux m'aider.
Merci d'avance
A+
 

Pièces jointes

  • ENR-MAINT-01 Version 1.0 Fiche d'intervention maintenance.xlsm
    137.6 KB · Affichages: 1

patricktoulon

XLDnaute Barbatruc
bonjour
fonctionel !! ????? ça m'étonnerait fortement
VB:
If Dir(pdfPath & pdfName) = "" Then
found = True
Else
fileNum = fileNum + 1
End If

je traduis
si dir (patincoufin & filnum) donne rien alors
trouvé=true
sinon filnum=filnum+1

ca veut dire tout simplement que tu veux écraser l'existant
je ne suis p"as sur que cela soit ton intention


de plus il me semble avoir lu que dir avait des problème avec les path en réseau ou onedrive

Fso me semble t il fonctionne mieux
 

wDog66

XLDnaute Occasionnel
Bonjour Patrick
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
 

patricktoulon

XLDnaute Barbatruc
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

ok or not ok ?
punaise j'ai chaud moi
 

wDog66

XLDnaute Occasionnel
Bonjour Newonat,

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

Bonne journée
 

Discussions similaires

Réponses
2
Affichages
660
Réponses
3
Affichages
407
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…