Retour à la ligne?! [VB Access] - VB/VBA/VBS - Programmation
Marsh Posté le 11-10-2005 à 10:57:54
Cela dépend du type d'e-mail envoyé. 
 
Si c'est de l'HTML, il faut mettre des <br> ou <p>. 
 
Si c'est du texte il faut utiliser les caractères spéciaux. Voici la liste de ces caractères : 
 
| Constante     Valeur  Description  | 
 
Marsh Posté le 11-10-2005 à 11:07:02
J'ai déjà essayé tout cela, mais je ne sais où l'inclure. 
 
Pourrais tu me montrer où mettre, et quoi mettre, dans mon bout de code? Car là j'ai beau essayé, rien ne fonctionne. 
 
PS: c'est du texte, pas hmtl
Marsh Posté le 11-10-2005 à 11:19:00
Désolé, je ne peux pas tester sur mon environnement, donc je ne peux pas donner la réponse exacte. 
A priori, je tenterais 
| Call EnvoiEmail(email.Value, "ENVOI DU COLIS", "Bonjour," & vbNewLine & "votre colis ..." )  | 
Je tenterais la troisième option, si les deux précédentes ne marchent pas, car même si tu affirmes que ce n'est pas du HTML, cela en est peut-être, parce qu'on ne sait pas très bien ce que fait EnvoiMail, et je n'ai pas d'autre idée.
Marsh Posté le 11-10-2005 à 14:19:20
le 3 ca va pas, le <br> se retrouve dans mon texte  
 
 
je teste les autres
Marsh Posté le 11-10-2005 à 14:21:33
le 2 non plus, je désespere  
 
 
 
 
 
Voilà le code de la fonction du formulaire: 
 
 
 
Private Sub envoyer_Click() 
 
    If envoyer.Value = True Then 
         On Error GoTo GestErreur 
            Call EnvoiEmail(email.Value, "ENVOI DU COLIS", "Bonjour," & Chr(13) & Chr(10) & " votre colis a été préparé.  Il sera envoyé lors du prochain enlèvement et expédié à l'adresse suivante: ", [nom et prénom], ADRESSE, [code postal], localité, pays, "Contactez nous au plus vite si une de ces données ne s'avérait pas exacte.", "L'équipe Bc-elec.com" ) 
            Exit Sub 
GestErreur: MsgBox ("Envoi de la confirmation impossible ! Vous devez d'abord renseigner l'Email du client !" ) 
    End If 
End Sub 
 
 
 
Voilà le code de la fonction ENVOIEMAIL: 
 
 
 
Option Compare Database 
 
Option Explicit 
' ------------------------------------------------------------------ 
 
'Déclaration des tableaux qui recevront les touches à utiliser suivant 
' le logiciel de messagerie par défaut du système. 
' Déclarés ici, les tableaux ont une portée qui couvre tout le module 
Dim TouchesPJ(5) As String, TouchesEnvoi(5) As String 
' ------------------------------------------------------------------ 
' Procédure principale qui compose les éléments du message 
' et effectue la demande d'envoi 
' c'est cette procédure qui sera appelée par le programme principal 
' (ici Excel) 
' 
Sub EnvoiEmail(ADRESSE As String, Objet As String, Corps As String, Corps2 As String, Corps3 As String, Corps4 As String, Corps5 As String, Corps6 As String, Corps7 As String, Corps8 As String, Optional PJ As String) 
' Remarque : l'argument PJ (pièce jointe) est optionnel. S'il est fourni, 
' c'est le chemin complet du fichier à joindre qui doit être fourni 
' pour joindre plusieurs pièces, il faudrait que PJ soit 
' un tableau et qu'il soit traité + bas par une boucle... 
Dim HyperLien As String ' Reçoit les éléments de l'hyperlien 
                        ' composés avec les arguments fournis 
Dim i As Integer ' un compteur 
Dim Client As Integer 
' la syntaxe de base du mailto est la suivante : 
' mailto:dest@domaine?Subject=sujet du message&Body=corps du message 
' je ne prends pas en compte les copies, copies cachées 
' ou autres confirmation de lecture, je suppose 
' qu'il faudrait utiliser d'autre arguments de mailto... 
 
HyperLien = "mailto:" & ADRESSE & "?" 
' Le ? introduit les arguments 
HyperLien = HyperLien & "Subject=" & Objet & " (à " & Time() & " )" 
HyperLien = HyperLien & "&Body=" & Corps & Corps2 & Corps3 & Corps4 & Corps5 & Corps6 & Corps7 & Corps8 
' le & sépare les arguments 
 
' Activation du lien 
' 
' Pour Excel (les autres doivent être en commentaire) 
'    ActiveWorkbook.FollowHyperlink HyperLien 
' Pour Word (les autres doivent être en commentaire) 
' ThisDocument.FollowHyperlink HyperLien 
' Pour Access (les autres doivent être en commentaire) 
 Application.FollowHyperlink HyperLien 
 
Attendre 5 ' Appel d'une procédure qui temporise 
            ' c'est à dire que la procédure courante 
            ' (ici EnvoiEmail) est suspendue pendant 5s 
            ' cela permet d'Attendre que le client 
            ' de messagerie soit lancé et prêt 
            ' avant d'envoyer les touches 
            ' sinon ce serait le programme appelant 
            ' (ici Excel) qui recevrait les touches 
 
Client = 1 ' 1=Outlook Express 
            ' 2=Mozilla Thunderbird 
            ' 3=Office Outlook 
 
If Form_ventes1.Option114.Value = True Then ' Mozilla Thunderbird 
    MozillaThunderbird 
