Email, HTML
Hello je cherche à générer un email comme ci dessous. Evidement les chiffres, entreprises, etc... ont été masqué.
Le but, c'est qu'à partir d'un très gros tableau de données, je puisse ressortir pour chaque famille (ici market actions) les differents CB (centre budgetaire) qui eux même contiennent des books (ici 21), ces books se répartissement leur chiffre d'affaires sur ce que l'on appelle des grecs (deals, vente, delta ici).
Je souhaite reporter les 3 plus grosses et 3 plus petites valeurs pour chaque grecs de chaque book, de chaque centre budgétaire de chaque famille
Email attendu:
Market Actions:
Centre budgetaire N°1:
Book 21 : 100
Deals: 50
X -5
X -4
X -4
X 47
X 15
X 10
Delta: 50
X -5
X -4
X -4
X 47
X 15
X 10
Email obtenu:
Market Actions:
Centre budgetaire N°1:
Book 21 : 100
Deals: 50
X -5
X -4
X -4
X 47
X 15
X 10
Delta: 50
Après avoir créer un dictionnaire à 5 dimensions dont je vous passerai les détails j'ai réussi a stocker toutes les infos dont j'ai besoin. Cependant pour une raison que j'ignore, mon code veut bien me donner le détail des "deals" mais pas des "delta"
Code rebel:
MailBody = ""
For Each Family In DicFamily
Set DicCB = DicFamily(Family)
MailBody = MailBody & Chr(10) & Family & ": " & Chr(10)
For Each CB In DicCB
Set DicBook = DicCB(CB)
MailBody = MailBody & Chr(9) & CB & ": " & Chr(10)
For Each Book In DicBook
Set CurInstrMain = DicBook(Book)
On Error Resume Next
Set DicInstr = DicBook3(Book)
'P&L Global'
MailBody = MailBody & Chr(9) & Chr(9) & Book & " : " & CurInstrMain.PnL & Chr(10)
'Deals'
If Not CurInstrMain.Deals = 0 Then
MailBody = MailBody & Chr(9) & Chr(9) & Chr(9) & "Deals: " & CurInstrMain.Deals & Chr(10)
Set DicGreek = DicBook4(Book)
Set DicInstr2 = DicGreek("Deals")
For Each Key In DicInstr2
MailBody = MailBody & Chr(9) & Chr(9) & Chr(9) & Chr(9) & Key & Chr(32) & DicInstr2(Key) & Chr(10)
Next Key
End If
'Vente'
If Not CurInstrMain.Vente = 0 Then
MailBody = MailBody & Chr(9) & Chr(9) & Chr(9) & "Vente: " & CurInstrMain.Vente & Chr(10)
Set DicGreek = DicBook4(Book)
Set DicInstr2 = DicGreek("Vente")
For Each Key In DicInstr2
MailBody = MailBody & Chr(9) & Chr(9) & Chr(9) & Chr(9) & Key & Chr(32) & DicInstr2(Key).Item & Chr(10)
Next Key
End If
'Delta'
If Not CurInstrMain.Delta = 0 Then
MailBody = MailBody & Chr(9) & Chr(9) & Chr(9) & "Delta: " & Chr(32) & CurInstrMain.Delta & Chr(10)
Set DicGreek = DicBook4(Book)
Set DicInstr2 = DicGreek("Delta")
For Each Key In DicInstr2
MailBody = MailBody & Chr(9) & Chr(9) & Chr(9) & Chr(9) & Key & Chr(32) & DicInstr2(Key).Item & Chr(10)
Debug.Print MailBody
Debug.Print Key
Debug.Print DicInstr2(Key)
Next Key
End If
Pour information:
En pas à pas le code est bien lu et key prends bien les valeurs souhaitées. Il est logique que "vente' soit ignoré car condition IF non validé, mais pour "delta" la condition est validé et le code passe bien en pas à pas sur:
MailBody = MailBody & Chr(9) & Chr(9) & Chr(9) & Chr(9) & Key & Chr(32) & DicInstr2(Key).Item & Chr(10)
Je n'ai aucune idée pourquoi il refuse de m'insérer "key" et "DicInstr2(key)" pour le delta.
Si un habitué des HTML a deja eu le soucis je suis preneur d'une solution.
Bien a vous
EDIT: j'ai laissé dans le code mes debug.print pour m'assurer que mes valeurs étaient bien prises en compte, et c'est le cas
OMG Erreur trouvée, 2min après avoir posté, je suis désolé.
En réalité la ligne n'était pas prise en compte car il n'y a pas de .item après curinstr2(key). Et du coup la ligne était lu mais pas prise en compte, bref sujet clos merci à tous