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

Access Discussion :

Champ mémo et saut de ligne


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 23
    Points : 16
    Points
    16
    Par défaut Champ mémo et saut de ligne
    Bonjour à toutes et à tous,

    J'ai un formulaire qui présente un champ mémo.
    Ce champs mémo va alimenter le corps du message d'un email.
    Lorsque l'on renseigne ce champ mémo sans aller à la ligne (en continue quoi) le corps du message de l'email s'étale sur toute la longueur horizontale (selon la longuer des infos tapées dans le champs mémo). Ce qui rend peu lisible le message.

    Comment forcer les utilisateurs à taper sur la touche entrée pour chaque ligne tapée dans le champs mémo?

    Où existe t'il une méthode pour formater le champs mémo par le code pour qu'il soit correctement agencé pour le message email?

    Merci à tous

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    une fonction de découpage de chaîne par ligne de texte d'une longueur maximale définie en paramètre.

    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
    Public Function WordWrap(ByVal strExpr as String, ByVal intLen As Integer, Optional ByVal strDelim As String = " ")
    ' fonction de découpage de chaîne par ligne d'une longueur limitée de caractères : intLen
     
    Dim strLine As String
    Dim i As Integer
    Dim strArray() As String
    strLine = vbNullString
     
    'découpage de la chaine en tableau de mots.
    strArray = Split(strExpr, strDelim)
     
    For i = 1 To UBound(strArray)
        If (Len(strLine) > intLen) And (StrLine <> "") Then
            WordWrap = WordWrap & strLine & vbCrLf 'retour à la ligne
            strLine = strArray(i)
        Else
            strLine = strLine & strDelim & strArray(i)
        End If
    Next i
     
    End Function

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Merci Cafeïne,
    Mais pourrais-tu être plus clair.
    Mon champ mémo se nomme txtMemo.
    Sur quelle évènement j'applique la fonction?
    Doit-je définir la longueur de la ligne ? Comment?
    Enfin, tu vois je suis un peu limite!!!!
    Merci en tout cas.

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    supposons que tu as un bouton : cmdSendMail

    dans la procédure cmdSendMail_Click

    au moment d'envoyer le mail, tu changes le corps du message (variable strCorps)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strCorps = WordWrap(Me.txtMemo, 80, " ")
    découpe ton texte en lignes de 80 caractères maximum.

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Merci Cafeïne,
    Mais lorsque je click sur mon bouton le corps de l'email est vide.
    J'ai créé un module dans lequel j'ai strictement copier-coller ton code et j'ai taper le code qui suit sur l'évènement CLICK du bouton.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CmdEnvoiEmail_Click()
    Destinataire = "Destinataire@test.com"
    Sujet = "Lesujet"
    Message = WordWrap(Me.TxtMemo, 10, " ")
    DoCmd.SendObject acSendNoObject, , , Destinataire, , , Sujet, Message, True
    End Sub
    Je ne comprend pas.

  6. #6
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    C'est peut être un peu faible 10 caractères ... pour renvoyer à la ligne, en plus mon code (un peu trop vite fait, ne prévoit pas des lignes aussi courtes, essaie avec 50 pour voir).

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Cafèïne,

    Si j'ai bien compris la fonction, le code qui suit devrait fonctionner???
    Pourtant il ne renvoie rien dans le corps de l'émail.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CmdEnvoiEmail_Click()
    Destinataire = "kjkjkj@ggeg.fr"
    Sujet = "Lesujet"
     
    Message = WordWrap("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 50, " ")
     
    DoCmd.SendObject acSendNoObject, , , Destinataire, , , Sujet, Message, True
    End Sub
    Désolé de te causer tant de soucis!!! ;-)

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    j'ai quelque peu corrigé ma fonction faite un peu trop à la hâte ....

    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
    Public Function WordWrap(ByVal strExpr As String, ByVal intLen As Integer, Optional ByVal strDelim As String = " ")
    ' fonction de découpage de chaîne par ligne d'une longueur limitée de caractères : intLen
     
    Dim strLine As String
    Dim i As Integer
    Dim strArray() As String
    strLine = vbNullString
     
    'découpage de la chaine en tableau de mots.
    strArray = Split(strExpr, strDelim)
     
    For i = 0 To UBound(strArray)
        If (Len(strLine) > intLen) Then
            WordWrap = WordWrap & strLine & vbCrLf 'retour à la ligne
            strLine = strArray(i)
        Else
            strLine = strLine & strDelim & strArray(i)
        End If
    Next i
    WordWrap = Mid(WordWrap & strLine, Len(strDelim) + 1)
     
    End Function
    Cette fonction ne découpe pas les mots elle renvoie à la ligne sans faire de césure donc teste plutot avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Message = WordWrap("Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate", 50, " ")

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Merci!! et merci, et encore merci et puis merci Caféïne.


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

Discussions similaires

  1. [AC-2007] Saut de ligne champ mémo
    Par massi15 dans le forum VBA Access
    Réponses: 3
    Dernier message: 10/05/2010, 14h17
  2. ETAT - Ignorer les sauts de ligne dans un champ mémo
    Par superseba888 dans le forum Access
    Réponses: 4
    Dernier message: 14/08/2006, 02h27
  3. Réponses: 2
    Dernier message: 12/02/2006, 15h42
  4. Réponses: 9
    Dernier message: 23/05/2005, 09h35
  5. Réponses: 2
    Dernier message: 06/12/2004, 11h44

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