IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[E-03]Sauvegarde+Envoi mail avec piece jointe


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut [E-03]Sauvegarde+Envoi mail avec piece jointe
    Bonjour à tous

    Je suis à la recherche d'une macro qui permettrait lorsque je clique sur un bouton de :

    - Sauvegarder le classeur actif dans les fichiers temporaires avec un nom formaté faisant appel à des valeurs de textbox+date du jour de mon onglet
    - Fermer ce classeur excel (sans fermer excel au cas où la personne a d'autres classeurs ouverts)
    - Ouvrir mon client de messagerie par défaut (actuellement Notes et dans quelques mois Outlook)
    - Créer un mail avec destinataire, sujet, corps sur plusieurs lignes et pièce jointe créée précédemment mais sans envoi automatique (que la personne voit son mail avant de partir)

    J'ai besoin d'envoyer ce classeur à des responsables de service pour l'arrivée de nouvelles personnes (feuille de mouvement) afin qu'ils remplissent les éléments manquants et me renvoi le mail à une adresse spécifique.

    Je ne suis pas un pro en VBA et ne trouve pas chaussure à mon pied avec les nombreux exemples des forums.
    Je suis grandement PAUME

    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    Oulah pour faire tout ça t'es pas sorti de l'auberge...

    Alors:
    - Sauvegarder le classeur actif dans les fichiers temporaires avec un nom formaté faisant appel à des valeurs de textbox+date du jour de mon onglet:
    je comprends pas très bien: tu as mis un textbox dans ta feuille de calcul?!
    si c'est ça je n'en vois pas l'intérêt.
    D'une manière plus générale, fais un "Enregistrer Sous" avec l'enregistreur de macros, et adapte le code qu'il te donne au niveau du chemin d'enregistrement.

    - Sauvegarder le classeur actif dans les fichiers temporaires avec un nom formaté faisant appel à des valeurs de textbox+date du jour de mon onglet:
    même remarque: là encore tu auras besoin de l'enregistreur, et là tu n'auras même pas besoin d'adapter le code. Ceci dit, je te conseille de placer ta macro dans un classeur extérieur.

    - Ouvrir mon client de messagerie par défaut (actuellement Notes et dans quelques mois Outlook):
    Ceci ne sera pas du tout une partie de plaisir. Il faut déjà que tu arrives à récupérer la variable qui définit quel est ton client de messagerie par défaut (ça je ne sais pas faire, mais à mon avis tu as des tutos ou des FAQ qui peuvent t'aider), ensuite il faut que tu insère la librairie associée à ton client de messagerie, et pour terminer tu crées un objet application à l'aide de CreateObject. Si tu veux afficher ton application à l'écran, donne-lui le focus.

    - Créer un mail avec destinataire, sujet, corps sur plusieurs lignes et pièce jointe créée précédemment mais sans envoi automatique (que la personne voit son mail avant de partir):
    Là tout dépend de ton client. Mais globalement, à l'aide là encore de tutos, de FAQ, mais aussi de l'explorateur d'objets et pourquoi pas de l'aide en ligne de tes clients de messagerie, tu devrais pouvoir trouver ton bonheur. Pour Outlook, tu pourras demander de l'aide sur le forum "VBA" de Outlook.


    Bref, va falloir que tu maîtrises un minimum VBA (et un minimum qui est pas très bas) si tu veux y arriver. Il faut que tu sois capable de déterminer avec précision quel genre d'outils tu vas utiliser.
    Après, je ne sais pas quel est ton niveau, mais tout ce que je peux dire, c'est qu'il faut maîtriser dans l'ordre:
    -la manipulation d'objets
    -la manipulation des objets Excel
    -l'explorateur d'objets
    -l'ajout de références au projet VBA
    -l'ouverture d'applications à partir du projet
    -la recherche des objets de contrôle de l'application nécessaires à ton projet
    -et pour terminer leur manipulation

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut
    Oulalalalalalala

    Je viens de vomir après avoir tu réponse
    Je suis très gourmand mais avec de l'aide et de l'huile de coude, je pense que cela ne doit pas être impossible.
    Je commence dans le VBA et j'essaye de comprendre et apprendre pour réutiliser/adapter du code.

    Pas facile du tout pour un novice.

    En fait :
    - Sauvegarder le classeur actif dans les fichiers temporaires avec un nom formaté faisant appel à des valeurs de textbox+date du jour de mon onglet:
    je comprends pas très bien: tu as mis un textbox dans ta feuille de calcul?!
    si c'est ça je n'en vois pas l'intérêt.
    D'une manière plus générale, fais un "Enregistrer Sous" avec l'enregistreur de macros, et adapte le code qu'il te donne au niveau du chemin d'enregistrement.
    Je souhaiterais automatiser sans action du responsable de service.
    J'ai effectivement des textbox qui doivent être remplies par le responsable de service. Je souhaiterais à l'enregistrement que le doc soit sauvegardé en fonction de ces textbox.
    textbox1 = valeur1 (nom nouvelle arrivée)
    textbox2 = valeur2 (prénom nouvelle arrivée)
    date = today

    donc nom du doc Mouvement-valeur1.valeur2-20081020.xls

    - Sauvegarder le classeur actif dans les fichiers temporaires avec un nom formaté faisant appel à des valeurs de textbox+date du jour de mon onglet:
    même remarque: là encore tu auras besoin de l'enregistreur, et là tu n'auras même pas besoin d'adapter le code. Ceci dit, je te conseille de placer ta macro dans un classeur extérieur.
    Même combat, je souhaiterais automatiser sans action du responsable de service.

    - Ouvrir mon client de messagerie par défaut (actuellement Notes et dans quelques mois Outlook):
    Ceci ne sera pas du tout une partie de plaisir. Il faut déjà que tu arrives à récupérer la variable qui définit quel est ton client de messagerie par défaut (ça je ne sais pas faire, mais à mon avis tu as des tutos ou des FAQ qui peuvent t'aider), ensuite il faut que tu insère la librairie associée à ton client de messagerie, et pour terminer tu crées un objet application à l'aide de CreateObject. Si tu veux afficher ton application à l'écran, donne-lui le focus.
    Je ne suis pas un pro mais j'ai pu voir que le sendmail pouvait le faire avec des ajouts (vu dans les exemples). IL est clair que cela demande un minimum d'adaptation à mes besoins.

    En tout cas, toute aide sera la bienvenue dans mon projet que je dois réaliser assez rapidement (c'est toujours comme cela de toutes les façons).

    Merci par avance à ceux qui pourront me guider

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    Automatiser, c'est un bien grand mot qui à la fois veut tout dire et ne rien dire. (faut que je me note cette phrase quelque part ça sonne bien)

    Ce que je veux dire, c'est: quand veux-tu que l'enregistrement/fermeture soit automatique?

    Serait-il possible d'avoir un classeur de support pour comprendre ce que tu veux? Car je ne comprends toujours pas cette histoire de textbox...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut
    Re

    J'ai un bouton Vérifier/envoyer qui me permet de checker les textbox nécessaires (si pas remplies alors message d'alerte) et d'envoyer par mail (enfin comme je souhaiterais) :


    Dans l'image d'exemple, le contenu de la textbox Prénom : sera utilisé pour formater le nom du document à l'enregistrement.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    C'est bien ce que je pensais: les textbox sont inutiles et sont juste là pour faire beau...

    Si je comprends bien, ton souci dans un premier temps c'est que tu ne sais pas comment donner un nom au fichier à enregistrer?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut
    Salut

    Elles sont pas là pour faire beau mais pour être renseignées.
    Ces valeurs, que le responsable de service va renseigner, vont incrémenter un autre onglet afin que la hotline puisse effectuer un copier/coller de toutes les valeurs et les coller dans un logiciel helpdesk. Cela pour ne pas avoir à se retaper toutes les saisies.


  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    Ce que je voulais dire, c'est que ça ne sert à rien de mettre des textbox sur une feuille excel si c'est pour faire la même chose qu'avec des cellules.

    Sinon, heu... tu as envisagé les formules Excel pour déclarer les cases de ton autre onglet comma étant égales au contenu de cellules à la place de tes textbox? Ca serait beaucoup plus simple et tu n'aurais même pas de code VBA à taper.

    Une dernière fois: sur quel point cale-tu en premier? Parce que j'ai beau lire et relire, je ne comprends pas où est ton premier obstacle...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut
    C'est vrai que les cellules sont plus pratiques mais il y a des conditions dans ce fichier (en fonction des sélections) qui font apparaitre ou non d'autres contrôles.

    Mon premier point à régler est le nom du fichier que je devrais ensuite réutiliser pour l'envoi par mail. le but étant de sauvegarder avec un nom formaté dans le user_temp et d'envoyer ce fichier renommé en pièce jointe.

    Pas facile tout cela

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    Citation Envoyé par lafafmentvotre Voir le message
    C'est vrai que les cellules sont plus pratiques mais il y a des conditions dans ce fichier (en fonction des sélections) qui font apparaitre ou non d'autres contrôles.
    C'est toujours possible en jouant avec la protection des feuilles, le verrouillage des cellules et l'événement Worksheet_Change.
    Comme quoi ton problème trouvera toujours solution avec des cellules, que ce soit des fonctions Excel ou du code VBA qui y soit associé.

    Je terminerai de te répondre tout à l'heure: je dois quitter le taf.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2005
    Messages : 218
    Points : 84
    Points
    84
    Par défaut
    Hello decondelite

    J'ai un peu avancé et ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub Button_Send_Click()
    Dim Message_Alerte As String
    'Dim save_temp_job As Object
    Dim temp_Name As String
    Dim temp_Path As String
    Dim name As String
    If col_nom = "" Then Message_Alerte = "- Nom Collaborateur" & vbCrLf
    If col_prenom = "" Then Message_Alerte = Message_Alerte & "- Prénom Collaborateur" & vbCrLf
    If col_societe = "" Then Message_Alerte = Message_Alerte & "- Société Collaborateur" & vbCrLf
    If col_lieu = "" Then Message_Alerte = Message_Alerte & "- Lieu de travail Collaborateur" & vbCrLf
    If col_titre = "" Then Message_Alerte = Message_Alerte & "- Titre Collaborateur" & vbCrLf
    If col_bureau = "" Then Message_Alerte = Message_Alerte & "- Bureau Collaborateur" & vbCrLf
    If col_service = "" Then Message_Alerte = Message_Alerte & "- Service Collaborateur" & vbCrLf
    If col_service = "" Then Message_Alerte = Message_Alerte & "- Service Collaborateur" & vbCrLf
    If sup_nom = "" Then Message_Alerte = Message_Alerte & "- Nom Supérieur" & vbCrLf
    If sup_prenom = "" Then Message_Alerte = Message_Alerte & "- Prénom Supérieur" & vbCrLf
    If cont_mouvement = "" Then Message_Alerte = Message_Alerte & "- Type mouvement" & vbCrLf
    If Message_Alerte <> "" Then
      MsgBox "Les champs suivants sont obligatoires." & vbLf & "Merci de les renseigner avant de cliquer sur envoi." & vbLf & vbLf & Message_Alerte
    Else
    name = cont_mouvement.Value & "_" & col_prenom.Value & "." & col_nom.Value
    temp_Name = Left(name, Len(name)) & Format(Date, "_yyyymmdd") & ".xls"
    temp_Path = "C:\Temp\"
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=temp_Path & temp_Name
    Application.DisplayAlerts = True
    'ActiveWorkbook.Close
    'manque la macro pour l'envoi en mail
    MsgBox "Fichier envoyé"
    End If
    End Sub
    Tous les col_xx, sup_xx et cont_xx sont des contrôles à remplir par le responsable de service.
    Il me sauvegarde bien mon fichier en C:\temp\ avec le nom que je veux.

    Bon OK, reste l'envoi de la pièce jointe mais ça commence à sentir bon.

    Si tu as des idées, you welcome

    Bonne soirée

  12. #12
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    est-ce que c'est moi ou revient à name tout simplement?

    Et la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If col_service = "" Then Message_Alerte = Message_Alerte & "- Service Collaborateur" & vbCrLf
    est présente deux fois. Si le champ est vide, le message d'erreure va contenir deux fois l'erreur Service.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. envoi mail avec piece jointe
    Par fredhot dans le forum Langage
    Réponses: 6
    Dernier message: 16/10/2010, 11h16
  2. envoi mail avec piece jointes
    Par yousron dans le forum Access
    Réponses: 3
    Dernier message: 27/12/2006, 11h29
  3. probleme d'envoi de mail avec pieces jointes
    Par tmryuga dans le forum ASP
    Réponses: 9
    Dernier message: 23/02/2006, 14h56
  4. Réponses: 5
    Dernier message: 12/12/2005, 08h52
  5. envoi mail avec piece jointe fichier excel
    Par flogreg dans le forum ASP
    Réponses: 12
    Dernier message: 20/12/2004, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo