PDF enregistrer selection sur autre onglet

Bonjour, voici une de mes macros et je ne parviens pas à trouver mon erreur.

Je veux simplement sélectionner une plage de données sur l'onglet "Nepasmodifier" en fonction du résultat d'une cellule d'un onglet "Calcul Coûts".

Je parviens à établir la fonction si, à changer d'onglet, à sélectionner la plage désirée mais pas à exporter cette plage en pdf...j'ai l'impression que ma fonction d'export est bonne et que ma fonction de sélection aussi mais qu'entre les deux il me manque quelque chose.

Sub pdf()
'
' pdf Macro
'Dim LHeure As String, LeDate As String

LHeure = Format(Time, "HMS")
LaDate = Format(Date, "dd" & "." & "mm" & "." & "yyyy")

' Création fichier PDF

If Range("B3").Value = "VG_" Then

Sheets("Nepasmodifier").Select
Range("A1:I47").Select

Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\r.noyer\Desktop\MIDIETDEMIbureau\Produits\MAJ 2022\Fiches Techniques\Végétarien\" & Range("B3").Value & "" & Range("C3").Value & " " & LaDate & " " & LHeure & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
ElseIf Range("B3").Value = "P_" Then

Sheets("Nepasmodifier").Select
Range("A1:I47").Select

Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\r.noyer\Desktop\MIDIETDEMIbureau\Produits\MAJ 2022\Fiches Techniques\Poisson\" & Range("B3").Value & "" & Range("C3").Value & " " & LaDate & " " & LHeure & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False

ElseIf Range("B3").Value = "V_" Then

Sheets("Nepasmodifier").Select
Range("A1:I47").Select

Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\r.noyer\Desktop\MIDIETDEMIbureau\Produits\MAJ 2022\Fiches Techniques\Viande\" & Range("B3").Value & "" & Range("C3").Value & " " & LaDate & " " & LHeure & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False

End If

' Message de confirmation

MsgBox ("Création du fichier PDF effectué" & vbCrLf & vbCrLf & "Merci ")

'
End Sub

Bonjour, deux lignes plus haut vous avez changé d'onglet pour mémoire.

donc "C:\Users\r.noyer\Desktop\MIDIETDEMIbureau\Produits\MAJ 2022\Fiches Techniques\Végétarien\" & Range("B3").Value & "" & Range("C3").Value & " " & LaDate & " " & LHeure & ".pdf", Quality

-La il cherche B3 de l'onglet "Nepasmodifier"

Prenez l'habitude de rédiger vos range avec le nom de feuille inclu.

Idem pour un select ( inutile d'en faire 2 de suite )

Sheets("Nepasmodifier").Range("A1:I47").Select

Pour le pas compliquer et multiplier le nombre de lignes de code le plus simple serait que la valeur dans la cellule B3 corresponde

au du répertoire : Végétarien ou Poisson ou Viande ce serait plus utile pour ne nom de chemin qu'une abréviation.

J'ai suivi vos conseils :

If Sheets("Calcul_Coût").Range("B3").Value = "VG_" Then

Sheets("Nepasmodifier").Range("A1:I47").Select

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"C:\Users\r.noyer\Desktop\MIDIETDEMIbureau\Produits\MAJ 2022\Fiches Techniques\Végétarien\" & Sheets("Calcul_Coût").Range("B3").Value & "" & Sheets("Calcul_Coût").Range("C3").Value & " " & LaDate & " " & LHeure & ".pdf", Quality:= _

xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _

:=False, OpenAfterPublish:=False

ElseIf Sheets("Calcul_Coût").Range("B3").Value = "P_" Then

Sheets("Nepasmodifier").Range("A1:I47").Select

Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"C:\Users\r.noyer\Desktop\MIDIETDEMIbureau\Produits\MAJ 2022\Fiches Techniques\Poisson\" & Sheets("Calcul_Coût").Range("B3").Value & "" & Sheets("Calcul_Coût").Range("C3").Value & " " & LaDate & " " & LHeure & ".pdf", Quality:= _

xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _

From:=1, To:=1, OpenAfterPublish:=False

ElseIf Range("B3").Value = "V_" Then

Sheets("Nepasmodifier").Range("A1:I47").Select

Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"C:\Users\r.noyer\Desktop\MIDIETDEMIbureau\Produits\MAJ 2022\Fiches Techniques\Viande\" & Sheets("Calcul_Coût").Range("B3").Value & "" & Sheets("Calcul_Coût").Range("C3").Value & " " & LaDate & " " & LHeure & ".pdf", Quality:= _

xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _

From:=1, To:=1, OpenAfterPublish:=False

End If

' Message de confirmation

MsgBox ("Création du fichier PDF effectué" & vbCrLf & vbCrLf & "Merci ")

'

End Sub

J'ai donc deux questions :

-avec une commande de type : Sheets("Calcul_Coût").Range("B3").Value, la macro se déplace sur la feuille en question ou "prend" juste la donnée nécessaire ?

-en combinant la feuille et le range dans la sélection ( Sheets("Nepasmodifier").Range("A1:I47").Select ) ; cela me met une erreur de type " Méthode Select de la classe range a échoué "

Merci pour votre aide.

C'est bon j'ai trouvé en enlevant l'étape "Select" et en citant directement le range plutôt que de dire "active workbook" ou "selection" :

If Sheets("Calcul_Coût").Range("B3").Value = "VG_" Then

Sheets("Nepasmodifier").Range("A1:I47").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\r.noyer\Desktop\MIDIETDEMIbureau\Produits\MAJ 2022\Fiches Techniques\Végétarien\" & Sheets("Calcul_Coût").Range("B3").Value & "" & Range("C3").Value & " " & LaDate & " " & LHeure & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

c'est effectivement bien mieux de ne pas utiliser de select quand on n'a pas besoin de changer d'onglet.

Rechercher des sujets similaires à "pdf enregistrer selection onglet"