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

VBA Outlook Discussion :

Insérer textes et cellules excel dans un message en HTML [OL-2010]


Sujet :

VBA Outlook

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 28
    Points : 29
    Points
    29
    Par défaut Insérer textes et cellules excel dans un message en HTML
    Bonjour,
    Je cherche à pouvoir insérer et mélanger du texte, des traitements et des contenus de cellules excel dans le coprs d'un message en HTML, qui peut m'aider ?
    Je parviens à afficher la cellule avec msgbox mais ne parvient pas à l'insérer dans le message ( zone en rouge )

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    Public Sub Mailing()
    
        Dim appOutlook As Outlook.Application
        Dim oMail As Outlook.MailItem
        Dim EMailSendTo As String, EMailCCTo As String, EMailBCCTo As String
        Dim cpt As Integer
        Dim nblignes As Long
        Dim Rep As VbMsgBoxResult
        Dim Lct As Long
        Dim NbLctr As Double
        Dim Lctr As Range
        Dim I As Integer
        
        On Error GoTo traiteErreur
    
         
            'Demande de confirmation de lancement du mailing
            Rep = MsgBox(" Confirmation du début de mailing?  " & stFile, vbQuestion + vbOKCancel, "Mailing via Outlook")
            If Rep = 2 Then Exit Sub
        
             cpt = 0
            'Compte le nbre de lignes pour le nbre d'enregistrements
            ActiveWorkbook.Sheets("Echeances_contrats").Select
            Range("L2").Select
            nblignes = Range("L2").CurrentRegion.Rows.Count - 1
    
            Do While cpt < nblignes
            
            Range("S2").Select      'Reste pb de positionnement sur la 1ere ligne de chaque contrat
           
            MsgBox ("cpt = " & cpt)
            
             'Test pour n'envoyer qu'un seul mail par contrat a plusieurs lignes
             
            If ActiveCell.Offset(cpt, -7).Value <> ActiveCell.Offset(cpt - 1, -7).Value Then
            
    
             
            EMailSendTo = ActiveCell.Offset(cpt, 0).Value
            EMailCCTo = ActiveCell.Offset(cpt, 2).Value
    
            Set appOutlook = CreateObject("outlook.application")
            Set oMail = appOutlook.CreateItem(olMailItem)
         
       
            With oMail
            .To = EMailSendTo
            .CC = EMailCCTo
        
            .Subject = "AVIS DE FIN DE CONTRAT"
            .BodyFormat = olFormatHTML
            .HTMLBody = "<HTML><body><u>A l'attention du Responsable Informatique</u><hr /><BR>Cher(e) client(e) ,<BR><BR>Suivant nos informations et sauf erreur, votre Contrat de maintenance numéro :  </body>" & ActiveCell.Offset(cpt, -7).Value _
            & "<body><i><BR>(ce numéro figure dans la zone NOTRE REFERENCE de votre facture)</i></body>" _
            & "<body><BR>arrive à échéance le: </body>" & ActiveCell.Offset(cpt, -8).Value _
            & "<body><BR>Référence Commande: </body>" & ActiveCell.Offset(cpt, -4).Value _
            & "<body><BR>Commentaires sur ce contrat: </body>" & ActiveCell.Offset(cpt, 4).Value _
            & "<body><BR>Nous souhaitons connaître vos intentions quant au renouvellement de celui-ci</body>" _
            & "<body><BR>Cet avis est automatisé, si des négociations sont en-cours avec notre service commercial, merci de ne pas en tenir compte. </body>" _
            & "<body><BR><BR>Dans l'attente, nous demeurons à votre disposition et vous prions d'agréer, Madame,Monsieur, l'expression de nos salutations distinguées.</body>" _
            & "<body><BR><BR><u>Votre contact :</u></body>" & "  " & ActiveCell.Offset(cpt, 1).Value & "<body> - Courriel : </body>" & ActiveCell.Offset(cpt, 2).Value & "<body> - Tel : </body></HTML>" & ActiveCell.Offset(cpt, 3).Value
            
            ' Reste à trouver le moyen de lister les item par contrat dans le message
            
            'Test du nbre de ligne du contrat
            Range("X" & cpt + 2).Select
            ActiveCell.Formula = "=COUNTIF(Lctr,RC[-12])"
            NbLctr = ActiveCell.Value
            MsgBox ("Nbre de lignes du contrat = " & NbLctr)
            
            'Affichage de chaque item du contrat - Reste à trouver le moyen de l'intégrer dans le corps du message
            For I = 0 To NbLctr Step 1
            MsgBox ("Item n° :" & I & "  " & ActiveCell.Offset(I, -8).Value)
            
            Next
           
            .Send
    
            End With
            Set oMail = Nothing
            Set appOutlook = Nothing
            
            End If
    
        
            cpt = cpt + 1
        
            Loop
    
            ' message de fin de mailing
            MsgBox cpt & "   Messages envoyés via Outlook - Visibles dans le Répertoire Eléments envoyés", vbInformation, "Mailing via Outlook"
    
    traiteErreur:
        
            Select Case Err.Number
            Case -2147467259
                 MsgBox ActiveCell.Offset(cpt, -5).Value & "  >>> Erreur de saisie dans une adresse mail ", vbCritical, "Mailing Outlook"
            Case Else
       
                 MsgBox Err.Description
                 
            End Select
        
        ' poursuite exécution de la procédure
            'Resume Next
        
    End Sub

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Le plus simple est de travailler avec l'objet WordEditor
    dans with omail rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .getInspector.WordEditor.range.insertafter "Item n° :" & I & "  " & ActiveCell.Offset(I, -8).Value

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    Bonjour et merci pour votre réponse.
    je viens de faire le test et cela n'affiche rien dans le corps du message

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Cela est étonnant car normalement, il insère à la fin du message.
    Attention toutefois, il ne saute pas de ligne sans lui le spécifier (vbcr)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 28
    Points : 29
    Points
    29
    Par défaut Cela ne fonctionne toujours pas
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
            EMailSendTo = ActiveCell.Offset(cpt, 0).Value
            EMailCCTo = ActiveCell.Offset(cpt, 2).Value
    
            Set appOutlook = CreateObject("outlook.application")
            Set oMail = appOutlook.CreateItem(olMailItem)
         
       
            With oMail
            .To = EMailSendTo
            .CC = EMailCCTo
        
            .Subject = "AVIS DE FIN DE CONTRAT"
            .BodyFormat = olFormatHTML
            .HTMLBody = "<HTML><body><u>A l'attention du Responsable Informatique</u><hr /><BR>Cher(e) client(e) ,<BR><BR>Suivant nos informations et sauf erreur, votre Contrat de maintenance numéro :  </body>" & ActiveCell.Offset(cpt, -7).Value _
            & "<body><i><BR>(ce numéro figure dans la zone NOTRE REFERENCE de votre facture)</i></body>" _
            & "<body><BR>arrive à échéance le: </body>" & ActiveCell.Offset(cpt, -8).Value _
            & "<body><BR>Référence Commande: </body>" & ActiveCell.Offset(cpt, -4).Value _
            & "<body><BR>Commentaires sur ce contrat: </body>" & ActiveCell.Offset(cpt, 4).Value _
            & "<body><BR>Nous souhaitons connaître vos intentions quant au renouvellement de celui-ci</body>" _
            & "<body><BR>Cet avis est automatisé, si des négociations sont en-cours avec notre service commercial, merci de ne pas en tenir compte. </body>" _
            & "<body><BR><BR>Dans l'attente, nous demeurons à votre disposition et vous prions d'agréer, Madame,Monsieur, l'expression de nos salutations distinguées.</body>" _
            & "<body><BR><BR><u>Votre contact :</u></body>" & "  " & ActiveCell.Offset(cpt, 1).Value & "<body> - Courriel : </body>" & ActiveCell.Offset(cpt, 2).Value & "<body> - Tel : </body>" & ActiveCell.Offset(cpt, 3).Value
            
            ' Reste à trouver le moyen de lister les item par contrat dans le message
            
            'Test du nbre de ligne du contrat
            Range("X" & cpt + 2).Select
            ActiveCell.Formula = "=COUNTIF(Lctr,RC[-12])"
            NbLctr = ActiveCell.Value
            MsgBox ("Nbre de lignes du contrat = " & NbLctr)
            
            'Insertion de chaque item du contrat -  dans le corps du message  NE FONCTIONNE PAS
            
            For I = 0 To NbLctr Step 1
            .GetInspector.WordEditor.Range.InsertAfter Chr(13) & Chr(10) & "Item n° :" & I & "  " & ActiveCell.Offset(I, -8).Value        
            Next
           
            .Send
    
            End With
            Set oMail = Nothing
            Set appOutlook = Nothing
            
            End If
    
        
            cpt = cpt + 1
        
            Loop
    J'ai encore essayé mais seul le début du message en HTML avec les balise <body> s'affiche

  6. #6
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Est-ce qu'il y a un message d'erreur?
    Que se passe-t-il en enlevant la partie Activecell.offset... et en gardant juste du texte?
    Peut-être que cette partie est stockée sous la forme d'un numérique ou autre chos que du texte donc qu'une conversion de la valeur en string est nécessaire.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 28
    Points : 29
    Points
    29
    Par défaut Ja i trouvé
    En fait il manquait simplement un ".display" et ça marche

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/06/2008, 11h08
  2. Copier contenues cellule excel dans une fichier texte
    Par nicolas21240 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/12/2007, 16h25
  3. Insérer la valeur d'une cellule Excel dans Word
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 0
    Dernier message: 21/09/2007, 01h27
  4. plage de cellule excel dans message outlook
    Par dusud83 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/07/2007, 11h51
  5. Simple copie du texte d'une cellule excel dans le titre d'un graphique chart
    Par pinto_armindo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2007, 11h59

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