Dispatcher dans plusieurs dossiers fichiers générés en pdf : est ce possible ??

libellule85

XLDnaute Accro
Bonjour le forum,
Dans mon classeur, j'ai trois feuilles Détail, Détail 1 et Récap dont j'imprime par macro en pdf (ci-dessous code) ce qui me génère trois fichiers différents avec leur nom d'onglet.

Code:
Sheets(i).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Documents and Settings\Moi\Bureau\Factures\" & Sheets(i).Name & " " & Application.Proper(mois) & " " & Right(annee, 2) & ".pdf"

Pour l'instant ces trois fichiers sont enregistrés dans un seul dossier et c'est moi qui après coupe et colle chacun d'eux dans leurs dossiers respectifs : C:\Documents and Settings\Moi\Bureau\Factures\2011\Détail, C:\Documents and Settings\Moi\Bureau\Factures\2011\Détail 1, C:\Documents and Settings\Moi\Bureau\Factures\2011\Récap).

Donc je voulais savoir, si il était possible de dispatcher directement dans leurs dossiers respectifs ces trois fichiers générés ? Et si oui quel code utiliser ?

D'avance merci pour vos réponses
 

mth

XLDnaute Barbatruc
Re : Dispatcher dans plusieurs dossiers fichiers générés en pdf : est ce possible ??

Bonjour libellule85,

Un petit essai avec ce code,

Code:
Sub test()
For i = 1 To 3
    Dim chemin As String, Tablo
    chemin = "C:\Documents and Settings\moi\Bureau\Factures\2011\"
    Tablo = Array("Détail", "Détail 1", "Récap")
    Sheets(i).ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & Sheets(i).Name & Tablo(i - 1) & ".pdf"
Next
End Sub

Bien à toi,

mth
 

libellule85

XLDnaute Accro
Re : Dispatcher dans plusieurs dossiers fichiers générés en pdf : est ce possible ??

Bonjour mth,
merci beaucoup pour ta réponse, j'ai donc essayé ton code les fichiers sont bien générés mais ils sont tous dans 2011, ils ne sont pas dispatchés chacun dans leur dossiers respectifs !
 

mth

XLDnaute Barbatruc
Re : Dispatcher dans plusieurs dossiers fichiers générés en pdf : est ce possible ??

re :)

Désolée, j'ai confondu nom de dossier et répertoire,
Vois si ça va mieux comme ceci:
Code:
  Dim chemin As String, nom As String, Tablo
For i = 1 To 3
    chemin = "C:\Documents and Settings\moi\Bureau\Factures\2011\"
    nom = Sheets(i).Name & " " & Application.Proper(mois) & " " & Right(annee, 2) & ".pdf"
    Tablo = Array("Détail", "Détail 1", "Récap")
    Sheets(i).ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & Tablo(i - 1) & "\" & nom
Next

Bien à toi,

mth
 

libellule85

XLDnaute Accro
Re : Dispatcher dans plusieurs dossiers fichiers générés en pdf : est ce possible ??

Re mth,
je te remercie beaucoup celà fonctionne à merveille tout est bien dispatcher, mais seul souci cela ne met plus le mois décalé ni l'année dans les fichiers générés ! par exemple Détail Juillet 11.pdf etc..
 

mth

XLDnaute Barbatruc
Re : Dispatcher dans plusieurs dossiers fichiers générés en pdf : est ce possible ??

Re :)

Dans le tout premier code que tu as donné :
Code:
[FONT=monospace]Sheets(i).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Documents and Settings\Moi\Bureau\Factures\" & Sheets(i).Name & " " & Application.Proper(mois) & " " & Right(annee, 2) & ".pdf"[/FONT]

J'ai cru comprendre (peut-être à tort... ) que mois et annee étaient des variables calculées dans les lignes précédentes de ta macro, annee et mois étant peut-être extraits d'une des feuilles de ton fichier ? est-ce bien le cas?

@ +

mth
 

libellule85

XLDnaute Accro
Re : Dispatcher dans plusieurs dossiers fichiers générés en pdf : est ce possible ??

Re,
je te met ci-dessous la macro en entier :

Code:
Sub ImprimerPDF()
Dim NbFeuille As Integer
Dim L As Integer
annee = Year(Now)
 Select Case Month(Now)
     Case 1
     mois = "décembre"
     annee = annee - 1
     Case 2
     mois = "janvier"
     Case 3
     mois = "février"
     Case 4
     mois = "mars"
     Case 5
     mois = "avril"
     Case 6
     mois = "mai"
     Case 7
     mois = "juin"
     Case 8
     mois = "juillet"
     Case 9
     mois = "août"
     Case 10
     mois = "septembre"
     Case 11
     mois = "octobre"
     Case 12
     mois = "novembre"
 End Select
Application.ScreenUpdating = False
On Error Resume Next

