RESOLU Modification de la hauteur de ligne si le texte prend trop de place

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

gant1801

XLDnaute Junior
Bonjour le forum,
Tout d’abord je remercie les personnes participant et répondant aux posts, grâce auxquelles j’ai commencé à apprendre le principe des macros.
J’ai néanmoins une question qui, sauf erreur de ma part, n’a pas encore été posée.

J’ai un tableur excel dans lequel je rentre mes données. Chaque ligne fait par défaut 1cm de hauteur. Je souhaiterais que si le texte rentré prend trop de place, la hauteur de ligne s’ajuste automatiquement.
J’ai essayé avec le code suivant, ma macro fonctionne mais je pense qu’elle n’est pas optimisée.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim L As Integer
L = Target.Row
Rows(L).EntireRow.AutoFit
If Rows(L).RowHeight < 28 Then
Rows(L).RowHeight = 28
End If
End Sub

En effet, avec cette macro, la ligne est automatiquement modifiée puis est remise dans l’état initial si la condition est vérifiée. Ce que j’aimerais avoir c’est une macro qui teste avant, et qui modifie la hauteur uniquement après et si nécessaire.
Merci à tous
 
Dernière édition:
Re : Modification de la hauteur de ligne si le texte prend trop de place

Bonsoir gant1801,

Je te propose d'essayer comme ceci (non testé) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim L As Integer
    L = Target.Row
    Rows(L).EntireRow.RowHeight = WorksheetFunction.Max(28, Rows(L).EntireRowAutoFit)
End Sub
Cordialement.
 
Re : Modification de la hauteur de ligne si le texte prend trop de place

Bonsoir Papou,

Merci d'avoir consacré du temps à mon soucis,
Malheureusement ton code beug (je ne vois pas trop pourquoi, il me semblait correct hormis le fait que j'aurais mit Min au lieu de Max).
Par ailleurs, la solution que tu envisages ne serait-elle pas elle aussi un peu lourde?
Je m'explique: Avec cette solution, vba engendrerait une modification à chaque fois qu'il y aurait une modification, et non uniquement si nécessaire.
Mais je me fais peut-être des idées, le fait d'exécuter le code à chaque modification n'est peut-être pas si lourd?
Merci dans tous les cas!
 
Re : Modification de la hauteur de ligne si le texte prend trop de place

Bonsoir Papou,

Merci d'avoir consacré du temps à mon soucis,
Malheureusement ton code beug (je ne vois pas trop pourquoi, il me semblait correct hormis le fait que j'aurais mit Min au lieu de Max).
Par ailleurs, la solution que tu envisages ne serait-elle pas elle aussi un peu lourde?
Je m'explique: Avec cette solution, vba engendrerait une modification à chaque fois qu'il y aurait une modification, et non uniquement si nécessaire.
Mais je me fais peut-être des idées, le fait d'exécuter le code à chaque modification n'est peut-être pas si lourd?
Merci dans tous les cas!

Bonjour gant1801,

J'ai fait un essai, et hormis un point manquant entre EntireRow et AutoFit (EntireRow.AutoFit), il ne semble pas possible de procéder autrement que par l'adaptation de la hauteur en fonction du contenu avant de tester la hauteur finale.

Voici donc qui devrait fonctionner (sur Mac je ne sais pas, mais sur PC j'ai testé c'est OK) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Target.EntireRow.AutoFit
    Target.RowHeight = WorksheetFunction.Max(28, Target.RowHeight)
End Sub
Je ne pense pas que cette solution soit lourde et qu'il soit possible de faire plus simple, du moins en l'état de mes connaissances. Il faut bien dire à VBA à quel moment il doit agir, et c'est bien lors de la modification du contenu d'une cellule qu'il doit adapter la hauteur. C'est d'ailleurs ce que tu as fait toi-même et c'est la solution.

Par contre, tu peux limiter l'action de la macro à une plage de cellule déterminée, mais de toute façon le code est si court qu'il ne ralentit en rien le programme.

Par contre, je confirme qu'il faut bien appliquer la valeur Max. En effet, la hauteur de base étant 28, si le texte est trop long il faut donc bien l'augmenter.

Espérant avoir répondu.

Cordialement.
 
Re : Modification de la hauteur de ligne si le texte prend trop de place

Bonjour Papou,

Ta solution marche aussi sur MAC et semble plus adaptée que la mienne.
Je te remercie donc pour tes conseils avisés!

En revanche, je ne sais pas comment noter que le problème est résolu vis à vis du forum?

Merci de m'avoir consacré du temps

Cordialement,
Gant
 
Re : Modification de la hauteur de ligne si le texte prend trop de place

Moi je modifie mon tout premier post du fil et j'inscrit RÉSOLU dans le motif de modification et j'ajoute RÉSOLU sur la ligne de mon titre avant ce dernier.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour