Probleme enregistrement pdf nom variable sous excel 2007 VBA [Résolu]

Messages postés
65
Date d'inscription
dimanche 28 mai 2017
Statut
Membre
Dernière intervention
11 novembre 2019
-
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
Afficher la suite 

2 réponses

Messages postés
65
Date d'inscription
dimanche 28 mai 2017
Statut
Membre
Dernière intervention
11 novembre 2019
0
Merci
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
yg_be
Messages postés
8908
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 novembre 2019
449 -
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.
Commenter la réponse de yanndebretagn
Messages postés
6340
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 novembre 2019
409
0
Merci
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!
yanndebretagn
Messages postés
65
Date d'inscription
dimanche 28 mai 2017
Statut
Membre
Dernière intervention
11 novembre 2019
-
Merci cs_le pivert
je regarde ça dans la semaine et te tiens au jus
yanndebretagn
Messages postés
65
Date d'inscription
dimanche 28 mai 2017
Statut
Membre
Dernière intervention
11 novembre 2019
-
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
cs_Le Pivert
Messages postés
6340
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 novembre 2019
409 -
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
yanndebretagn
Messages postés
65
Date d'inscription
dimanche 28 mai 2017
Statut
Membre
Dernière intervention
11 novembre 2019
-
merci le piv
tjrs aussi cool
a bientôt pour le prochain dépannage
Commenter la réponse de cs_Le Pivert