Evolution tableau

Bonjour Andre,

Je crois qu'on a déjà essayé de la sorte. En fait, je pense qu'on rencontre un problème au niveau de l'instanciation d'Outlook. Il faut gérer s'il est ouvert ou non.

J'espère que votre solution fonctionnera.

Sinon, Laurent, j'ai fait un nouvel essai en me basant sur un code trouvé sur un autre forum.

Re bonjour André13

en accord avec 3GB pouvez vous testé le fichier ci joint pour voir si vous voyez le problème et si vous pouvez y remédier

je vous remercies par avance

Tiens Laurent, un 2ème essai à tester en attendant le retour d'André.

j'ai essayé le nouveau fichier ...

ça a ouvert outlook mais j'ai un nouveau code erreur voir photo

capture d ecran 47

Ah bah, c'est mieux. C'était quel fichier ?

Le même fichier, avec la solution d'André.

oui carrément

ça donne exactement la même chose ...

ouverture outlook et même code d'erreur

autant pour moi ..

je me suis planté avec les versions

pas d'ouverture outlook voir photo code d'erreur

capture d ecran 48

Alors, j'ai un nouvel essai à te proposer.

Au préalable, ce serait bien de fermer Outlook. Et de mettre un point d'arrêt à PJ_RECAP puis de passer au pas à pas à partir de cette ligne (via F8).

J'aimerais savoir si ObjOutlook vaut Nothing et idem pour ObjMail.

capture d ecran 51 capture d ecran 52

Re, bonjour toutes et tous

un petit Error on Resume Next à mettre avec prudence pour le code Mailing

et CreateObjet au lieu de GetObject

une apostrophe ' ' devant le Set

'Set ObjOutlook = GetObject(, "Outlook.Application") 'vérification si Outlook est ouvert

Je n'ai plus ces 2 erreurs citées ci-dessus

Question : Est ce que c'est ce que vous souhaitez : si l’application Outlook est ouverte alors,.Outlook s'ouvre avec le(s) destinataire(s), le corps du message etc .etc. ?

@ tester

Option Base 1
Public CheminRECAP$
Public CheminJL$

Sub ArreteStockJournalier()

Sheets("ETAT").Activate
Sheets("ETAT").Calculate

Call EditionJL
Call EditionRECAP
Call Reinitialisation
If MsgBox("L'édition du dernier stock connu a été réalisé avec Succès !" & vbCrLf & _
"Le fichier a bien été réinitialisé !" & vbCrLf & vbCrLf & "Voulez-vous envoyer les informations par mail ?", vbYesNo) = vbYes Then
    Call EnvoiMail
Else: MsgBox "Procédure achevée sans envoi de mail"
End If

End Sub

Sub EditionJL()

Dim Dossier$, Horodatage$, NomFichier$, Extension$

Dossier = ThisWorkbook.Path 'r_pertoire courant o sera cr__ le fichier PDF
Horodatage = WorksheetFunction.Text(Now, "YYYYMMDD-HHMM") 'avec les heures et minutes
NomFichier = "Journal des stocks " & Horodatage
Extension = ".pdf"
CheminJL = Dossier & "\" & NomFichier & Extension

Sheets("JOURNAL").ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminJL, IgnorePrintAreas:=False

End Sub

Sub EditionRECAP()

Dim Dossier$, Horodatage$, NomFichier$, Extension$

Dossier = ThisWorkbook.Path 'r_pertoire courant o sera cr__ le fichier PDF
Horodatage = WorksheetFunction.Text(Now, "YYYYMMDD-HHMM") 'avec les heures et minutes
NomFichier = "Recap stock " & Horodatage
Extension = ".pdf"
CheminRECAP = Dossier & "\" & NomFichier & Extension

Sheets("ETAT").ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminRECAP, IgnorePrintAreas:=False

End Sub

Sub Reinitialisation()

Dim Tampon()
Dim NBL%

