XL 2013 [RESOLU] Imprimer chaque feuille dans un fichier différent

troopers87

XLDnaute Occasionnel
Bonjour à tous,

Dans mon fichier Excel, j'ai une feuille Excel par commercial.
Je dois leur envoyer leur propre feuille, sans les autres tous les mois, et au format pdf.
Comme je suis flemmard, je n'ai pas envie d'enregistrer 15 fois le même fichier en masquant les feuilles des autres commerciaux. Je me dis qu'il existe certainement une combine, éventuellement en VBA, pour permettre cela.

Merci d'avance pour votre aide !
 

troopers87

XLDnaute Occasionnel
Bonjour Yurperqod,

Lorsque j'utilise le fichier de test avec le code du message #28, tout fonctionne correctement : je pense que nous ne sommes pas très loin :)
Mais en adaptant le code dans le fichier final, je reçois une erreur.

Voici mon code, modifié par mes soins (nom des feuilles à exclure + Prenom.NOM remplacé par les miens par souci de confidentialité) :

VB:
Sub Test2()
Dim Chemin As String
Dim Feuille As Worksheet

Chemin = "C:\Users\Prenom.NOM\Desktop\" ' mettre le nom du dossier où enregistrer les PDF

For Each Feuille In Worksheets
'Changer avec les noms rééls des feuilles à eclure
If Feuille.Name <> "BD_MagFourArt" And Feuille.Name <> "TCD mois 2015-2016" And Feuille.Name <> "TCD mois 2015-2016 (familles)" And Feuille.Name <> "TCD cumul 2015-2016" Then
Feuille.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Feuille.Name & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
End If
Next
End Sub

Voici le message d'erreur au lancement de la macro :
Lien supprimé

Et la partie du code sélectionnée par l'outil VBA :
Lien supprimé

Dans les onglets à exclure, le max de caractères est 29, et pas plus d'une vingtaine dans les onglets à éditer en .pdf.

Merci encore pour toute ton aide !
 

Yurperqod

XLDnaute Occasionnel
Bonjour le forum

Choses à vérifier
1) l'orthographe et le nombre d'espace dans le nom des onglets
2) la présence de caractères interdits dans le nom des onglets (pour nommer un fichier PDF)
2) la validité de Chemin (avec cette macro)
VB:
Sub Macro1()
Dim Chemin As String
Chemin = "C:\Users\Prenom.NOM\Desktop"
'pour le test, pas de \ final mais il faut le laisser dans la macro pour créer les PDF
If Len(Dir(Chemin, vbDirectory)) = 0 Then
MsgBox Chemin & " est invalide", vbCritical
Else
MsgBox Chemin & " est valide", vbInformation
End If
End Sub

Possible aussi de tester de renommer les feuilles à exclure avec des noms simples
exclu1, exclu2, exclu3 et exclu4 pour voir si c'est bien le nom des commerciaux qui crée le bug.
 
Dernière édition:

troopers87

XLDnaute Occasionnel
Bonsoir,

Je n'ai pas mis d'espace, ni de caractère spéciaux (même pas d'accents) par réflexe dans le nom des onglets. Je pense donc, que nous pouvons exclure cette éventualité.
D'autre part, j'ai testé ta macro en ajoutant un \ après Desktop et en enlevant un guillemet avant le C:\ : la msgbox me confirme que l'adresse est correcte.

Je commence à avoir un doute sur la configuration de mon Excel ou de mon PC :
T'est-il possible de tester le fichier dont tu m'as donné un aperçu dans le message #28 en mettant le code suivant adapté à la place : Chemin = "C:\Users\Prenom.NOM\Desktop\"
Si cela fonctionne sans anicroche pour toi, peux-tu me le faire parvenir ? Cela nous permettra de déterminer si le problème est vraiment lié au code ou à un configuration autre.
 

troopers87

XLDnaute Occasionnel
Alleluia ! Eclair de génie ! Je viens de tilter sur le fait que j'avais des feuilles masquées. Je ne pensais pas que cela posait problème, mais dans le doute, je les ai réaffichées : mes 16 pages se sont enregistrées en pdf instantanément.

Problème réglé, donc. J'ose un petit regard languissant dans ta direction pour savoir si il est possible de trouver un système pour me permettre de masquer des feuilles sans planter la macro ?
 

troopers87

XLDnaute Occasionnel
Alleluia ! Eclair de génie ! Je viens de tilter sur le fait que j'avais des feuilles masquées !
Je ne pensais pas que cela posait problème, mais dans le doute, je les ai réaffichées : en lançant ensuite la macro, mes 16 pages se sont instantanément enregistrées en pdf.

Problème réglé, donc. Sauf que J'ose que j'ose un petit regard languissant dans ta direction pour savoir si il est possible de trouver un système pour me permettre de masquer des feuilles sans planter la macro ?
 

troopers87

XLDnaute Occasionnel
Alleluia ! Eclair de génie ! Je viens de tilter sur le fait que j'avais des feuilles masquées !
Je ne pensais pas que cela posait problème, mais dans le doute, je les ai réaffichées : en lançant ensuite la macro, mes 16 pages se sont instantanément enregistrées en pdf.

Problème réglé, donc. Sauf que J'ose que j'ose un petit regard languissant dans ta direction pour savoir si il est possible de trouver un système pour me permettre de masquer des feuilles sans planter la macro ?

Je te remercie d'avance pour ton aide et ta persévérance !
 

Yurperqod

XLDnaute Occasionnel
Bonjour le forum

Pour que la boucle ne prenne en compte que les feuilles visibles
VB:
Sub Test3()
Dim Chemin As String
Dim Feuille As Worksheet
' mettre le nom du dossier où enregistrer les PDF
Chemin = "C:\Users\Prenom.NOM\Desktop\"
For Each Feuille In Worksheets
'Changer avec les noms rééls des feuilles à eclure
If Feuille.Visible Then
If Feuille.Name <> "BD_MagFourArt" And Feuille.Name <> "TCD mois 2015-2016" And Feuille.Name <> "TCD mois 2015-2016 (familles)" And Feuille.Name <> "TCD cumul 2015-2016" Then
Feuille.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Feuille.Name & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
End If
End If
Next
End Sub
 

troopers87

XLDnaute Occasionnel
Super ! Ca fonctionne parfaitement ! Il semble qu'Excel n'apprécie pas trop le Prenom.NOM dans le chemin, donc j'ai laissé l'adresse dans le TEMP et j'ai ajouté une ligne pour ouvrir le dossier cible en question.

Voici le code final fonctionnel :
VB:
Option Explicit
Sub Impression_feuilles_affichees_en_pdf()
Dim Chemin As String
Dim Feuille As Worksheet

Chemin = "C:\TEMP\" ' mettre le nom du dossier où enregistrer les PDF

For Each Feuille In Worksheets
'Changer avec les noms rééls des feuilles à exclure

If Feuille.Visible Then
If Feuille.Name <> "A EXCLURE 1" And Feuille.Name <> "A EXCLURE 2" And Feuille.Name <> "TA EXCLURE 3" Then
Feuille.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Feuille.Name & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
End If
End If
Next

'ouverture du dossier cible
Shell Environ("WINDIR") & "\explorer.exe " & Chemin, vbNormalFocus

End Sub

Merci Yurperqod pour ton aide et bravo pour ce super boulot !
 

Discussions similaires

Statistiques des forums

Discussions
312 336
Messages
2 087 387
Membres
103 532
dernier inscrit
sdfrgthyjuki