Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Nombre de lignes dans une Zone de Texte.

3 réponses
Avatar
Syl
Bonjour!

J'ai des contrôles "Zone de Texte" dans une feuille de calcul et il faut que
je trouve une façon de déterminer le nombre de lignes dans la zone de texte
en VBA.
Ceci dans le but d'ajuster la hauteur de ligne de la cellule pour afficher
tout le contenu de la zone de texte. Ceci dit la zone de texte est attachée
à la cellule.
J'ai utilisé une méthode qui calcule les retours de chariots avec des
résultats inconsistants.


Quelqu'un à t'il une idée?



Sub AjusterHauteur()

'Ajuste la hauteur de l'ensemble des boites de textes de type formulaire
'avec la hauteur de la ligne.

Application.ScreenUpdating = False

Set tx = Worksheets("KBB").Shapes
Dim Adresse
Dim Texte As String
Dim NombreCR As Single
Dim c As Shape
Dim z As Single
Dim Trouvé

For Each c In tx

Adresse = c.TopLeftCell.Row
Nom = c.Name
TypeShape = c.Type
NumID = c.ID

If TypeShape <> 17 Then GoTo fin2

Texte = c.TextFrame.Characters.Text
z = 1
Trouvé = 1
NombreCR = 1

For z = 1 To 100000
Trouvé = InStr(Trouvé, Texte, Chr(10))
If Trouvé = 0 Then GoTo fin
Trouvé = Trouvé + 1
NombreCR = NombreCR + 1
Next z

fin:

Rows(Adresse).Select
Selection.RowHeight = NombreCR * 15

fin2:

Debug.Print Adresse, NombreCR, Nom, NumID

Next c

Application.ScreenUpdating = True

End Sub


Merci!

3 réponses

Avatar
Daniel
Bonjour.
A mon avis, le nombre de lignes dans la cellule ne correspond pas au nombre
de lignes de la textbox. Pourquoi n'utilises-tu pas
range("Xn").entirerow.autofit, pour dimensionner ta cellule ?
Cordialement.
Daniel
"Syl" a écrit dans le message de news:
b3ujf.4441$
Bonjour!

J'ai des contrôles "Zone de Texte" dans une feuille de calcul et il faut
que je trouve une façon de déterminer le nombre de lignes dans la zone de
texte en VBA.
Ceci dans le but d'ajuster la hauteur de ligne de la cellule pour afficher
tout le contenu de la zone de texte. Ceci dit la zone de texte est
attachée à la cellule.
J'ai utilisé une méthode qui calcule les retours de chariots avec des
résultats inconsistants.


Quelqu'un à t'il une idée?



Sub AjusterHauteur()

'Ajuste la hauteur de l'ensemble des boites de textes de type formulaire
'avec la hauteur de la ligne.

Application.ScreenUpdating = False

Set tx = Worksheets("KBB").Shapes
Dim Adresse
Dim Texte As String
Dim NombreCR As Single
Dim c As Shape
Dim z As Single
Dim Trouvé

For Each c In tx

Adresse = c.TopLeftCell.Row
Nom = c.Name
TypeShape = c.Type
NumID = c.ID

If TypeShape <> 17 Then GoTo fin2

Texte = c.TextFrame.Characters.Text
z = 1
Trouvé = 1
NombreCR = 1

For z = 1 To 100000
Trouvé = InStr(Trouvé, Texte, Chr(10))
If Trouvé = 0 Then GoTo fin
Trouvé = Trouvé + 1
NombreCR = NombreCR + 1
Next z

fin:

Rows(Adresse).Select
Selection.RowHeight = NombreCR * 15

fin2:

Debug.Print Adresse, NombreCR, Nom, NumID

Next c

Application.ScreenUpdating = True

End Sub


Merci!



Avatar
Syl
Bonjour Daniel!

J'ai essayé la propriété autofit mais sans succès car l'ajustement de la
cellule se fait en fonction du texte qui se trouve dans la cellule sans
tenir compte du texte qui se trouve dans le contrôle "Zone de Texte", même
si le contrôle est ajusté à la cellule.
Ce qu'il me faudrait en fait c'est une propriété autofit ou l'équivalent qui
s'appliquerait à l'objet Shape. Je ne sais trop comment m'y prendre.

Des idées...

Merci.


"Daniel" a écrit dans le message de news:

Bonjour.
A mon avis, le nombre de lignes dans la cellule ne correspond pas au
nombre de lignes de la textbox. Pourquoi n'utilises-tu pas
range("Xn").entirerow.autofit, pour dimensionner ta cellule ?
Cordialement.
Daniel


Avatar
michdenis
Bonjour Syl,

Ceci va redimensionner et situer la zone de texte exactement
aux dimensions de la cellule A1 de la feuil1. De même la
zone de texte prendra le contenu de la cellule A1

'-------------------------------
Sub test()
With Worksheets("Feuil1")
With .Range("A1")
.Value = "Il neige ce soir sur Montréal."
'retour à la ligne automatique
.WrapText = True
'Son opposé, il modifie la police
'pour que le texte entre dans la cellule.
.ShrinkToFit = False 'or false...
End With
'zone de texte issue de la barre de dessin
With .Shapes("Zone de texte 1").OLEFormat.Object
'Assigne du texte à la zone de texte
.Text = Worksheets("Feuil1").Range("A1").Value
.Width = Worksheets("Feuil1").Range("A1").Width
.Height = Worksheets("Feuil1").Range("A1").Height
.Top = Worksheets("Feuil1").Range("A1").Top
.Left = .Top = Worksheets("Feuil1").Range("A1").Left
'Redimensionne automatiquement le contrôle
'à la teneur du texte.
.AutoSize = False
End With
End With
End Sub
'-------------------------------


Salutations!


"Syl" a écrit dans le message de news: MQ7kf.5939$
Bonjour Daniel!

J'ai essayé la propriété autofit mais sans succès car l'ajustement de la
cellule se fait en fonction du texte qui se trouve dans la cellule sans
tenir compte du texte qui se trouve dans le contrôle "Zone de Texte", même
si le contrôle est ajusté à la cellule.
Ce qu'il me faudrait en fait c'est une propriété autofit ou l'équivalent qui
s'appliquerait à l'objet Shape. Je ne sais trop comment m'y prendre.

Des idées...

Merci.


"Daniel" a écrit dans le message de news:

Bonjour.
A mon avis, le nombre de lignes dans la cellule ne correspond pas au
nombre de lignes de la textbox. Pourquoi n'utilises-tu pas
range("Xn").entirerow.autofit, pour dimensionner ta cellule ?
Cordialement.
Daniel