Envoi de mails avec insertion de cellules

Barbefeuillue

XLDnaute Nouveau
Bonsoir à tous,

de nouveau je me tourne vers vous concernant un problème qui commence à me faire perdre non pas la tête... Mais au moins quelques cheveux!

chaque jour j'ai besoin d'envoyer le contenu d'un tableau excel à différents destinataires en fonction du contenu de ce tableau,

j'ai bien réussi à créer une macro pour envoyer chaque ligne à un destinataire mais quand les envois sont nombreux, cela revient parfois à envoyer 15 mails d'affiler à chaque personne.

j'aimerais réussir à incorporer à un message fixe un contenu variable en utilisant pour identifier le contenu le n° de magasin (colonne 4 par exemple - si même magasin alors à mettre dans le même mail),

Ce qui donnerait par exemple :

"Bonjour,

voici ci dessous les factures à traiter rapidement :


Sans titre 1.jpg

Merci par avance,

Cordialement, "



J'ai réussi à bricoler (il n'y à pas d'autre mot...) quelquechose qui permet de faire en semi automatique mais qui est vraiment galère si les données sont nombreuses.

merci beaucoup à ceux qui prendront le temps de m'aider,
 

Pièces jointes

  • Sans titre 1.jpg
    Sans titre 1.jpg
    9.3 KB · Affichages: 45
  • Sans titre 1.jpg
    Sans titre 1.jpg
    9.3 KB · Affichages: 39
  • Mail.xls
    37.5 KB · Affichages: 38
  • Mail.xls
    37.5 KB · Affichages: 46
  • Mail.xls
    37.5 KB · Affichages: 43

Barbefeuillue

XLDnaute Nouveau
Re : Envoi de mails avec insertion de cellules

Merci pour votre réponse rapide!

j'avais entre temps trouvé mon erreur concernant les déclarations,

j'avais par contre utilisé le "currency" ne connaissant pas le "double",

s'agissant de l'alignement j'avais bricolé en ajoutant des " " entre les colonnes ce qui avait le mérite d'ajouter en lisibilité sans hélas aligner les données...


je vais de nouveau utiliser vos conseils pour améliorer la chose!


merci !!!
 

Dranreb

XLDnaute Barbatruc
Re : Envoi de mails avec insertion de cellules

Je ne crois pas, non. Les "<>" sont réservés aux balises et pas au contenu, donc un mot clé HTML éventuellement suivi de paramètres indiquant une option de présentation. Et à chacune doit correspondre une balise de fin de l'étendue de son application, reprenant ce même mot clé précédé de "/" (Mais je vous ai dit, je ne suis pas spécialiste de ce langage).
En tout cas il n'y a surement pas lieu d'utiliser vbTab, ni d'insérer des chaines d'espaces.
En tapant "balise html" sous Yahoo! on trouve des chose intéressantes, à commencer par ce lien
Peut être serait il possible de mettre au point la présentation sous Word, d'enregistrer le fichier au format HTML puis de l'ouvrir avec le Bloc notes pour voir ce qu'il y a lieu de mettre.

