VBA rennomer, enregistrer une copie et envoyer par mail

Résolu
saxo9 Messages postés 21 Statut Membre -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour tous !

D'abord merci à tous car grace à vos posts vos réponses ... ben j'avance !!
Une chose qui m a beaucoup aider c'est de faire des petits enregistrement de macro pour avoir les code et ensuite compiler et ensuite adapter ... mais là je bug.

Le but :
1. J'ai une classeur de base en Xlm sécurisé
2. on travail dessus
3. on clic

Le bouton : Enregistrer / imprimer / envoyer ... ben là il marche pas

Sub Macro1 () ' Renommer & enregistrer
`Envoi via outlook
Dim Destinataires(3) As String
Dim Sujet As String
Dim nom As String
Destinataires(1) = "a@x.fr"
Destinataires(2) = "a@x.fr"
Destinataires(3) = "a@x.fr"
ChDir "C:\Users\Utilsateur\Desktop\Test"
Nom = Day (Date) & "-" & Month (Date) & "-" & Year(Date) & "_" & Range("D14") & ".xls"
Subject = "Commande repas"
Application.ScreenUpdating = False
Workbooks (nom).SendMail Destinataires, Subject, AccuseReception = False
Application.ScreenUpdating = True
ThisWorkbook.SaveCopyAs (nom)
Destinataires(1) = "a@x.fr"
Destinataires(2) = "a@x.fr"
Destinataires(3) = "a@x.fr"

MsgBox "A bientôt", , "FIN"
End Sub

En fait je ne sais pas comment lui dire, va me chercher la copie dans le dossier X & envoie là, surtout que le dit fichier change de nom par rapport à la date et le numero de commande ...

J'ai essayé plein de truc avec Openfile ... mais j'ai pas du comprendre.

Quelqu'un pour m'aider ?
En tout cas j'espère que mon mess est clair.

A bientôt
Saxo9

11 réponses

  1. saxo9 Messages postés 21 Statut Membre
     
    Bon je me réponds ...

    J'ai plusieurs module :
    1 Nurémo de commande ok
    2 enregistrement d'une copie sans xlm dans une dossier ok
    3 Impression ok

    4 envoi de la copie via outlook PAS OK car je n'arrive pas à trouver comment lui dire !
    ouvre le dossier
    chercher la commande (nom variable mais d'aujourd'hui)
    envoie via outlook

    Help SVP suis perdu et je viens de commander un livre que je recevrai pas avant 1 mois ... en espérant qu'il va m'aider

    Merci a tous
    0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Voir ce tuto regarde aussi les postes suivant, je pense que l'un des exemple te conviendra.
    A+
    0
  3. saxo9 Messages postés 21 Statut Membre
     
    Bonjour lermite222 et merci pour le lien

    Il m'a beacoup aidé et là tout fonctionne.

    Application.ScreenUpdating = False
    Suject = "Commande repas"
    ReturnReceipt = True
    ThisWorkbook.SendMail Destinataires, Sujet, AccuseReception = False
    Application.ScreenUpdating = True

    Il me reste une petite chose ... est-il possible depuis là de convertir ThisWorkBooK en xls au lieu qu'il parte en xlm ?
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Re,
    Je ne connais pas les notes xlm, une piste peut-être, copier les données dans un autre classeur, le sauver sous.. *.xlsx, l'ouvrir et l'envoyer.
    Toute fois, une chose m'échappe, tu peu avoir des macros dans un classeur xlm ?

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. saxo9 Messages postés 21 Statut Membre
     
    Autant pour moi j'ai zappé le s ... xlsm

    je te mets le lien, mais je suis loin d'être pro ... alors on se moque pas ;op

    https://www.cjoint.com/?3EBswmDmlEr

    J'en suis à 50% de ce que je voudrais & j'espère que e lien va fonctionner.

    Merci de ton aide
    Isa
    0
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Oui, le lien est bon..
    Donc, si je comprend bien, tu à un classeur *.xlsm (avec macro) et tu voudrais l'envoyer en xlsx (sans macro) ?
    C'est ça ?
    EDIT :
    Les deux feuilles doivent partir ?
    EDIT 2:
    C'est quoi qui ne va pas, il me semble que tu crée déjà des classeurs xlsx et ensuite tu les supprime ? Explique où ça cloche.
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
    0
  8. saxo9 Messages postés 21 Statut Membre
     
    je t'ai mis le lien pour que tu comprennes mieux.

    En fait oui, grace à ton lien

    - Module 2 : je crée une copie que je nomme JJ-MM-AAAA_x. xls dans un fichier de sauvegarde

    En fait ce que je voulais, c'est aller rechercher ces copies pour les envoyer en fin de procédure du module 3.
    Au lieu de cela je Save "temporairement" les feuilles en les renomant puis je les kill (mais cela ne fonctionne pas à chaque fois )

    Mais en fait comme chaque fichier que je sauvegarde avec le module 2 à un nom variable, il faudrait que je lui dise :
    - ouvre le fichier de saurvegarde
    - envoie les fichier enregistré aujourd'hui seulement

    Je sais pas ce que tu en pense, je ne sais quelle méthode est la bonne ...

    Bon je continue,
    Merci de ton aide, ça me motive
    0
  9. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    J'ai déjà mis ce poste hier mais il a disparu ??
    Bref, je le remet.
    Pourquoi ne pas tout faire en une seule fois ?
    Un exemple pour une feuille..

        Sujet = "Commande Epicerie"
        Application.ScreenUpdating = False
        Fich2 = ThisWorkbook.Path & "\" & Format(Date, "jj-mm-aaaa") & "_PANIMA Epicerie.xlsx"
        Sheets("Commande repas").Copy
        With ActiveWorkbook
            .SaveAs Fich2
            .SendMail Destinataires, Sujet, False
            .Close
        End With
        Kill Fich2

    A+

    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
    0
  10. saxo9 Messages postés 21 Statut Membre
     
    Merci lermite de ton aide et désolée de la réponse tardive

    Ca fonctionne !!!
    0
  11. saxo9 Messages postés 21 Statut Membre
     
    j'ai encore un petit souci ... si t'es toujours là.

    C'est sur la suppression des fichiers mais sur un autre fichier.

    J'explique : j'ai terminé le xlsm que j'ai joint, et merci encore tout fonctionne mais au final il est "relié" à d'autre xlsm

    J'en ai un "regroupe" les données de toutes les demandes du jour en ramenant les onglets + aditionne + convertie en valeur et supprime les onglet importé.

    Ensuite je vousdrais qu'il supprime les fichiers importés dans le dossier de sauvegarde ... et là je bloque grave et c'est le dernier module, d'ou mon désespoir !
    Après c'est que de la mise en page + protection.

    Bon je crois que t'as compris k je suis un blonde ;o)

    Sub Kill()

    Dim Fichier As String, Repertoire As String

    Repertoire = "C:\Users\Utilisateur\Desktop\Sauvegarde\"
    Fichier = Dir(Repertoire & "6221*.xls")
    Kill

    End Sub

    En sachant que les fichier à killer : nombre 9 et noms différents chaque jour car les nom des fichiers son du type "aujourdhui()+n°UF" et qu'il faut surtout pas qu'il me supprime le Xlsm ....

    J'espère que je suis clair ... sinon sorry

    @+
    isa
    0
  12. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Re,
    NE JAMAIS METTRE UN NOM DE FONCTION POUR UNE PROCÉDURE
    Sub Kill... PAS BON.
    Est-ce qu'il y a des fichiers xls dans ce répertoire qui ne doivent pas être supprimer ?
    Si non,
    Sub SuppFichiersDuJour()
    Dim Rep As String, Fichier As String
        Rep = "C:\Repertoire\"
        Fichier = Dir(Rep)
        Do While Fichier <> ""
            If Right(Fichier, 3) = "xls" Then
                Debug.Print Rep & Fichier
                'Kill Rep & Fichier
            End If
            Fichier = Dir
        Loop
    End Sub

    Pour tester regarde dans la fenêtre exécution si c'est bien ces fichiers là qui doivent êtres supprimés.
    Si c'est bon, supprime la ligne Debug et valide la ligne Kill
    Eventuellement donne des points de repères pour retrouver les fichiers à détruire.

    Tu dis
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
    0