XL 2016 Envoi mail VBA avec PJ

Jgral

XLDnaute Nouveau
Bonjour,

Me revoilà avec mon projet et un nouveau problème (au passage merci vous m'aidez énormément !!!)

Mon code fonctionne mais il ne fait pas exactement ce que je souhaite. J'ai deux problèmes majeurs :

- Le premier concerne ce bout de code :

VB:
Private Sub CommandButton9_Click()
    Sheets("Concepteur étude").Range("M2").Replace What:=",", Replacement:="."
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\jgral\Desktop\Photos MALATAVERNE\Etude Technique.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    UserForm6.Show
End Sub

Ici j'enregistre dans un répertoire mais ce dernier n'est présent que sur mon PC et pas sur celui de mes utilisateurs donc fatalement ça ne fonctionne pas sur un autre PC que le mien.

- Le second c'est que ce document que j'enregistre comporte les 4 pages de ma mise en page. Mais je voudrais qu'il ne comporte que les pages ou il y a des choses dessus. Je pensais utiliser un UserForm pour définir les pages a sauvegarder mais je n'ai aucune idée de comment le faire.

Voilà je vous met en PJ le fichier en espérant qu'une fois encore vous allez pouvoir m'aider.

Merci d'avance.
 

Pièces jointes

  • Concepteur d'étude VERSION TRAVAIL.xlsm
    793.8 KB · Affichages: 4
Solution
Quant à la page vide c'est une page qui ne contient rien. Pas de forme, pas de zone de texte, pas d'images rien a part le texte "page X"
Alors voyez le fichier (2) joint et cette macro :
VB:
Private Sub CommandButton9_Click()
Dim fichier$, r As Range, o As Object, x$
fichier = ThisWorkbook.Path & "\Etude Technique.pdf"
For Each r In [C3:O51,C53:O101,C103:O151,C153:O201].Areas
    For Each o In Me.DrawingObjects
        If Not Intersect(o.TopLeftCell, r) Is Nothing Then x = x & "," & r.Address: Exit For
Next o, r
If x = "" And Dir(fichier) <> "" Then Kill fichier 'RAZ
If x = "" Then Exit Sub
With Me.PageSetup
    .Orientation = xlLandscape
    .PrintTitleRows = ""
    .PrintArea = Mid(x, 2)
    .Zoom = False
    .FitToPagesWide = 1...

job75

XLDnaute Barbatruc
Bonsoir Jgral,

Pour le 1er problème il suffit d'indiquer le chemin d'accès du dossier en utilisant ThisWorkbook.Path.

Pour le 2ème problème quel critère permet de savoir qu'une des 4 pages est vide ? J'ai cru comprendre qu'il pouvait y avoir des objets...

A+
 

Jgral

XLDnaute Nouveau
Merci de votre réponse .

Pour le 1er problème :

Comment utilise t-on cela car je ne vois pas comment l'intégrer dans cette ligne :

VB:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\jgral\Desktop\Photos MALATAVERNE\Etude Technique.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Je dois le déclarer comment ?

Code:
Dim Adresse As Character

Pour le second problème je pense mettre un userform pour que l’utilisateur puisse par définir la dernière page à imprimer. Un peu comme sur les logisciels standard mais comme je le disais je ne vois pas du tout comment faire.
 

job75

XLDnaute Barbatruc
Par exemple pour le 1er problème :
VB:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\Photos MALATAVERNE\Etude Technique.pdf", Q
Pour le second vous n'avez pas répondu à ma question, pourtant très précise.
 

job75

XLDnaute Barbatruc
Bonjour Jgral, le forum,

En attendant voyez le fichier joint et cette macro qui permet d'imprimer en PDF les 4 pages :
VB:
Private Sub CommandButton9_Click()
Dim chemin$
chemin = ThisWorkbook.Path & "\Photos MALATAVERNE\"
If Dir(chemin, vbDirectory) = "" Then MkDir chemin
Range("M2").Replace What:=",", Replacement:="." 'ça rime à quoi ???
With Me.PageSetup
    .Orientation = xlLandscape
    .PrintTitleRows = ""
    .PrintArea = "C3:O51,C53:O101,C103:O151,C153:O201"
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = 1
End With
Me.ExportAsFixedFormat xlTypePDF, chemin & "Etude Technique.pdf"
UserForm6.Show
End Sub
Je l'adapterai quand vous nous aurez dit ce qu'est une page vide.

Bon week-end.
 

Pièces jointes

  • Concepteur d'étude VERSION TRAVAIL(1).xlsm
    802.5 KB · Affichages: 4
Dernière édition:

Jgral

XLDnaute Nouveau
Bonjour et merci pour votre retour.

J'ai testé votre code ci-dessus en le modifiant légèrement :

VB:
Private Sub CommandButton9_Click()
Dim chemin$
chemin = ThisWorkbook.Path
If Dir(chemin, vbDirectory) = "" Then MkDir chemin
With Me.PageSetup
    .Orientation = xlLandscape
    .PrintTitleRows = ""
    .PrintArea = "C3:O51,C53:O101,C103:O151,C153:O201"
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = 1
End With
Me.ExportAsFixedFormat xlTypePDF, chemin & "Etude Technique.pdf"
UserForm6.Show
End Sub

Mais ça ne fonctionne pas lorsque le fichier Excel et sur le bureau vous avez une idée du pourquoi ?

Quant à la page vide c'est une page qui ne contient rien. Pas de forme, pas de zone de texte, pas d'images rien a part le texte "page X"
 

job75

XLDnaute Barbatruc
Quant à la page vide c'est une page qui ne contient rien. Pas de forme, pas de zone de texte, pas d'images rien a part le texte "page X"
Alors voyez le fichier (2) joint et cette macro :
VB:
Private Sub CommandButton9_Click()
Dim fichier$, r As Range, o As Object, x$
fichier = ThisWorkbook.Path & "\Etude Technique.pdf"
For Each r In [C3:O51,C53:O101,C103:O151,C153:O201].Areas
    For Each o In Me.DrawingObjects
        If Not Intersect(o.TopLeftCell, r) Is Nothing Then x = x & "," & r.Address: Exit For
Next o, r
If x = "" And Dir(fichier) <> "" Then Kill fichier 'RAZ
If x = "" Then Exit Sub
With Me.PageSetup
    .Orientation = xlLandscape
    .PrintTitleRows = ""
    .PrintArea = Mid(x, 2)
    .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = 1
End With
Me.ExportAsFixedFormat xlTypePDF, fichier
UserForm6.Show
End Sub
 

Pièces jointes

  • Concepteur d'étude VERSION TRAVAIL(2).xlsm
    803.9 KB · Affichages: 4

Discussions similaires

Réponses
1
Affichages
1 K
Compte Supprimé 979
C

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972