Automatiser l'envoi d'une feuille

Bonjour,

Dans la série les boulets d'incrustent :

L'outil Excel sur lequel je travaille actuellement doit être utilisé sur 3 sites géographiques et je dois récupérer certaines données pour les tableaux de synthèse.

Afin de sécuriser la collecte des résultats statistiques, je souhaiterais créer une fonction qui envoie automatiquement une page sur une adresse messagerie. Cet envoi doit pouvoir se faire dans un premier temps à chaque calcul F9 de la page et quand le système sera bien rodé tous les 15 et dernier jours du mois.

J'ai essayé d'affecter une macro à un bouton dans la page en question mais apparamment la programmation automatique ne reconnait pas ou ne mémorise pas la ligne de menu envoyer vers.

En résumé, ma question est : Comment commander l'ouverture d'Outlook en programmation de macro automatique ?

Petite précision, quand on parle d'installer du code, je ne sais même pas où ni comment

Par avance merci

Salut le forum

Pour envoyer la feuille active par E-mail (Code de Kiki29 à mettre dans un module standard)

Option Explicit

Sub Tst()
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim Temp As String
Dim CdoMessage As Object
Dim Fichier As String

    Set Sourcewb = ActiveWorkbook
    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook

    Temp = ThisWorkbook.Path & Application.PathSeparator & "Toto.xls"

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With

    Destwb.SaveAs Temp
    Fichier = Destwb.Path & Application.PathSeparator & Destwb.Name
    Destwb.Close
    Application.DisplayAlerts = True

    Set CdoMessage = CreateObject("CDO.Message")
    With CdoMessage
        .Subject = "Exemple"
        .From = "xxxxx@wanadoo.fr"
        .To = "yyyyy@hotmail.fr"
        .CC = ""
        .BCC = ""
        .TextBody = "Texte dans le corps de message"
        .AddAttachment Fichier
        .Send
    End With

    Application.ScreenUpdating = True

    Set CdoMessage = Nothing
    Kill Fichier
End Sub

J'ai testé seulement sous Excel 2003 avec Outlook Express 6

  • Dès que votre problème est résolu, merci de le marquer en tant que [Résolu]
    grâce à l'utilitaire se trouvant en bas de page, aperçu :

Mytå

Oui mais si je décrypte bien votre code, il faut renseigner l'adresse mail de l'expéditeur.

Or mon outil doit pouvoir être utilisé par un grand nombre de personnes indifférement, ce qui empêche d'installer une liste d'utilisateurs.

J'ai essayé ça

https://www.excel-pratique.com/~files/doc/module_envoi_mail_automatique.xls

mais pour une raison que j'ignore, cela ne fonctionne pas sans pour autant donner de message d'erreur.

L'adresse mail que j'ai installé dans la cellule B10 du document fonctionne bien.

Si vous touvez le défaut ...

Le code de base:

J'y suis parvenue comme suis:

Private Sub CommandButton1_Click()
'Crée une copie de la feuille active dans un nouveau classeur.
  Activesheet.select
   With ActiveSheet
    Cells.Select
    Range("X14").Activate
    Selection.Copy
    Workbooks.Add
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
   End With
  'Sauvegarde se nouveau classeur sous le nom désiré dans le dossier désiré.
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Program Files\EnvoisEmail.xls", _
        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
  'Ferme se classeur  
        Windows("EnvoisEmail.xls").Close
    Range("A1").Select

Dim Dest, Sujt, Msg As String
Dim TheFile
'Envois se classeur par mail, l'adresse du destinateur est dans la cellule A1
TheFile = "C:\Program Files\EnvoisEmail.xls"
Dest = Range("A1").Text
Sujt = "Le titre de votre mail"
Msg = "Bonjour ," & vbCrLf & vbCrLf & "Voici un test d'envois de email. une piece jointe est censé y être attaché. " & vbCrLf & vbCrLf & "Merci d'avoir pris le temps de lire se test." & vbCrLf & vbCrLf & "L'équipe testun"
Shell "C:\Program Files\Outlook Express\msimn.exe " & _
"/mailurl:mailto:" & Dest & "?subject=" & Sujt & "&Body=" & Msg & ""
SendKeys "%I" & "p" & TheFile & "~" & "%s"

    Application.DisplayAlerts = True

  Application.ScreenUpdating = True

Else
    MsgBox "Aucune fiche ne correspond à la recherche"
End If
End Sub

Oups ! Je crains de manquer un peu de lucidité à cette heure-ci pour tenter de tout comprendre .

Je reprendrai cela à tête reposée demain.

En tout cas merci pour cette rapidité.

Re le forum

Tu n'avais qu'à enlever cette ligne

.From = "xxxxx@wanadoo.fr"

pour ne pas avoir le destinataire en dur.

Mytå

Je n'y ai pas pensé

Pour l'autre, ça ne marche pas mais je pense que l'adresse pour trouver mon Outlook ne convient pas.

Il se trouve dans un répertoire ...\...\Office quelque chose. Faut que je cherche.

Pour le fichier temporaire, est-il possible de l'installer dans le classeur même ou dans un répertoire ordinaire ou même directement au bureau ?

Je sais, je suis compliquée mais je travaille en réseau et tout est verrouillé et contrôlé. Tant et si bien que je sais absolument pas où trouver le répertoire EnvoiMails ou similaire.

Bonjour le forum, Myta et ChatNoir

Le problème avec l'enregistrement sur le bureau est que l'adresse du bureau change tout dépendant de sur qu'elle session l'adresse est ouvert, tant disque program files ne change jamais. Il te faut un dossier qui ne change jamais d'adresse.

Tu peux mettre l'adresse par default d'enregistrement d'excel par contre:

C:\Documents and Settings\Owner\Application Data\Microsoft\Excel\ (Je crois qu'elle ne change jamais mais c'est a vérifier.

Et envoismail n'est pas un répertoire, c'est le nom du fichier .xls créé. envoismail.xls

A chaque fois que tu envois se mail, il écrase le fichier en réenregistrant avec le même nom.

Pour l'adresse de ton outlook express, je ne peux pas t'aider, normalement elle ne change pas mais ... tu peux utiliser la fonction recherche sur ton ordinateur avec le terme msimn.exe

Et pour finir, tu peux supprimer MsgBox "Aucune fiche ne correspond à la recherche"

un oublis de ma part, qui sert a ma macro seulement.

Voila

P.S. Myta, ta commande ne demande pas l'activation d'une référenceVBAproject ?

Re le forum

Bon, il vient de dire qu'il travaille en réseau, fallait le dire au début ChatNoir.

Je déteste travailler pour rien.

Je passe la main aux experts

Mytå

Bonsoir,

J'ai finalement renoncé à cette solution pour le moment. Trop compliqué à mettre en oeuvre.

Merci à vous

Rechercher des sujets similaires à "automatiser envoi feuille"