[VBA] Problème d'enregistrement de fichier (format?) Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
P
PierreLGR
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 11 avril 2018
Version d'Excel : 2010

Message par PierreLGR » 11 avril 2018, 11:21

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 :D. 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!
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 5'952
Appréciations reçues : 81
Inscrit le : 27 avril 2007
Version d'Excel : 2010, 2000, Mac 2011

Message par Dan » 11 avril 2018, 13:28

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
@+ Dan ;)
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'003
Appréciations reçues : 256
Inscrit le : 16 mars 2017
Version d'Excel : 2010 sur PC

Message par i20100 » 11 avril 2018, 13:36

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! de faire un clic sur le bouton résolu pour nous aider à t'aider.
Si vous avez un doute :
annonces/explications-et-regles-a-respecter-t13.html

isabelle
P
PierreLGR
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 11 avril 2018
Version d'Excel : 2010

Message par PierreLGR » 11 avril 2018, 13:53

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
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 5'952
Appréciations reçues : 81
Inscrit le : 27 avril 2007
Version d'Excel : 2010, 2000, Mac 2011

Message par Dan » 12 avril 2018, 13:09

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 ;)
P
PierreLGR
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 11 avril 2018
Version d'Excel : 2010

Message par PierreLGR » 13 avril 2018, 08:39

@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é :P
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 5'952
Appréciations reçues : 81
Inscrit le : 27 avril 2007
Version d'Excel : 2010, 2000, Mac 2011

Message par Dan » 13 avril 2018, 13:10

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
1 membre du forum aime ce message.
@+ Dan ;)
P
PierreLGR
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 11 avril 2018
Version d'Excel : 2010

Message par PierreLGR » 13 avril 2018, 14:50

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
P
PierreLGR
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 11 avril 2018
Version d'Excel : 2010

Message par PierreLGR » 13 avril 2018, 17:05

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
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 5'952
Appréciations reçues : 81
Inscrit le : 27 avril 2007
Version d'Excel : 2010, 2000, Mac 2011

Message par Dan » 14 avril 2018, 11:31

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
@+ Dan ;)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message