104 votes

Comment faire en sorte que la fonction "Ajustement automatique de la hauteur de la ligne" d'Excel s'adapte réellement à la hauteur de la ligne ?

Pour toutes les générations d'Excel dont je me souvienne (y compris 2010, que j'utilise actuellement), la fonction "Auto Size Row" d'Excel ne parvient pas toujours à dimensionner automatiquement une ligne lorsque la cellule contient du texte enveloppé. Lorsqu'elle fonctionne correctement, tout le texte est révélé et il n'y a pas d'espace supplémentaire sous la dernière ligne de texte. Lorsqu'elle ne fonctionne pas, elle ajoute de l'espace supplémentaire sous le texte. Pour aggraver les choses, ce que vous voyez n'est pas toujours ce que vous obtenez, c'est-à-dire que du texte qui semblait correct à l'écran est coupé à l'impression. Vous obtenez également des tailles différentes selon que vous êtes en zoom avant/arrière ou en taille réelle.

Cas de test simple :

Pourquoi y a-t-il un espace d'une ligne après le texte dans la cellule A1 mais pas dans A2 ?

(Pour reproduire : réglez la largeur de la colonne A sur 17,14 (125 pixels), l'habillage du texte sur, et l'alignement des cellules en haut).

(J'ai vérifié deux fois que j'ai appliqué la fonction Auto Fit Row Height aux deux rangées. Le niveau de zoom est de 100%).

Auto Fit fails for the first row, succeeds for the second

Existe-t-il un remède connu à ce problème sans avoir à ajuster manuellement la hauteur des rangées (ce qui n'est pas pratique pour plus d'une poignée de rangées) ?

0voto

Paul Points 1

Il existe parfois la méthode nucléaire pour résoudre les problèmes d'autosatisfaction.

Ce que je fais, c'est copier le texte de chaque cellule et coller les données dans le Bloc-notes, puis supprimer la ligne. Ensuite, je copie et insère immédiatement une ligne qui est vide mais qui a le même formatage et le même comportement que la ligne qui a été supprimée. (Vous devez copier et insérer la rangée entière en utilisant les boutons de rangée gauche).

Une fois que c'est fait, vous devez revenir en arrière et insérer le texte du bloc-notes dans chaque cellule. (Utilisez F2 ou activer autrement le mode édition de chaque cellule avant d'insérer du texte). C'est une tâche pénible, et c'est donc une solution de dernier recours, surtout pour les feuilles de calcul de taille gigantesque.

C'est parfois la seule solution, car le problème réside dans le programme lui-même.

0voto

nomadinca Points 1

Je ne l'ai pas testé en profondeur, mais cela fonctionne pour moi. Essentiellement, il ajustera automatiquement toutes les feuilles, puis reviendra en arrière et fixera la largeur de la colonne à la largeur originale, à moins qu'elle n'ait été étendue par l'ajustement automatique. Je n'avais que 10 colonnes et jamais plus de 1000 lignes, donc j'ai ajusté le code selon les besoins.

Sub ResizeCells()
    Dim sheetCounter As Integer
    Dim rowCounter As Integer
    Dim colCounter As Integer
    Dim totalWidth As Double
    Dim oldColWidths(1 To 10) As Double

    For sheetCounter = 1 To ThisWorkbook.Sheets.Count
        ActiveWorkbook.Worksheets(sheetCounter).Select
        totalWidth = 0

        ' Extend the columns out to 200
        For colCounter = 1 To 10
            oldColWidths(colCounter) = Cells(1, colCounter).ColumnWidth
            totalWidth = totalWidth + oldColWidths(colCounter)
            Cells(1, colCounter).ColumnWidth = 200
        Next

        For rowCounter = 4 To 1000
            If Cells(rowCounter, 1).Value <> "" Or Cells(rowCounter, 2).Value <> "" Or Cells(rowCounter, 3).Value <> "" Then
                Rows(rowCounter & ":" & rowCounter).EntireRow.AutoFit
            End If
        Next

        ' do autofit
        For colCounter = 1 To 10
            Cells(1, colCounter).EntireColumn.AutoFit
        Next

        ' reset to original values if current width is less than the original width.
        For colCounter = 1 To 10
            If Cells(1, colCounter).ColumnWidth < oldColWidths(colCounter) + 0.25 Then
                Cells(1, colCounter).ColumnWidth = oldColWidths(colCounter)
            End If
        Next
    Next
End Sub

-1voto

wizlog Points 13021

Pour paraphraser Dunc :

J'ai résolu un problème similaire en.. :

  1. Sélection de l'ensemble de la feuille de calcul.

  2. Double-cliquez sur la ligne dans la marge entre les deux rangées.

Pour répondre spécifiquement à votre problème de ligne supplémentaire, je suppose qu'il y a un caractère à cet endroit. Il ne s'agit peut-être pas d'un caractère visible, mais il y a bien quelque chose.

-1voto

JMac Points 43

Je n'ai pas pris le temps de lire les autres commentaires. Pourquoi la ligne au bas du premier bloc et pas dans le second ?

C'est parce que le texte se termine trop près du bord droit de la cellule. Si vous ajustez la colonne pour qu'elle soit un peu plus large et que vous double-cliquez entre les rangées, le texte sera redimensionné en conséquence.

-1voto

dusan Points 3778

Moi aussi, j'ai enduré ce minuscule mais extrêmement distrayant bug pendant de nombreuses années. Je n'ai pas d'autre solution que de jouer avec la largeur de la rangée pour la cellule contenant le plus de texte, et finalement le programme cède et affiche le texte correctement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X