Probleme enregistrement pdf nom variable sous excel 2007 VBA

Résolu
yanndebretagn Messages postés 100 Date d'inscription   Statut Membre Dernière intervention   -  
yanndebretagn Messages postés 100 Date d'inscription   Statut Membre Dernière intervention   - 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 age) 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:\s\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, _
IncludeDoroperties:=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   Statut Membre Dernière intervention   2
 
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:\s\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, _
IncludeDoroperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

.Close savechanges:=False

Application.DisplayAlerts = True

End With
End Sub

merci
0
yg_be Messages postés 23538 Date d'inscription   Statut Contributeur Dernière intervention   1 582
 
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 ant 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 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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   Statut Membre Dernière intervention   2
 
Merci cs_le pivert
je regarde ça dans la semaine et te tiens au jus
0
yanndebretagn Messages postés 100 Date d'inscription   Statut Membre Dernière intervention   2
 
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 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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   Statut Membre Dernière intervention   2
 
merci le piv
tjrs aussi cool
a bientôt pour le prochain dépannage
0