[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 . Après plusieurs test (pour ça que je joue avec date, test, etc...), je me suis rendu compte que le problème qui se pose vient du rajout de "\" (j'avais d'ailleurs essayé un FileName du style C:\reporting\2018\CA sites - détails famille\" & Date & "\" & ActiveSheet.Name, sans succès) que ce soit directement dans le FileName, ou via le Dim Test. D'où le fait que je pense qu'il y a un souci de format. Pourriez vous m'indiquer une solution à ce petit problème? Je vous en serai éternellement reconnaissant!

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 Dans le fichier "C:\reporting\2018\CA sites - détails famille\" je voudrai qu'il soit créer à chaque fois que je met mon rapport à jour un dossier qui reprendra la date du jour, avec dedans donc les rapports et leurs noms différents en fonction de la feuille. Je ne sais pas si c'est possible.

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

Rechercher des sujets similaires à "vba probleme enregistrement fichier format"