Fichier auto

Bonjour à tous,

J'aimerais créer un envoi de fichier automatique via pdf.

Bonjour,

Quelques remarques préalables :

  • tes dates ne sont pas des dates ... pourquoi mettre un blanc devant quand le jour est inférieur à 9 ? => enlève les blancs de la colonne B
  • plus simple en colonne A, tu peux mettre en A6 =TEXTE(B6;"jjjj") et tirer vers le bas

Questions,

  • prenons le cas de Tom ... est-il toujours en première colonne ?
  • que signifient :
JOUR - 1a

JOUR - 1b

JOUR - 1 réserve

JOUR - 2a

JOUR - 2b

JOUR - 6

NUIT

RÉSERVE NUIT

J'aurais tendance à plutôt mettre en place une liste à la prévert, utiliser ensuite un TCD avec segments ... le pdf serait le reflet de ce TCD pour chaque client

Bonjour,

Steelson a écrit :

- tes dates ne sont pas des dates ... pourquoi mettre un blanc devant quand le jour est inférieur à 9 ? => enlève les blancs de la colonne B

Je n'avais même pas fait attention ! Merci !

Steelson a écrit :

- plus simple en colonne A, tu peux mettre en A6 =TEXTE(B6;"jjjj") et tirer vers le bas

En effet, c'est plus pratique

Steelson a écrit :

- prenons le cas de Tom ... est-il toujours en première colonne ?

Non du tout, pour tout te dire j'ai fais des copiés/collés pour aller plus vite mais tout peut se mélanger ... et pas toujours au même "poste" (voir en dessous)

Steelson a écrit :

- que signifient :

JOUR - 1a

JOUR - 1b

JOUR - 1 réserve

JOUR - 2a

JOUR - 2b

JOUR - 6

NUIT

RÉSERVE NUIT

Ce sont des postes, différents endroits (1a-1b-2a-2b-6). Nuit pour ceux qui viennent de nuit et les réserves.

Steelson a écrit :

J'aurais tendance à plutôt mettre en place une liste à la prévert, utiliser ensuite un TCD avec segments ... le pdf serait le reflet de ce TCD pour chaque client

Une liste à la prévert ? Peux-tu m'expliquer ton idée ? ^^

Merci en tout cas !

J'ai restructuré comme je le pensais, je vais passer ce soir aux mails ....

Merci beaucoup !!

Le souci c'est que ce fichier va être utilisé par une personne âgée Je trouve donc ceci un peu compliqué :s Il n'y a donc pas moyen selon la structure proposée avant ? Sinon va au fond de ta pensée, peut-être qu'au final ça me conviendra mais c'est pour ne pas que tu fasses ça pour rien

Le but ici est d'envoyer à chaque client (pas tous utilisateurs d'excel) le fichier (transformer en pdf) où ils verront leur nom en surbrillance. Et donc via un bouton envoyer les mails pour ne pas à chaque fois créé un mail par mail et joindre le fichier.

Merci à toi pour ton aide !

OK

2 heures de route m'ont fait réfléchir, je vais rétropédaler.

Je conserve ta structure, je vais faire une MFC avec comme critère le nom, cela va faire disparaître les autres, et je vais en tirer les pdf que je vais inclure dans un mail.

Je tente de faire cela demain matin (la MFC sans doute ce soir et le mail demain).

1ère étape : MFC

Je vais poursuivre avec l'envoi par mail (je changerai alternativement le nom dans la cellule pour n'envoyer que ce qui est pertinent pour un destinataire)

A tester ...

Salut !

