Probleme enregistrement pdf nom variable sous excel 2007 VBA

Résolu/Fermé
yanndebretagn Messages postés 100 Date d'inscription dimanche 28 mai 2017 Statut Membre Dernière intervention 2 mai 2020 - Modifié le 20 oct. 2019 à 19:05
yanndebretagn Messages postés 100 Date d'inscription dimanche 28 mai 2017 Statut Membre Dernière intervention 2 mai 2020 - 2 nov. 2019 à 18:54
Bonjour la communauté,

je me tourne vers vous car je n'arrive pas a enregistrer en pdf 4 feuilles de mon classeur
le problème c'est que les noms varient
hier jordane45 (que je remercie au passage) m'a donné un code pour enregistrer mon classeur en fonction de son nom dans un répertoire et sous répertoire
le problème c'est que je doit extraire 4 feuilles de mon classeur pour les enregistrer dans le sous répertoire
déjà créé en pdf
depuis ce matin que je suis dessus mais rien à faire

le code que je bidouille en vain

Sub devis_quincaillerie_pdf()
Application.DisplayAlerts = False
Dim Chemin As String
Dim Fichier As String
Dim rep As String
Dim Dossier As String
Dim sousdossier As String

Chemin = "C:\Users\Yann\Documents\xxxxxxxxx\devis\"


On Error Resume Next

Chemin = Chemin & Dossier & "\" & sousdossier & "\"
Sheets("quincailleries pour pdf").Copy

Fichier = Sheets("quincailleries pour pdf").Range("A15") & ".Pdf"
With ActiveWorkbook

.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Fichier, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

.Close savechanges:=False

Application.DisplayAlerts = True

End With
End Sub


si quelqu'un a queque chose a me proposer
merci à vous
A voir également:

2 réponses

yanndebretagn Messages postés 100 Date d'inscription dimanche 28 mai 2017 Statut Membre Dernière intervention 2 mai 2020 2
20 oct. 2019 à 19:13
je me répond
résolu partiellement
ok pour une feuille
mais pour les 4
SOLUTION 1: recopier le code 4 fois
ou y a t'il moyen d'intégrer tous ça dans un seul et même code?
mon précieux

Sub devis_quincaillerie_pdf()
Application.DisplayAlerts = False
Dim Chemin As String
Dim Fichier As String
Dim rep As String
Dim Dossier As String
Dim sousdossier As String

Chemin = "C:\Users\Yann\Documents\xxxxxxxxx\devis\"

Dossier = Sheets("renseignement client").Range("B27").Value & " " & Sheets("renseignement client").Range("B26").Value

sousdossier = Sheets("renseignement client").Range("B22").Value & " " & Sheets("renseignement client").Range("B25").Value & " " & Sheets("renseignement client").Range("B27").Value & " " & Sheets("renseignement client").Range("B29").Value


On Error Resume Next

Chemin = Chemin & Dossier & "\" & sousdossier & "\"
Sheets("quincailleries pour pdf").Copy

Fichier = Sheets("quincailleries pour pdf").Range("A15") & ".Pdf"
With ActiveWorkbook

.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Fichier, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

.Close savechanges:=False

Application.DisplayAlerts = True

End With
End Sub

merci
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
Modifié le 20 oct. 2019 à 19:42
bonjour, merci d'utiliser le type "basic" avec les balises de code, quand tu partages du VBA.
il est de loin préférable de ne pas recopier le code.
Quels sont les éléments qui changent entre les 4 exécutions?
Une technique habituelle est de créer une routine contenant les actions à faire, que tu appelleras 4 fois en lui passant les éléments variables.
à toi donc de décrire précisément les actions à répéter, et ce qui change.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
21 oct. 2019 à 12:35
Bonjour,

il faut mettre en paramètre ton range dans la procédure:

https://docs.microsoft.com/fr-fr/dotnet/visual-basic/programming-guide/language-features/procedures/sub-procedures

Sub devis_quincaillerie_pdf(macellule As Range))

'ton code en changeant "A15" par macellule
End sub

ensuite pour chaque enregistrement tu n'a plus qu"a appeler ta procédure en changeant ton range comme ceci:

devis_quincaillerie_pdf("A15")


Voilà c'est simple!
0
yanndebretagn Messages postés 100 Date d'inscription dimanche 28 mai 2017 Statut Membre Dernière intervention 2 mai 2020 2
21 oct. 2019 à 21:31
Merci cs_le pivert
je regarde ça dans la semaine et te tiens au jus
0
yanndebretagn Messages postés 100 Date d'inscription dimanche 28 mai 2017 Statut Membre Dernière intervention 2 mai 2020 2
1 nov. 2019 à 21:31
bonjour ,
la formule marche du tonnerre
l'idée était de faire la même chose mais avec le nom de feuille qui varie
finalement je l'ai copier 4 fois avec des nom de feuille différentes
voila pour moi...
merci encore
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 2 nov. 2019 à 16:45
Pour faire la même chose avec les feuilles il faut prendre leurs numéros, ensuite pour la cellule, la ligne et la colonne.
Dans mon exemple j'ai ajouté une valeur à mettre dans les cellules concernées:

Option Explicit
Private Sub CommandButton1_Click()
Call devis_quincaillerie_pdf(1, 10, 10, 18254) 'numero feuille 1, ligne 11, colonne 11,valeur en K11
Call devis_quincaillerie_pdf(2, 5, 5, 18255) 'numero feuille 2, ligne 6, colonne 6,valeur en F6
Call devis_quincaillerie_pdf(3, 2, 2, 18256) 'numero feuille 3, ligne 3, colonne 3,valeur en C3
End Sub
 Sub devis_quincaillerie_pdf(mafeuille As Integer, l As Integer, c As Integer, Nb1 As Long)
   Worksheets(mafeuille).Select
   Range("A1").Select
   ActiveCell.Offset(l, c).Value = Nb1
End Sub


Voir ceci pour te repérer dans l'index(numéro) de la feuille

https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/

Voilà si cela peut te servir à l'avenir

@+ Le Pivert
0
yanndebretagn Messages postés 100 Date d'inscription dimanche 28 mai 2017 Statut Membre Dernière intervention 2 mai 2020 2
2 nov. 2019 à 18:54
merci le piv
tjrs aussi cool
a bientôt pour le prochain dépannage
0