For i = 1 To Sheets.Count
If Sheets(i).Visible = -1 Then
NbFeuille = NbFeuille + 1
Sheets(1).Select
ImprimeAuto
Sheets(2).Select
ImprimeAuto2
Sheets(i).Select
    'ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Documents and Settings\Moi\Bureau\" & Sheets(i).Name & " " & Application.Proper(mois) & " " & Right(annee, 2) & ".pdf"
End If
Next i
Sheets(1).Select
ImprimeAuto1
Sheets(2).Select
ImprimeAuto22
Application.ScreenUpdating = True
Select Case MsgBox("Les  " & NbFeuille & " documents PDF viennent d'être créés", vbInformation, "Les 3 pages sont enfin imprimées, pas trop tôt !!!")
End Select
L = Sheets("Détail").Range("A65536").End(xlUp).Row
Sheets("Détail").Select
Range("A" & L).Offset(1, 0).Select
End Sub
 
Dernière édition:

mth

XLDnaute Barbatruc
Re : Dispatcher dans plusieurs dossiers fichiers générés en pdf : est ce possible ??

re :)

c'est le début de ton code qui permet de renseigner mois et année, du coup en le reprenant ça donnerait ceci

Code:
  Dim chemin As String, nom As String, Tablo
  
  annee = Year(Now)
Select Case Month(Now)
    Case 1
    mois = "décembre"
    annee = annee - 1
    Case 2
    mois = "janvier"
    Case 3
    mois = "février"
    Case 4
    mois = "mars"
    Case 5
    mois = "avril"
    Case 6
    mois = "mai"
    Case 7
    mois = "juin"
    Case 8
    mois = "juillet"
    Case 9
    mois = "août"
    Case 10
    mois = "septembre"
    Case 11
    mois = "octobre"
    Case 12
    mois = "novembre"
End Select

For i = 1 To 3
    chemin = "C:\Documents and Settings\MOI\Bureau\Factures\2011\"
    nom = Sheets(i).Name & " " & Application.Proper(mois) & " " & Right(annee, 2) & ".pdf"
    Tablo = Array("Détail", "Détail 1", "Récap")
    Sheets(i).ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & Tablo(i - 1) & "\" & nom
Next

Vois si cela te convient,

@ +

mth
 

mth

XLDnaute Barbatruc
Re : Dispatcher dans plusieurs dossiers fichiers générés en pdf : est ce possible ??

re,

Month(Now) et Year(Now) ne peuvent pas être vide, de mon coté ça fonctionne très bien, ceci dit, si tu intègres le tout dans un module existant et que le i te gène, remplace par une autre lettre cette partie là, par exemple avec j
Code:
For j = 1 To 3
    chemin = "C:\Documents and Settings\MOI\Bureau\Factures\2011\"
    nom = Sheets(j).Name & " " & Application.Proper(mois) & " " & Right(annee, 2) & ".pdf"
    Tablo = Array("Détail", "Détail 1", "Récap")
    Sheets(j).ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & Tablo(j - 1) & "\" & nom
Next

@+

mth
 

libellule85

XLDnaute Accro
Re : Dispatcher dans plusieurs dossiers fichiers générés en pdf : est ce possible ??

re mth,
j'avais modifié mon post 9, car je suis allé trop vite à te répondre... Tout fonctionne à merveille
encore mille merci pour ton aide c'est vraiment sympa
@ bientôt sur le forum
 

mth

XLDnaute Barbatruc
Re : Dispatcher dans plusieurs dossiers fichiers générés en pdf : est ce possible ??

re :)

contente que tu aies réussi, en espérant que tu trouves tout de même le temps de profiter un peu de ce week-end prolongé ...

A une prochaine fois,

mth
 

libellule85

XLDnaute Accro
[Résolu] Dispatcher dans plusieurs dossiers fichiers générés en pdf...

re,
pour moi ce n'est pas un week-end prolongé c'est un week-end normal, car je ne travaille jamais le lundi par contre je travaille le samedi matin !!
Au plaisir de te retrouver sur le forum
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Dispatcher dans plusieurs dossiers fichiers générés en pdf : est ce possible ??

Bonjour le fil

libellule85
Tu n'aimes pas les régimes amincissants :) ?
https://www.excel-downloads.com/threads/resolu-fusionner-macros.168282/

PS: Pourquoi retires-tu le code VBA de tes messages ? Cela rend le fil mois compréhensible.
Re,
je te met ci-dessous la macro en entier :​

Dernière modification par libellule85 ; Hier à 16h01.​
L'est où la macro en entier ????

EDITION
Heureusement que mth (salutations) est là (rapport au code disparu)
Donc pour ceux qui aime les régimes
Code:
Sub Test()
Dim mois$
mois = StrConv(MonthName(Month(Date) - 1), vbProperCase)
MsgBox mois
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
313 928
Messages
2 103 632
Membres
108 739
dernier inscrit
titoooo428