Bonsoir tous le monde !
Voici mon premier post ! Un challenge !
Après avoir lu des centaines de post, vous m'avez tous aidé à résoudre mes bobos sur Excel sans faire une demande ! Mais cette fois je cale, je ne trouve pas l'info ni sur le web, ni sur le forum.
J'ai un fichier Excel sur lequel je m'éclate (c'est pour une amie qui a une petite entreprise), et je lui créé un classeur type tableau de bord, base de données, etc.
A l'intérieur, il y a une feuille "SMS" à laquelle on accède pour envoyer des SMS prédéfini sur une feuille "LISTE - SMS". L'idée est de générer un sms envoyé via Outlook en VBA.
Je souhaitais lui afficher un aperçu du SMS qu'elle va envoyer dans une bulle. Elle pourrait choisir dans une liste des titres de message :
Voici un aperçu.
Or, l'affichage de ma zone de texte activeX ne se fait que sur une ligne. J'aurais souhaité type SMS. Affichage smartphone, pour un effet visuel, pouvoir le modifier (par la suite car avec le format HTML via outlook, cela reviendrait à convertir dans l'autre sens...) Prochain défi.
strbody = "Information sur la mise à jour" & " " & _
"Bonjour," & " " & " " & _
"Madame, Monsieur," & " " & _
"Nous vous remercions de nous recontacter dès que possible."
J'ai donc cela dans ma cellule sur la feuille "LISTE - MESSAGE", qui s'insère dans la bulle quand on "sélectionne demande de rappel".
Voici le code inséré dans la feuille "SMS"..
*************************************************************************************************************************************************************************
Private Sub Worksheet_Change(ByVal CelluleModifiee As Range)
' Vérifier si la modification provient de la feuille "SMS"
If Me.name = "SMS" Then
' Effacer le contenu de la zone de texte ActiveX (TxtSMS)
Me.OLEObjects("TxtSMS").Object.Value = ""
' Vérifier si la modification se trouve dans la plage F10:I10
If Not Intersect(CelluleModifiee, Me.Range("F10:I10")) Is Nothing Then
Dim wsListe As Worksheet
Set wsListe = ThisWorkbook.Sheets("LISTE - MESSAGE")
Dim titre As String
titre = CelluleModifiee.text ' Utiliser CelluleModifiee.Text au lieu de CelluleModifiee.Value
Dim ligneTitre As Variant
ligneTitre = Application.Match(titre, wsListe.Range("C:C"), 0)
If Not IsError(ligneTitre) Then
Dim texteMessage As String
texteMessage = wsListe.Cells(ligneTitre, 6).Value
' Remplacer les balises <br> par des sauts de ligne
texteMessage = Replace(texteMessage, "<br>", vbCrLf)
' Afficher le texte dans la zone de texte ActiveX (TxtSMS)
Me.OLEObjects("TxtSMS").Object.Value = texteMessage
End If
End If
End If
End Sub
*************************************************************************************************************************************************************************
Le dernier d'une longue liste, et rien n'y fait. L'affichage reste sur une seule ligne , qui sort ensuite du cadre, donc inutile.
J'ai tout essayé, et j'en viens à déduire qu'il est impossible de faire un retour à la ligne dans une zone de texte active X !
Est-ce juste ? Et ensuite est-il possible aussi d'afficher le message tel qu'envoyé (sans format HTML) ?
Merci pour vos commentaires !