P.S. Pour ne pas vous tromper ensuite dans la rédaction, vous pourriez utiliser pour le texte de votre message = Mef(Mef(Mef(MeF …
avec:
VB:
Function MeF(ByVal Texte As String, ByVal Balise As String, Optional ByVal Options As String) As String
MeF = "<" & Balise
If Options <> "" Then MeF = MeF & " " & Options
MeF = MeF & ">" & Texte & "</" & Balise & ">"
End Function
Ou mieux peut être :
VB:
Function MeF(ByVal Texte As String, ByVal BaliseEtOptions As String) As String
MeF = "<" & BaliseEtOptions & ">" & Texte & "</" & Split(BaliseEtOptions)(0) & ">"
End Function
Cette instruction par exemple :
VB:
MsgBox MeF(Format(123.45, "#.00"), "td align=""right""")
affiche alors : <td align="right">123,45</td>
Ce qui a de grande chance de ressembler à ce que vous devez produire.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Envoi de mails avec insertion de cellules

Je vous ait dit de ne plus puiser dans la feuille, du tout.
Avec la fonction MeF que je vous ai proposée la constitution du tableau (à faire en premier) pourrait ressembler à ça :
VB:
Z = MeF("Compte", "th") & MeF("Montant annoncé", "th") & MeF("Montant Reconnu", "th") & MeF("Bordereau n°", "th") & MeF("Différence", "th")
For L = 1 To UBound(Compte)
   Z = Z & MeF(MeF(Compte(L), "td align='left'") & MeF(Format(Annonce(L), "#.00"), "td align='right'") _
      & MeF(Format(Reconnu(L), "#.00"), "td align='right'") & MeF(Bordereau(L), "td") & MeF(Difference(L), "td"), "tr")
   Next L
Z = MeF(Z, "table cols=5")
Ou à ça plutôt :
VB:
For L = 1 To UBound(Compte)
   Z = Z & MeF(MeF(Compte(L), "td align='left'") & MeF(Format(Annonce(L), "#.00"), "td align='right'") _
      & MeF(Format(Reconnu(L), "#.00"), "td align='right'") & MeF(Bordereau(L), "td") & MeF(Difference(L), "td"), "tr")
   Next L
Z = MeF(Z, "FONT COLOR='blue'SIZE=3")
Z = MeF("Compte", "th") & MeF("Montant annoncé", "th") & MeF("Montant Reconnu", "th") _
   & MeF("Bordereau n°", "th") & MeF("Différence", "th") & Z
Z = MeF(Z, "table cols=5")
Avez vous essayé en passant par Word ?
 
Dernière édition:

Barbefeuillue

XLDnaute Nouveau
Re : Envoi de mails avec insertion de cellules

bonsoir et désolé pour ma réponse tardive , j'ai été débordé!!

j'avais testé d'enregistrer les données sous word en format HTML mais le résultat me paraissait bien obsur (un code très complexe au premier regard),

j'étudie en ce moment le code avec fonction MeF que je ne connaissais pas du tout ...
 

Dranreb

XLDnaute Barbatruc
Re : Envoi de mails avec insertion de cellules

Oui, normal, c'est moi qui l'ai écrite et proposée au #18 (2ième code proposé) pour garantir que chaque balise spécifiée, sans les "<>", est bien accompagnée de sa balise de fin correspondante au bon niveau d'imbrication.

Sauf erreur de ma part, l'ensemble de la procédure pourrait alors s'écrire comme ça :
VB:
Dim Z As String, L As Long
For L = 1 To UBound(Compte)
   Z = Z & MeF(MeF(Compte(L), "td align='left'") & MeF(Format(Annonce(L), "#.00"), "td align='right'") _
      & MeF(Format(Reconnu(L), "#.00"), "td align='right'") & MeF(Bordereau(L), "td") & MeF(Difference(L), "td"), "tr")
   Next L
Z = MeF(Z, "FONT COLOR='blue'SIZE=3") ' Parce que vous semblez y tenir, mais ce n'est pas une raison pour le répéter pour chaque cellule !
Z = MeF("Compte", "th") & MeF("Montant annoncé", "th") & MeF("Montant Reconnu", "th") & MeF("Bordereau n°", "th") & MeF("Différence", "th") & Z
Z = "<HEAD>" & MeF("Bonjour,<BR><BR>Voici la liste des écarts constatés sur les remises concernant votre agence :<BR><BR>" _
   & MeF(Z, "TABLE BORDER") & "<BR><BR>Je reste à votre disposition en cas de besoin<BR><BR>" _
   & "<BR>Merci de ne pas répondre à cet email, il s'agit d'un traitement automatique<BR><BR>Cordialement,", "BODY")
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Envoi de mails avec insertion de cellules

OUh, Houh ! Vous êtes là ? MeF est une fonction perso proposée au #18 !

Bon, je vous la rappelle quand même : (#25 - #18 ça fait peut être un peu beaucoup…)
VB:
Function MeF(ByVal Texte As String, ByVal BaliseEtOptions As String) As String
MeF = "<" & BaliseEtOptions & ">" & Texte & "</" & Split(BaliseEtOptions)(0) & ">"
End Function
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
240

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote