[VBA] Problème d'enregistrement de fichier (format?)
Bonjour à tous,
Alors tout d'abord, je préviens que je débute sur VBA, et que ma question est peut être très simple à résoudre!
Mon souci est le suivant : j'ai des rapports à rendre, des graphes pour être précis, que je désire faire en forme de macro pour qu'ils s'enregistrent directement vers le chemin de destination que je souhaite. J'ai donc enregistré la macro et peaufiner pour avoir ce que je désire exactement :
While Compteur <= Sheets.Count
Sheets(Compteur).Activate
Dim DateAujd As String
DateAujd = Date
Dim Test As String
Test = DateAujd & "\" & ActiveSheet.Name
Range("Z7000").Value = Test
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
"C:\reporting\2018\CA sites - détails famille\" & "\" & Test, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
Compteur = Compteur + 1
Wend
L'idée est donc d'avoir une destination qui prend en compte la date quand je l'effectue et enfin le nom du fichier (de la feuille). Style C:\reporting\2018\CA sites - détails famille \11-04-18\NomDeLaFeuille.
Le code de destination, c'est le programme qui me l'a fait quand j'ai enregistré la macro, et qui fonctionne très bien si avec ce code "C:\reporting\2018\04-2018\CA sites - détails famille\" & ActiveSheet.Name.
Mais à nouveau, je ne veux PAS écrire moi même la date, par fainéantise
Autre question, rien à voir avec le problème précédent; est-il possible de, imaginons que j'ai 20 feuilles qui sortent en pdf, de faire des combinaisons de 2 feuilles sur un seul pdf? (Au lieu d'avoir 20 PDF pour mes 20 rapports, je veux 10 pdf avec 2 rapports dessus, le 1-2, 3-4... 19-20 ensemble). Tout çà à nouveau concerne l'enregistrement.
Désolé pour le pavé, j'essai d'être le plus précis possible
Merci d'avance!
Bonjour
Si j'ai bien compris votre demande
Sub Rapport()
Dim compteur As Byte
Dim DateAujd As String, chemin As String, test As String
While compteur <= Sheets.Count
DateAujd = Format(Now, "yymmdd")
test = DateAujd & "_" & Sheets(compteur).Name
chemin = "C:\reporting\2018\CA sites - détails famille\"
Sheets(compteur).ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & test, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
compteur = compteur + 1
Wend
End Sub
Cordialement
Bonjour,
à tester,
Sheets(Array("Feuil1", "Feuil2")).Select 'adapter le nom des onglet
Sheets("Feuil2").Activate
chemin = "C:\reporting\2018\CA sites - détails famille\"
Test = Format(Date, "dd-mm-yy") & "\" & ActiveSheet.Name & ".pdf"
sFilename = chemin & Test
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sFilename, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Merci pour vos réponses,
Alors @Dan : Ce n'est pas le sigle _ qui m'intéresse mais bel et bien le slash inversé \ (comme pour retrouver un chemin dans les documents). Et c'est là que ça coince pour moi :s
@sabV : Même souci qui se pose avec mon code de base; j'ai l'impression que ça bloque à cause du fait qu'il y a une partie entre "", un format de date, le fameux "\" qui me pose problème et enfin un activesheet.name.
Pierre
re
Alors @Dan : Ce n'est pas le sigle _ qui m'intéresse mais bel et bien le slash inversé \ (comme pour retrouver un chemin dans les documents). Et c'est là que ça coince pour moi :s
Ce que vous voulez faire revient à créer un répertoire avec la variable "DateAujd" car ce qui est entre \ est considéré comme tel. c'est ce que vous voulez faire à chaque sauvegarde ???
@Dan C'est exactement ça
Pierre
PS : je sais que c'est du chichi, désolé
Re
Essaie avec ce code :
Sub Rapport()
Dim compteur As Byte
Dim DateAujd As String, chemin As String, Fichier As String
While compteur <= Sheets.Count
chemin = "C:\reporting\2018\CA sites - détails famille\"
DateAujd = Format(Now, "yymmdd")
MkDir chemin & DateAujd
Fichier = Sheets(compteur).Name
'msg = MsgBox("Voulez-vous créer le répertoire " & chemin & Dateaujd, vbOKCancel)
Sheets(compteur).ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & "\" & DateAujd & "\" & Fichier, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
compteur = compteur + 1
Wend
End Sub
Je n'ai pas encore testé mais attention que cela suppose que le rapport n'est sauvegardé qu'une fois par jour. Le cas contraire le code renverra une erreur car le dossier dateaujd existe déjà
Cordialement
Top! C'est exactement ce que j'avais en tête! Oui c'est un rapport qui ne doit sortir qu'une fois par jour.
Juste un tout petit souci, c'est que du coup, il ne créer que mon premier rapport CA ; Les autres sites ont un nom de feuille différent, mais vu qu'il a déjà créer un dossier comprenant la date du jour, il me dit qu'il y a une erreur 75 ; erreur d'accès chemin/fichier (Logique sinon il l'écraserait). Pour pousser le vice jusqu'au bout, penses tu qu'il soit possible qu'il passe outre cette erreur, et qu'ils continuent à me sauver mes rapports à l'intérieur de mon fichier correspondant à la date du jour?
EDIT : J'imagine en fait qu'il faudrait, juste avant le while, une ligne de code qui créerait un fichier dans mon répertoire avec la date à laquelle je lance la macro, et de là la rajouter dans ta ligne "chemin". Ce qui éviterait à la boucle de créer ce-dit fichier à chaque fois. Le souci c'est que je ne suis qu'au balbutiement de VBA, et que j'ignore comment faire.
Mais merci déjà, j'avance à grand pas grâce à toi
Pierre
J'ai trouvé!
Dim DateAujd As String, chemin As String, Fichier As String
DateAujd = Format(Now, "dd-mm-yy")
chemin = "C:\reporting\2018\CA sites - détails famille\"
MkDir chemin & DateAujd
While compteur <= Sheets.Count
Sheets(Array(compteur, compteur + 1)).Select
Sheets(compteur).Activate
Fichier = Sheets(compteur).Name
Sheets(compteur).ExportAsFixedFormat Type:=xlTypePDF, FileName:=chemin & "\" & DateAujd & "\" & Fichier, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
compteur = compteur + 2
Wend
Il y a sans doute du superflu, mais c'est exactement ce que je désirai ! Un grand merci à vous pour votre aide
Pierre
re
Il y a sans doute du superflu, mais c'est exactement ce que je désirai !
Non pas de superflu, le tout était de savoir ce qui était désiré. Ici avec la modification faite, une seul répertoire dans lequel sera stocké les feuilles en question au format pdf
Bon WE
Cordialement