Détecter un retour à la ligne automatique.

mromain

XLDnaute Barbatruc
Bonjour le forum,


Suite à cette discussion, j'ai effectué quelques recherches afin de savoir comment détecter les retours à la ligne automatique du texte dans une cellule.
Malheureusement, je n'ai pas réussi à trouver une solution...

Si vous en avez une, je suis preneur :).

A+
 

eriiic

XLDnaute Barbatruc
Re : Détecter un retour à la ligne automatique.

Bonjour tout le monde,

Une idée qui semble prometteuse mais que je n'ai pas le temps d'approfondir plus pour cause de travaux :
Créer un textbox avec les même caractéristiques que la cellule et relever la ligne des mots grâce à la propriété curline.
propriétés de textbox1 :
- multiline=true
-selection.margin=false
Code:
Sub test()
    With Worksheets("feuil1")
        .TextBox1.Width = [B2].Width + 2
        .TextBox1.Height = [B2].Height
        
        .TextBox1.Text = [B2].Value
        .TextBox1.Font.Name = [B2].Font.Name
        .TextBox1.Font.Bold = [B2].Font.Bold
        .TextBox1.Font.Italic = [B2].Font.Italic
        .TextBox1.Font.Size = [B2].Font.Size
        
        .TextBox1.SelStart = 60
        .TextBox1.Activate
        MsgBox ("'afin' est en ligne " & .TextBox1.CurLine + 1)
    End With
End Sub
Je ne sais pas si le +2 à .width est général ou lié à ma résolution écran.

Si quelqu'un veut prendre la suite, j'ai des cartons à faire... ;-)
eric

Edit: j'avais oublié l'essentiel : .TextBox1.Text = [B2].Value, fichier joint non modifié.
 

Pièces jointes

  • ligne texte.xls
    31 KB · Affichages: 77
Dernière édition:

job75

XLDnaute Barbatruc
Re : Détecter un retour à la ligne automatique.

Bonjour eriiiic,

C'est plus que prometteur, ça règle élégamment le problème.

En faisant une boucle sur la position de chaque lettre du texte de la cellule, la propriété CurLine de la TextBox donnera sa ligne.

Bravo.

A+
 

job75

XLDnaute Barbatruc
Re : Détecter un retour à la ligne automatique.

Re Eric,

Un petit bémol cependant.

Dans la cellule, des caractères peuvent avoir des polices différentes de la police de base.

Ce n'est pas possible de répercuter cela dans la TextBox.

Peut-être utiliser une RichTextBox ? Mais je n'y connais rien, je n'en ai jamais installé.

A+
 

eriiic

XLDnaute Barbatruc
Re : Détecter un retour à la ligne automatique.

Bonsoir,

Autre bémol : mon idée ne peut pas s'appliquer à une fonction personnalisée (qui ne peut changer son environnement...)
Seulement à un sub, ce qui réduit son intérêt. Désolé...
eric
 

ashy

XLDnaute Nouveau
Re : Détecter un retour à la ligne automatique.

J'ai trouvé une solution si c'est toujours d'actualité. ^__^
texte saisi dans un textbox retranscrit dans des cellules en fonction de curline


Dim i As Long, lg As Long, x As Long, y As Long, lg2 As Long
Me.TextBox1.SetFocus
For i = 1 To Len(Me.TextBox1)
Me.TextBox1.SelStart = i
lg = Me.TextBox1.CurLine
Next i


For x = 0 To lg
For i = 1 To Len(Me.TextBox1)
Me.TextBox1.SelStart = i
lg2 = Me.TextBox1.CurLine
If lg2 = x Then Range("A1").Offset(y, 0) = Range("A1").Offset(y, 0) & Mid(Me.TextBox1, i, 1)
Next i
If Range("A1").Offset(y + 1, 0) = "" And Range("A1").Offset(y + 1, 0).Locked = False Then y = y + 1
Next x
 

Discussions similaires

Réponses
8
Affichages
230

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 172
dernier inscrit
Aurelyan