Concernant ton premier fichier, les clients doivent voir les autres donc pas les supprimer ^^ (de la sorte ils peuvent s'arranger entre eux pour échanger leur poste, etc.).

Et concernant ton deuxième fichier, quand je clique sur "Envoi des calendriers", il me met un message erreur compilation variable non définie :

Option Explicit
Sub envoi()

Dim messagerie As Object
Dim email As Object
Dim nompdf As String

On Error GoTo erreur

' sélection des feuilles
Sheets(Array("JUILLET 17", "AOÛT 17", "SEPTEMBRE 17")).Select

For ligne = 2 To Sheets("Adresse mail").[A1].End(xlDown).Row

    Sheets("Adresse mail").Cells(1, "E").Value = Sheets("Adresse mail").Cells(ligne, "A").Value
    nompdf = Environ("Temp") & "\" & Sheets("Adresse mail").Cells(ligne, "A")
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nompdf & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    Set messagerie = CreateObject("Outlook.Application")
    Set email = messagerie.CreateItem(0)
    With email
        .to = Sheets("Adresse mail").Cells(ligne, "B").Value
        .Subject = "Diffusion du calendrier"
        .body = "Veuillez trouver ci-joint votre calendrier personnalisé."
        .ReadReceiptRequested = True
        .Attachments.Add nompdf & ".pdf"
        .display ' mettre .send pour envoyer automatiquement
    End With
    Set email = Nothing
    Set messagerie = Nothing

    Kill Environ("Temp") & "\" & Sheets("Adresse mail").Cells(ligne, "A") & ".pdf"

Next

Exit Sub

erreur:

    MsgBox "Erreur : " & Err.Number & vbLf & Err.Description

End Sub

Merci à toi !!

Jizinho a écrit :

Concernant ton premier fichier, les clients doivent voir les autres donc pas les supprimer ^^ (de la sorte ils peuvent s'arranger entre eux pour échanger leur poste, etc.).

ok, simple il suffit de changer la MFC dans les feuilles ... comment veux-tu mettre en exergue le client concerné ? en gras ? surligné jaune ? sinon tu peux prendre la main sur cette MFC

Jizinho a écrit :

Et concernant ton deuxième fichier, quand je clique sur "Envoi des calendriers", il me met un message erreur compilation variable non définie

peux-tu me dire à quel endroit ?

Steelson a écrit :

ok, simple il suffit de changer la MFC dans les feuilles ... comment veux-tu mettre en exergue le client concerné ? en gras ? surligné jaune ? sinon tu peux prendre la main sur cette MFC

Je le ferais bien mais je ne comprends pas trop la formule en fait :s Mettre simplement la case en surbrillance jaune (le fond de la cellule).

Si je suis bien ton fonctionnement, il faut sélectionner le client et ensuite cliquer sur envoi pour ce client ? Ca ne peut pas se faire automatiquement ? Donc l'envoyer à tous les clients présents dans la liste et ensuite par exemple 400 mails (tous les clients) avec le fichier joint qui s'adapte au nom du client, tu me comprends ? ^^

Steelson a écrit :

peux-tu me dire à quel endroit ?

"For ligne = 2" se met en sélection et sub envoi () se met en jaune. Je ne sais pas si ça t'aide ?

Jizinho a écrit :
Steelson a écrit :

ok, simple il suffit de changer la MFC dans les feuilles ... comment veux-tu mettre en exergue le client concerné ? en gras ? surligné jaune ? sinon tu peux prendre la main sur cette MFC

Je le ferais bien mais je ne comprends pas trop la formule en fait :s Mettre simplement la case en surbrillance jaune (le fond de la cellule).

Il ne faut pas changer la formule de la MFC mais la mise en forme

Jizinho a écrit :

Si je suis bien ton fonctionnement, il faut sélectionner le client et ensuite cliquer sur envoi qui générera automatiquement le mail pour ce client ? Ca ne peut pas se faire automatiquement ? Donc envoyer automatiquement à tous les clients présents dans la liste et ensuite générer par exemple 400 mails (tous les clients) avec le fichier joint qui s'adapte au nom du client, tu me comprends ? ^^

C'est bien le programme qui va mettre les clients les uns après les autres dans la zone sous le bouton envoyer, en E1 de l'onglet "adresse mail" => donc les 400 seront faits en auto

Jizinho a écrit :
Steelson a écrit :

peux-tu me dire à quel endroit ?

"For ligne = 2" se met en sélection et sub envoi () se met en jaune. Je ne sais pas si ça t'aide ?

ok il faut alors ajouter

Dim ligne%

Voici un nouvel envoi ....

Je pense qu'il y aura d'autres questions ... notamment sur la sélection des onglets à envoyer je suppose !

Merci beaucoup !

Si j'ai bien compris il faut utiliser une adresse mail outlook ? Gmail/Yahoo ne fonctionne pas ?

Si je veux rajouter des feuilles ultérieurement, j'ajoute simplement à ce code :

Sheets(Array("JUILLET 17", "AOÛT 17", "SEPTEMBRE 17","OCTOBRE 17")).Select

Pour le mois d'octobre par exemple, correct?

Encore merci !

Jizinho a écrit :

Si j'ai bien compris il faut utiliser une adresse mail outlook ? Gmail/Yahoo ne fonctionne pas ?

Il faut avoir outlook pour lancer les mails, mais tes destinataires peuvent avoir des mails autres

Jizinho a écrit :

Si je veux rajouter des feuilles ultérieurement, j'ajoute simplement à ce code :

Sheets(Array("JUILLET 17", "AOÛT 17", "SEPTEMBRE 17","OCTOBRE 17")).Select

Pour le mois d'octobre par exemple, correct?

OUI en effet, mais on pourrait le faire sans devoir repasser par la case macro, par exemple tous les onglets de telle date à telle date à condition que, comme tu l'as fait, les mois soient bien écrits y compris avec les accents.

D'accord merci beaucoup !

Je vais essayer de voir ça et tester ! Peux-tu me laisser ton adresse e-mail en privé au cas où j'aurais un souci ? Merci !

Envoi en MP via le forum

Suite MP et pour partager avec tout le monde ...

Pour envoyer un "beau texte" dans le corps du mail il y a plusieurs méthodes possibles :

1- écrire en html, à condition de connaître les balises (gras, italique, souligné, couleur, retour à la ligne)

2- écrire un texte dans plusieurs cellules excel, les recopier dans le corps du mail en détectant la mise en forme de la cellule (e théorie on peut aussi détecter une mise en forme à l'intérieur d'une cellule mais c'est très long)

3- faire un copier à partir d'excel et un coller par sendkeys dans outlook après avoir fait le display (cela interdit presque l'envoi auto)

Pour ton cas, in fine, j'avais commencé la solution 3 mais je vais te proposer la 1, c'est la seule qui permet aussi de faire des liens hypertextes

Pour écrire en html dans un mail ...

Il faut d'abord remplacer .body par .htmlbody dans le code VBA

Voici les codes (balises) principaux HTML

  • retour à la ligne : <br/>
  • italique : entourer le mot par <i>______</i>
  • gras : idem <b>______</b>
  • souligné : idem <u>________</u>
  • pour les couleur : <font color="red">_______</font> ou bien <font color="#ff0000">_______</font> les codes couleur peuvent être obtenus facilement ici https://html-color-codes.info/Codes-couleur-HTML/
pour les liens hypertextes, si besoin, on y reviendra

Donc cela doit donner quelquechose comme ceci :

.htmlbody = "Cher Monsieur,<br/><br/>Vous trouverez ci-joint le <b>rôle de garde zone " & Range("LaZone") & " pour le premier semestre 2017.</b><br/>XXXXXXXXXX<br/><br/><b>Dan YYYY</b><br/>tel : <u>+32 00000000</u>"

Salut Steelson !

Tout d'abord merci beaucoup d'avoir pris le temps pour moi

Je vais essayer cela, je te dirai ce qu'il en est.

Encore merci !

Rechercher des sujets similaires à "fichier auto"