NBL = Range("RECAP").Rows.Count
ReDim Tampon(NBL)

Call Unprotection(Sheets("ETAT"))
Call Unprotection(Sheets("JOURNAL"))

Tampon = Range("RECAP[STOCK FINAL]")
'Sheets("ETAT").Activate
Range("RECAP[STOCK CAVE]").Value = Tampon
'Sheets("JOURNAL").Activate
Range("Journal[[DATE MOUVEMENT]:[SORTIES]]").ClearContents

Call Protection(Sheets("ETAT"))
Call Protection(Sheets("JOURNAL"))

End Sub

Sub EnvoiMail()

Dim ObjOutlook As Object 'variable Outlook
Dim ObjMail As Object 'variable mail d'outlook
Dim PJ_RECAP$, PJ_JOURNAL$ 'variables : chemins des PJ ˆ ajouter
Dim LigneD$, Ligne1$, Ligne2$, Ligne3$, LigneF$, contenu$ 'variables pour contenu du mail
Dim AlertePJ$

'---------------------------------------------------------
'-----RECUPERATION DES CHEMINS COMPLETS DES PJ A IMPRIMER (EDITEES A L'INSTANT, AVANT LA REINITIALISATION DU FICHIER)

If MsgBox("Voulez-vous joindre automatiquement le dernier état édité ?" & vbCrLf & vbCrLf & _
"Sinon, pour sélectionner vous-même un fichier, cliquez sur NON.", vbYesNo) = vbYes Then
    PJ_RECAP = CheminRECAP
    'PJ_JOURNAL = CheminJL
    If PJ_RECAP = "" Then AlertePJ = "Attention, détection de PJ manquante(s) !" 'Or PJ_JOURNAL = "" Then GoTo SiErreur
'-----Alternative pour envoyer les PJ d'aprs une sŽlection manuelle
Else:
    PJ_RECAP = Application.GetOpenFilename("Fichier pdf (*.pdf), *.pdf") 'pour les pdf
    'PJ_JOURNAL = Application.GetOpenFilename("Fichier pdf (*.pdf), *.pdf") 'pour les pdf
    If PJ_RECAP = "Faux" Then AlertePJ = "Attention, détection de PJ manquante(s) !"  'Or PJ_JOURNAL = "Faux" Then GoTo SiErreur
End If

'On Error GoTo SiErreur
'---------------------------------------------------------
'-----INITIALISATION D'OUTLOOK - INSTANCIATION

'Set ObjOutlook = GetObject(, "Outlook.Application") 'vérification si Outlook est ouvert

If ObjOutlook Is Nothing Then 'si Outlook n'est pas ouvert, une instance est ouverte
    Shell "Outlook.exe", vbNormalFocus  'vbHide
    Set ObjOutlook = CreateObject("Outlook.Application")
End If

Set ObjMail = ObjOutlook.CreateItem(0)

'---------------------------------------------------------
'-----CONTENU DU MAIL

LigneD = Range("LigneDebut").Value & Chr(10) & Chr(10) 'les caracteres Chr indique un saut de ligne'
Ligne1 = Range("Ligne1").Value
Ligne2 = Range("Ligne2").Value
Ligne3 = Range("Ligne3").Value
LigneF = Chr(10) & Chr(10) & Range("LigneFin").Value & Chr(10) & Chr(10)
contenu = LigneD & Ligne1 & Ligne2 & Ligne3 & LigneF

