Adapter la hauteur de ligne pour une cellule fusionnée

Salut tout le monde ,

J'ai un problème que je n'arrive pas à résoudre et malheureusement je ne trouve aucune réponse dans les sujets déjà existants.

Pour faire simple, je possède un Userform avec une plusieurs TextBox dont une où l'utilisateur est censé entrer pas mal de texte.

Une fois le Userform remplit, lorsque je clic sur "SUIVANT", les informations présentent dans les TextBox s'inscrivent dans des cellules sur une feuille. C'est la que vient mon problème :

Pour ma Textbox contenant beaucoup de "texte", le contenu doit s'inscrire dans des cellules fusionnées. Le problème est que si le texte est trop long, la hauteur de ligne de la cellule ne s'adapte pas automatiquement.

J'aimerais donc savoir si quelqu'un avez une solution pour adapter la "hauteur de ligne" d'une cellule fusionnée au texte présent dans celle-ci?

J'ai essayé avec "EntireRow.AutoFit" mais ca ne fonctionne pas

Merci pour votre aide


Voici un petit exemple

36exemple2.xlsm (21.21 Ko)

Bonjour,

Autofit ne fonctionne pas sur les plages de cellules fusionnées.

DFPK399 a écrit :

... dont une où l'utilisateur est censé entrer pas mal de texte. ...

Ça peut représenter combien de caractères ?

Dans le textbox, on peut limiter ce nombre de caractères, est-ce que tu prévois instaurer une telle limite ?

Dans une cellule, la hauteur est limitée à 409 points ...

La taille de la police doit aussi être mise dans la balance...

La largeur des colonnes de la plage("E8:I9") est-elle invariable ? Ou peut-on augmenter si nécessaire ?

Il est bien difficile de remplacer Autofit, malgré que Autofit est, lui-même, limité par la hauteur maximale des lignes (409 points).

Gelinotte

Bonjour Gelinotte,

En réalité sur mon fichier "vrai fichier" les cellules fusionnées vont de B7 à E19. Pour le nombre de caractères je ne sais pas exactement mais je tablerais sur le tiers d'une page Word maximum (je ne sais pas combien ça fait de caractères). Pour la taille de police elle est à 9...

Autofit ne marche pas pour les cellules fusionnées c'est malheureusement ce que j'avais compris. Pensez-vous qu'il existe une alternative à ce probleme?

Merci pour votre aide.

Bonjour,

Il me manque un renseignement ... la largeur des colonnes : B, C, D et E pour les éléments de calculs de la bidouille.

Gelinotte

Bonjour,

pour des raisons diverses et variées, je n'utilise JAMAIS de fusions de cellules, ça ne pose que des soucis

P.

Bonjour,

Si la fonction de fusion de cellules existe, c'est que dans certains cas, elle est intéressante ... tout dépend du contexte.

Mais chacun y va selon ses goûts et préférences ...

Gelinotte

Bonjour Gelinotte,

Je vais vous renvoyer un fichier avec la taille exacte de cette cellule fusionnée

Merci encore

Bonjour,

Bouts de code glanés ici et là... ce n'est peut-être pas très propre aux yeux de plusieurs... de ces gens, je ne souhaite qu'une aide généreuse...

Un essai sur la macro du userform ...

Private Sub CommandButton1_Click()
Dim r, c As Range
Dim Hh As Integer
Dim Ccolone As Integer
Dim Z As Byte

Sheets("Feuil1").Select
Range("B7:E19").Select
   With Selection
      .HorizontalAlignment = xlCenter
      .VerticalAlignment = xlCenter
      .WrapText = True
      .Orientation = 0
      .AddIndent = False
      .IndentLevel = 0
      .ShrinkToFit = False
      .ReadingOrder = xlContext
      .MergeCells = False
      .Font.Size = 9
    End With
    Selection.Merge
    Selection.Font.Bold = True
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlMedium
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("B7") = Me.TextBox1

Ccolone = Len(Me.TextBox1)  ' lit le nombre de caractères
Set r = Range("B7:B19")
For Each c In r
   If c.MergeCells = True Then
      c.Select
      With ActiveCell
         .WrapText = True
         .UnMerge
         Rows(.Row).AutoFit
         Hh = .Width * .Height / Selection.Width
         Selection.Merge
      End With
   End If
Next

Select Case Ccolone  ' choisis le diviseur selon le nombre de caractères

Case Is < 1000
   Hh = Hh / 6   ' 1000
Case Is < 1250
   Hh = Hh / 5  ' 1250
Case Is < 1500
   Hh = Hh / 4.5   ' 1500
Case Is < 1750
   Hh = Hh / 4   ' 1750
Case Is > 1750
   Hh = Hh / 3.3 ' 2000 caractère
Case Else
   Hh = 15
End Select

For Z = 7 To 19
   Range("B" & Z).RowHeight = Hh  ' Applique la hauteur de la ligne
Next Z

UserForm1.Hide
End Sub  

Voici les cellules comme elles se trouvent réellement sur mon fichier

118exemple2.xlsm (24.00 Ko)

Merci pour cette réponse,

J'ai adapté le code à mon fichier et ça semble fonctionner. C'est pas comme du "Autofit" mais ça dépanne très bien.

Merci beaucoup pour votre aide. Ce forum est vraiment très réactif.

Bonne journée a vous

Rechercher des sujets similaires à "adapter hauteur ligne fusionnee"