Hello,
C'est bon, j'ai trouvé une solution. C'est un peu compliqué à expliquer, mais ça marche!
En quelques mots: je recopie le contenu de ma cellule dans un textbox dont la largeur a été étalonnée pour que les sauts de lignes automatiques se produisent au même endroit que dans ma cellule d'origine.
Le textbox, lui, accepte de se dimensionner automatiquement en hauteur quelque soit le nombre de caractères (enfin, je ne suis pas allé voir la limite, mais c'est largement au-delà de 1024 caractères)
Ensuite, en fonction de la hauteur de ce textbox, après lui avoir mis Autosize à true, j'en déduis le nombre de lignes. (une simple règle de trois entre la hauteur s'il n'a qu'une seule ligne, et la hauteur s'il en a plusieurs)
Enfin, dans ma cellule intermédiaire non fusionnée, j'inscris autant de sauts de ligne qu'il n'y a de lignes dans mon textbox. Et je lui applique AutoFit.
Et là, le nombre de caractère est de 1 par ligne seulement, ce qui permet de voir venir avant d'arriver à la limite de 1024 sauts de lignes! De toute façon, on sera bloqué avant par la hauteur max de la ligne contre laquelle on ne peut rien!
Voilà, c'est vraiment du bricolage, mais on peut presque faire du traitement de texte avec Excel!
Bonne journée à tous.
PS: voici la macro, pour info.
Target.RowHeight = 18
If Target.Range("A1") = "" Then
Target.Font.Bold = False
Target.Font.Italic = False
Target.Font.Underline = xlUnderlineStyleNone
Target.HorizontalAlignment = xlLeft
Else
If Target.Characters.Count > 1024 Then
Me.TbxAutoFit.AutoSize = False
Me.TbxAutoFit.Height = 13.5
Me.TbxAutoFit.Width = 723.75 'Correspond à la longueur de mes cellules fusionnées initiales (Target)
Me.TbxAutoFit = Target
Me.TbxAutoFit.AutoSize = True
NbreLignes = (Me.TbxAutoFit.Height - 13.5) / 10.5 + 1 '13,5 est la hauteur de TextBox avec 1 seule ligne, 10,5 est ce qui s'y ajoute pour
chaque ligne (ces valeurs dépendent de la police!!!)
Target.EntireRow.Range("BA1") = String(NbreLignes - 1, Chr(10))
Me.TbxAutoFit.AutoSize = False
Me.TbxAutoFit.Height = 13.5
Me.TbxAutoFit.Width = 723.75
Me.TbxAutoFit = ""
Else
Target.EntireRow.Range("BA1") = Target
End If
Target.EntireRow.AutoFit
a = Target.Height
Target.EntireRow.Range("BA1").ClearContents
Target.RowHeight = Application.WorksheetFunction.Max(a, 18)
End If