Hauteur de ligne automatique

Bonjour à tous, tout d'abord, toutes mes excuses à ceux auxquels je n'ai pas encore répondu sur mes sujets en cours, bcp de choses m'on imposer de laisser mon appli en stand by

pour le moment j'ai un problème à solutionner rapidement, mettre une ligne en hauteur automatique

j'ai essayé du code type :

Rows("XX").AutoFit ou

With Selection
.EntireRow.AutoFit
End With ou encore

Selection.Rows.AutoFit

rien n'y fait mes lignes rentent de la même hauteur

Je précise que j'ai des cellules fusionnées sur les lignes concernées et cela semble être le problème, quelqu'un aurait il une solution?

merci d'avance à tous

Bonjour,

AutoFit ne fonctionne que pour les colonnes... Essayez peut etre plutot avec Range.WrapText property (Excel) | Microsoft Learn

Rows("XX").WrapText = True

Sinon oui comme d'habitude les cellules fusionnées cassent tout : d'ailleurs c'est simple, essayez de double-cliquer pour allonger la hauteur d'une cellule fusionnée : il ne se passe rien car ce fonctionnement n'existe meme pas nativement dans Excel.

Un contournement pourrait être de compter les "Chr(10)" (retour chariot) dans la cellule et recalculer une hauteur de cellule en fonction de cela. Par exemple sélectionnez des cellules fusionnées (disons B2:B3) et essayez ce code:

Public Sub test()
  Dim str As String: str = Selection.Item(1).Value
  Dim nbr As Long: nbr = Len(str) - Len(Replace(str, Chr(10), ""))
  Selection.Item(1).RowHeight = Range("A1").RowHeight * nbr
End Sub

Mais bon c'est du bricolage et sujet à incohérences suivant la hauteur des autres lignes de la plage...

merci de votre retour, en effet j'utilise déjà la propriete wraptext mais malheureusement si la ligne n'est pas assez haute, on ne peut voir les dernière d'où ma recherche d'ajustement de hauteur (Le wraptext me sert pour ajuster par rapport à la largeur de la cellule ou zone fusionnée).

je continue d'essayer diverses solutions et reste preneur d'autres éventualitées

bonne journée

Bonsoir,

A tester

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cel In ActiveSheet.UsedRange
  If cel <> "" Then
    Set m = cel.MergeArea
    m.UnMerge
    m.WrapText = True 'renvoie à la ligne
    m.HorizontalAlignment = xlCenterAcrossSelection
    m.Rows.AutoFit
    m.Merge
    m.HorizontalAlignment = xlGeneral 'facultatif bien sûr
  End If
Next
End Sub

Slts

Bonjour et merci de l'intérêt porté à mon problème, je vais tester cela

bonne journée

A mon avis ça décale les lignes du dessus

Bon, petit retour, en effet la proposition de boss_68 fait des choses bizarre avec un fonctionnement aléatoire selon les lignes

J'ai donc mis en place un code "bricolage" avec une fonction qui calcule le nombre de lettres de la cellule et qui, en fonction de sa largeur défini ainsi une hauteur, c'est approximatif car toutes les lignes ne tiennent pas la même place mais globalement ça fait le job.

Merci à tous les participants de l'intérêt porté à mon problème

Bonne journée

Rechercher des sujets similaires à "hauteur ligne automatique"