Else 
    If Form_ventes1.Option112.Value = False Then ' Outlook Express 
        OutLookExpress 
    Else ' Office 2003 Outlook 
        If Form_ventes1.optionOffice2003outlook.Value = False Then ' Office2003OutLook 
            Office2003OutLook 
        Else ' Aucune coche 
            MsgBox "Aucun client de messagerie connu n'est indiqué" 
            Exit Sub 
        End If 
    End If 
End If 
 
' Le traitement de la pièce jointe ne s'exécute 
' que si la procédure à reçu qqchose 
' dans l'argument PJ (Optional<=>Facultatif) 
 
If PJ <> "" Then 
    ' dans TouchesPJ(0) on a stocké le nombre de touches 
    ' à envoyer au programme pour joindre une pièce 
    For i = 1 To TouchesPJ(0) ' pour chaque touche à envoyer 
        SendKeys TouchesPJ(i), True ' Envoi de la touches 
        Attendre 1 ' temporise (à règler éventuellement) 
    Next i 
    SendKeys PJ, True 'A ce stade le programme attend un nom de fichier 
                      ' on lui envoie 
    Attendre 1 ' on temporise 
    SendKeys "{ENTER}", True ' et on valide ce nom de fichier 
    Attendre 1 
End If 
For i = 1 To TouchesEnvoi(0) ' idem pour les touches d'envoi 
                                    ' du message 
    SendKeys TouchesEnvoi(i), True 
Next i 
' Fin de la procédure principale 
End Sub 
' ----------------------------------------------------------------- 
Sub Attendre(Secondes As Integer) 
' Cette procédure temporise pendant le nombre 
' de secondes qu'on lui transmet en argument 
Dim Début As Long, Fin As Long, Chrono As Long 
Début = Timer 
Fin = Début + Secondes 
Do Until Timer >= Fin 
    DoEvents 
Loop 
End Sub 
 
 
Sub OutLookExpress() 
'Initialisation des tableaux de touches pour Outlook Express 
    ' Pour une pièce jointe 
    TouchesPJ(0) = 2 ' Nombre de touches nécessaires 
    TouchesPJ(1) = "%i" ' Appel du menu Insertion par la touche Alt-i 
    TouchesPJ(2) = "p" ' appel du sous-menu pièce par la touche p 
    ' Pour l'envoi du mail 
    TouchesEnvoi(0) = 1 ' Nombre de touches nécessaires 
    TouchesEnvoi(1) = "%s" ' Envoi du message avec Alt-s 
End Sub 
 
Sub MozillaThunderbird() 
'Initialisation des tableaux de touches pour Mozilla Thunderbird 
    ' Pour une pièce jointe 
    TouchesPJ(0) = 3 ' Nombre de touches nécessaires 
    TouchesPJ(1) = "%f" ' Appel du menu Fichier par la touche Alt-f 
    TouchesPJ(2) = "j" ' appel du sous-menu Joindre par la touche j 
    TouchesPJ(3) = "f" ' sous-sous-menu Fichier par la touche f 
    ' Pour l'envoi du mail 
    TouchesEnvoi(0) = 2 ' Nombre de touches nécessaires 
    TouchesEnvoi(1) = "^{ENTER}" ' Envoi du message avec Ctrl-Entrée 
    TouchesEnvoi(2) = "{ENTER}" ' confirmation par Entrée 
End Sub 
 
Sub Office2003OutLook() 
'Initialisation des tableaux de touches pour Office Outlook 
    ' Pour une pièce jointe 
    TouchesPJ(0) = 2 ' Nombre de touches nécessaires 
    TouchesPJ(1) = "%i" ' Appel du menu Insertion par la touche Alt-i 
    TouchesPJ(2) = "f" ' appel du sous-menu fichier par la touche f 
    ' Pour l'envoi du mail 
    TouchesEnvoi(0) = 1 ' Nombre de touches nécessaires 
    TouchesEnvoi(1) = "%v" ' Envoi du message avec Alt-v 
End Sub 
 
Marsh Posté le 11-10-2005 à 15:45:42
S'il te plait, accorde moi encore une dernière tentative avant que je ne t'avoue que cela me dépasse. 
 
Un code similaire au tien a été posté sur le site http://www.vbfrance.com/code.aspx?ID=31545 
ainsi qu'une question similaire à la tienne avec la réponse suivante : 
| Citation : Il faut utiliser 0A en hexa : %0A  | 
Donc, il faudrait tester 
| Call EnvoiEmail(email.Value, "ENVOI DU COLIS", "Bonjour," & "%0A" & "votre colis ..." ) | 
  
 
Marsh Posté le 11-10-2005 à 17:22:11
CA MARCHE!!!!!!!!!!!!!!!!!  
 
 
c'est bien le seul truc que je n'avais pas essayé, d'ailleurs je n'en ai jamais entendu parler  
 
 
merci! 
Marsh Posté le 11-10-2005 à 01:16:16
J'ai une base de données access pour gérer mes ventes.
 
 
Un formulaire permet, via click sur une case, d'envoyer un email confirmant l'envoi de marchandise.
Cet email reprends qques phrases et des infos de l'enregistrement.
Le voilà, mais je ne parviens pas à caler des sauts de ligne pour aérer le texte (tout est suivi là)
Je fais coment?
Merci
Call EnvoiEmail(email.Value, "ENVOI DU COLIS", "Bonjour, votre colis a été préparé. Il sera envoyé lors du prochain enlèvement et expédié à l'adresse suivante: ", [nom et prénom], ADRESSE, [code postal], localité, pays, "Contactez nous au plus vite si une de ces données ne s'avérait pas exacte.", "L'équipe Bc-elec.com" )