Problème macro enregistrement en PDF dans un dossier sur le bureau

Fermé
Xtrm - 19 févr. 2019 à 11:40
 Xtrm - 20 févr. 2019 à 15:47
Bonjour,

J'ai un soucis avec une macro qui fonctionnait sur mon ancien ordinateur mais ne fonctionne plus sur le nouveau.

J'ai deux listes déroulantes, une avec les régions et une avec les villes qui se met à jour en fonction de la région sélectionnée.

Le fait de définir région et ville donne une fiche avec des informations propres à la ville concernée

Je souhaite qu'une fois qu'on a sélectionné sa région sur l'onglet 1 (menu), la macro "imprime" en pdf la fiche pour chaque ville (onglet 2, fiche synthèse). Et les enregistre dans un fichier "Opération Flash" sur le bureau.

Voici ce que j'ai:

Sub imprimer()

For i = 3 To 17

If Sheets("Menu").Range("K" & i).Value Like "HF*" Then
Sheets("Menu").Select
Range("C6").Copy
Sheets("Fiche synthèse").Select
Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Menu").Select
Range("K" & i).Copy
Sheets("Fiche synthèse").Select
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("c4").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"D:\" & "Environ(Username)" & "\Desktop\Opération Flash" & Range("c4") & " - " & Range("c6") & " - " & Range("g6") & " - " & Range("g3") & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Range("c4").Select
Sheets("Menu").Select
Range("c6").Select

End If


J'ai mis en gras la partie qui pose problème. Je soupçonne que ce soit le chemin d'accès que j'ai mal indiqué.

Des solutions?

Merci pour votre aide

Configuration: Windows / Internet Explorer 11.0
A voir également:

1 réponse

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
19 févr. 2019 à 11:56
0
Merci cs_Le Pivert pour ta réponse.

Je suis très novice en utilisation de macro, j'ai du mal à voir comment adapter cet exemple à mon fichier ?

Merci d'avance.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 19 févr. 2019 à 12:48
Là tu fais une boucle, ce qui signifie que tu enregistres 14 fois. Il faut changer ta macro!

Je ne vois pas le
Next i
de ta boucle
0
cs_Le Pivert, merci pour ta réponse.
Oui cette partie est volontaire, je souhaite que la macro enregistre une fiche pour chaque ville de la région sélectionnée et la colonne K 3->17 donne la liste des villes en fonction de la région sélectionnée. En revanche, c'est la partie enregistrement qui n'est pas bonne j'ai l'impression
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
19 févr. 2019 à 14:34
sans voir le classeur et ne sachant pas les valeurs que tu cherches dans ta boucle, j'ai juste remplacé le chemin du bureau et ajouter la valeur de i pour que les classeurs n'aient pas la même nom:

Option Explicit
Dim dossier As String
Dim bureau As String
Sub imprimer()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
cheminbureau
dossier = bureau & "\Opération Flash\"
For i = 3 To 17
If Sheets("Menu").Range("K" & i).Value Like "HF*" Then
Sheets("Menu").Select
Range("C6").Copy
Sheets("Fiche synthèse").Select
Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Menu").Select
Range("K" & i).Copy
Sheets("Fiche synthèse").Select
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("c4").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
dossier & Range("c4") & " - " & Range("c6") & " - " & Range("g6") & " - " & Range("g3") & "_i.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Range("c4").Select
Sheets("Menu").Select
Range("c6").Select
End If
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Private Sub cheminbureau()
'https://excel-malin.com/codes-sources-vba/trouver-chemin-de-bureau/

    On Error GoTo TestErreur
    Dim cheminbureau As String
    
    cheminbureau = ObtenirCheminBureau()
    
    bureau = cheminbureau 'affiche le chemin vers le dossier Bureau
    Exit Sub
TestErreur:
    MsgBox "Une erreur s'est produite..."
End Sub
Public Function ObtenirCheminBureau() As String
'par: Excel-Malin.com ( https://excel-malin.com )

    On Error GoTo ObtenirCheminBureauError
    Dim cheminbureau As String
    cheminbureau = ""
    Dim oWSHShell As Object
    Set oWSHShell = CreateObject("WScript.Shell")
    
    cheminbureau = oWSHShell.SpecialFolders("Desktop")
    
    If (Not (oWSHShell Is Nothing)) Then Set oWSHShell = Nothing
    ObtenirCheminBureau = cheminbureau

    Exit Function
ObtenirCheminBureauError:
    If (Not (oWSHShell Is Nothing)) Then Set oWSHShell = Nothing
    ObtenirCheminBureau = ""
End Function


Voilà

@+ Le Pivert
0
Merci Le Pivert d'avoir pris le temps de te pencher sur ma macro. J'ai toujours des codes erreurs, je vais essayer de trouver une alternative. Mais merci en tout cas
0