IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Répertoire sauvegarde PDF [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Par défaut Répertoire sauvegarde PDF
    Bonjour à tous du forum,

    J'ai un classeur qui me permet de créer et d'enregistrer des commandes. Par défaut, une copie de la commande en PDF est enregistrée dans le répertoire où figure mon classeur excel. Ce que j'aimerais, si c'est possible c'est que la copie PDF soit enregistrée dans le répertoire correspondant à l'année de la date de départ. Si je crée une commande qui a pour date de départ l'année 2011 le PDF devrait s'enregistrer dans le répertoire 2011 et si c'est pour 2012, cela devrait s'enregistrer dans le répertoire 2012. Cela m'éviterait de manipuler les fichiers PDF entre les différents répertoires. Si on pouvait me donner quelques pistes pour y parvenir, cela m'aiderait. Voici la partie de mon code qui me permet de sauvegarder en PDF:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Impression(ByVal Fichier As String)
    With ThisWorkbook
        If MsgBox("Voulez-vous imprimer la commande?", vbYesNo) = vbNo Then Exit Sub
        'Ne pas imprimer
        ThisWorkbook.Sheets("Contrat").ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & Fichier & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        Application.DisplayAlerts = True
    End With
    End Sub
    Merci pour votre aide,

    Claude

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, pour la création d'un dossier, à adapter à ton contexte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Option Explicit
     
    Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
                                                 (ByVal hwnd As Long, ByVal pszPath As String, ByVal lngsec As Long) As Long
     
     
    Private Function CreationDossier(sDossier As String) As Long
    ' Pour valeur retournée par CreationDossier
    '   Voir http://msdn.microsoft.com/en-us/library/bb762131(VS.85).aspx
    '   et   http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspx
        CreationDossier = SHCreateDirectoryEx(0&, sDossier, 0&)
    End Function
     
    Sub Tst()
    Dim y As String
        y = Year(Now)
        CreationDossier ThisWorkbook.Path & "\" & y
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Par défaut
    Bonjour et merci pour la réponse,

    En fait le dossier est déjà créé, par exemple 2011, 2012. Si je crée une commande aujourd'hui pour un départ le 1 janvier 2012, je veux que la copie PDF soit sauvegardée automatiquement dans 2012. Par contre, si je crée une commande aujourd'hui pour un départ le 31 décembre 2011, je voudrais qu'elle soit sauvegardée dans le dossier 2011. Si c'est pour le 15 avril 2013, je veux qu'elle soit sauvegardée dans 2013, etc. La date de départ est insérée dans la cellule B18 de la nouvelle commande avec un calendrier sous forme yyyy-mm-dd.

    Claude

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, l'intérêt de CreationDossier c'est de créer, s'il n'existe pas, le dossier sinon il ne se passe rien ( voir lien sur site Microsoft pour valeur retournée )
    autrement tu as sous les yeux tous les éléments pour l'adapter à ton contexte

    En supposant que le CodeName de Contrat est Feuil1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Year(Feuil1.Range("B18"))
    Pour ce qui est du CodeName et de son intérêt voir http://www.developpez.net/forums/d92...cel/vba-bases/

    A lire également : http://didier-gonard.developpez.com/...-excel-et-vba/

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Par défaut
    Bonjour, donc cela veut dire qu'avec ce code pour créer un dossier, je fais d'une pierre deux coups pour ainsi dire. Si le dossier nommé 2012 n'existe pas au moment de la création de la commande, il sera tout simplement créé et s'il existe, il ne se passera rien et enregistrera la commande dans le dossier prévu.

    C'est parfait parce qu'en ce moment, je reçois encore des commandes pour cette année et l'année prochaine. Cela me posait un certain problème.

    Maintenant, pour intégrer le tout dans VBA, est-ce que je dois tout simplement inclure le code dans la feuil1 ou si je dois créer un module.

    Merci pour les liens,

    Claude

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Dans un module standard qqch comme ceci , à adapter sans doute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Option Explicit
     
    Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
                                                 (ByVal hwnd As Long, ByVal pszPath As String, ByVal lngsec As Long) As Long
     
    Private Function CreationDossier(Dossier As String) As Long
        CreationDossier = SHCreateDirectoryEx(0&, Dossier, 0&)
    End Function
     
    Private Sub Impression(Fichier As String, y As String)
    Dim sDossier As String
     
        If MsgBox("Voulez-vous imprimer la commande?", vbYesNo) = vbNo Then Exit Sub
     
        sDossier = ThisWorkbook.Path & "\" & y
        With Feuil1
            .Activate
            .ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & Fichier, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
            CreationDossier sDossier
            .ExportAsFixedFormat Type:=xlTypePDF, Filename:=sDossier & "\" & Fichier, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        End With
    End Sub
     
    Sub Tst()
    Dim y As String
    Dim sFichier As String
        y = Year(Feuil1.Range("B18"))
        sFichier = "Essai.pdf"
        Impression sFichier, y
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. R/C++ et sauvegarde pdf des figures
    Par Pinou08 dans le forum R
    Réponses: 1
    Dernier message: 29/03/2012, 14h48
  2. Sauvegarder PDF sur disque dur
    Par jotheouf dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 08/10/2010, 19h15
  3. [XL-2003] Ouverture et sauvegarde pdf
    Par Chipss dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/08/2010, 11h13
  4. Personnaliser le nom du répertoire de sauvegarde pdf
    Par flamby6969 dans le forum VBA Access
    Réponses: 0
    Dernier message: 04/12/2007, 16h27
  5. [itext] problème d'ouverture et sauvegarde pdf
    Par kifouillou dans le forum Documents
    Réponses: 27
    Dernier message: 21/02/2007, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo