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