'---------------------------------------------------------
'-----CARACTERISTIQUES DU MAIL

      With ObjMail
      On Error Resume Next
        .To = Range("Destinataire").Value 'Destinataire
        If Range("DestinataireCC").Value <> "" Then .Cc = Range("DestinataireCC").Value 'Destinataire copie
        If Range("DestinataireCCI").Value <> "" Then .Cci = Range("DestinataireCCI").Value 'Destinataire de copie invisible pour confirmation d'envoi (= Email de l'expŽditeur)
        .Subject = Range("ObjetMail").Value 'Objet
        .Body = contenu 'Corps
        If PJ_RECAP <> "" Then .Attachments.Add PJ_RECAP 'Ajout de la piece jointe (dernier recap des stock)
        'If PJ_JOURNAL <> "" Then.Attachments.Add PJ_JOURNAL 'Ajout PJ du dernier journal
        .Display  'Permet d'effectuer une vŽrification (cette ligne peut tre laissŽe en commentaire)
        .Send 'Envoi
    End With

'---------------------------------------------------------
'-----FERMETURE OUTLOOK ET LIBERATION DES VARIABLES OBJET - FIN DE PROCEDURE

    ObjOutlook.Quit
    If Not ObjMail Is Nothing Then Set ObjMail = Nothing
    If Not ObjOutlook Is Nothing Then Set ObjOutlook = Nothing
    MsgBox "Votre mail a bien été envoyé" & vcbrlf & vcbrlf & AlertePJ
Exit Sub

SiErreur: 'Fin alternative si une erreur s'est produite durant la procŽdure
    ObjOutlook.Quit
    If Not ObjMail Is Nothing Then Set ObjMail = Nothing
    If Not ObjOutlook Is Nothing Then Set ObjOutlook = Nothing
    MsgBox "Échec de l'envoi du mail"

End Sub

Re bonjour André13

je viens d'essayé le fichier cela progresse

en fait je souhaiterai qu'excel provoque l'ouverture d'outlook et que le fichier s'envoi automatiquement au(x) destinataire(s) avec le message suivant : Bonjour, Veuillez trouver ci-joint l'inventaire de la cave cordialement

j’espère avoir été assez clair

merci

Salut Laurent,

Alors qu'est-ce que ça donne maintenant ? Est-ce que ça marche ?

Je voulais te dire que j'ai à nouveau regardé le code et qu'il y a un petit changement à faire à l'avant-dernier msgbox de la macro EnvoiMail. Il faut remplacer les 2 vcbrlf par VbCrLf.

Bonjour 3Gb

cela progresse mais pas encore comme je le souhaiterai...

ok mais sur quel fichier ?

si tu as le fichier sur lequel tu travailles je suis preneur car je préfère être sur de ce que je modifie ...

merci

Sur le dernier que je t'ai envoyé, le essai3. Je n'ai pas retouché mes fichiers pour l'instant parce que tu as dû faire des modifications sur les tiens. Donc autant ne pas renvoyer une version moins bien.

Ca progresse ? Le mail s'envoie ou pas encore ?

Parce que, sinon, ce que je vais faire, c'est que je vais aller regarder ta première version et mettre la partie qui nous intéresse dans le fichier à jour, ce sera plus simple comme ça.

non pas d'envoi

capture d ecran 57

je doit cliquer sur annuler et après rentrer les adresses et envoyer ...donc pas tout automatique

je pense q"il ne manque pas grand chose ( peut être le lien entre la feuille " Parametrer Mail " et outlook !?

voir plutôt avec cette version ( la dernière que tu m'as envoyé ) 0gestion-stocks-ajouter-essai2.xlsm

Si Outlook se lance, c'est déjà super. On peut dire que le problème est réglé.

Avant que je regarde le fichier, est-ce que tu peux essayer en passant la ligne .Display en commentaire (dans EnvoiMail), en ajoutant une apostrophe devant.

alors j'ai mis l' apostrophe a la ligne Display ...résultat outlook c 'est ouvert et refermer immédiatement et dans excel j'ai eu le message votre mail a été envoyer

mais j'ai rien reçu

Alors, mail envoyé, c'est très bien. Est-ce que tu le vois dans tes messages envoyés ?

Je vais regarder le fichier pour voir. Peut-être que le mail du destinataire est mal saisi...

Rechercher des sujets similaires à "evolution tableau"