Envoyer plusieurs feuilles masquee par mail
Bonjour, je veux pouvoir envoyer des feuilles qui sont masquer par mail en appuyant sur un bouton dans mon userform
les feuilles masquées que je voudrais envoyer sont : Feuil1 ; Feuil2 et Feuil3
voici le code que j'ai, mais il me permet seulement d'envoyer la feuille non masquée qui est ma feuille LOGIN
Private Sub CommandButton6_Click()
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim OutApp As Object
Dim OutMail As Object
Dim S As Shape
Dim sNomFic As String, sRep As String, WshShell As Object
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
' Créer une instance Windows Script pour retrouver le chemin du bureau
Set WshShell = CreateObject("WScript.Shell")
sRep = WshShell.SpecialFolders("Desktop")
Set WshShell = Nothing
' Définit le nom du fichier à enregistrer
sNomFic = "FICHE DE STOCK.pdf"
' Enregistrer la feuille en PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sRep & "\" & sNomFic, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Set OutApp = CreateObject("outlook.application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "xxxxxxx@icloud.com"
.Cc = ""
.Attachments.Add (sRep & "\" & sNomFic)
.Subject = "FICHE DE STOCK"
.Send
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
Kill (sRep & "\" & sNomFic)
End SubMerci de bien vouloir m'aider, si possible aussi, j'aimerais qu'on m'affiche une boite de dialogue ou je pourrai choisir la feuille que je veux envoyer (dans le cas ou je veux seulement envoyer une ou deux feuilles)
Bonjour DorelD,
Il serait bien de joindre ton fichier pour plus de facilité
Sinon voici le mien avec tout ce qu'il faut et testé
@+
Bonjour voici mon fichier joint.
le code d'acces est 0 mot de pass 0
j'ai essayé votre code mais il y a eu une erreur
j'attend votre retour
Merci mais j'ai un soucis, dans le premier code il envoyait directement sans que outlook ne s'affiche,
ici le outlook s'affiche (chose que je ne veux pas) et en plus de cela on me sort un message d'erreur : 440 (impossible d'envoyer cet element, car une boite de dialogue modale est ouverte dans outlook
quand je fais deblogage on me met l'erreur a la ligne de
OutMail.Sendj'ai bricolé ce code et il envoi la feuille (mais une seule)
je veux pouvoir selectionner et envoyer les feuilles
Merci
Private Sub CommandButton6_Click()
Dim Ind As Integer, NbFeuil As Integer
Dim sNomFic As String, sRep As String
Dim TabFeuil() As String
Dim WshShell As Object
Dim Sht As Worksheet
Dim OutApp As Object, OutMail As Object
'
' Demander quelle feuille
UsF_ChoixImp.Show
'
' Vérifier si au moins 1 feuille a été selectionnée, sinon on sort
If ListeFeuilSel = "" Then Exit Sub
'
' Définir le tableau des feuilles
TabFeuil = Split(ListeFeuilSel, ",")
' Nombre de feuille sélectionnées
NbFeuil = UBound(TabFeuil)
'
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
' Créer une instance Windows Script pour retrouver le chemin du bureau
Set WshShell = CreateObject("WScript.Shell")
sRep = WshShell.SpecialFolders("Desktop")
Set WshShell = Nothing
' Ensuite il faut générer les feuilles
' Pour chaque feuille
For Ind = 0 To NbFeuil
With Sheets(TabFeuil(Ind))
' Afficher la feuille
.Visible = xlSheetVisible
' Nom de la feuille comme nom de fichier
sNomFic = .Name & ".pdf"
' L'exporter au format PDF
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sRep & "\" & sNomFic, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
' Masquer la feuille
.Visible = xlSheetHidden
End With
' Attacher la feuille au mail
Set OutApp = CreateObject("outlook.application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "djidji.dorel@icloud.com"
.Cc = ""
.Attachments.Add (sRep & "\" & sNomFic)
.Subject = "FICHE DE STOCK"
.Send
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
Kill (sRep & "\" & sNomFic)
Next Ind
' Réactiver l'écran et les évènements
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
MsgBox ("ENVOYE")
End SubRe,
Merci mais j'ai un soucis, dans le premier code il envoyait directement sans que outlook ne s'affiche,
ici le outlook s'affiche (chose que je ne veux pas) et en plus de cela on me sort un message d'erreur : 440 (impossible d'envoyer cet element, car une boite de dialogue modale est ouverte dans outlook
quand je fais deblogage on me met l'erreur a la ligne de
OutMail.Send
Je l'ai indiqué dans le code
J'affiche Outlook pour la signature si tu en as une, maintenant si tu ne veux pas, il suffit de supprimer
OutMail.DisplayMaintenant si tu ne veux pas de mon code, je te laisse te débrouiller, d'autres répondront
Oups Oups Bruno, je suis vraiment désolé
je n'avais pas fais attention
Grand merci a toi
je suis vraiment désolé aussi, jespere aussi que tu continuera a m'aider.
Je suis vraiment désolé