web-dev-qa-db-fra.com

Comment faire en sorte qu'Excel "Ajuste automatiquement la hauteur des lignes" ajuste réellement la hauteur des lignes?

Pour chaque génération d'Excel dont je me souvienne (y compris 2010, que j'utilise maintenant), les fonctionnalités "Taille automatique des lignes" d'Excel ne permettent parfois pas de redimensionner automatiquement une ligne lorsque la cellule contient du texte enveloppé. Quand cela 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'il échoue, il ajoute un 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 le texte qui apparaît bien à l’écran est coupé lorsqu’il est imprimé. Vous obtenez également des tailles différentes selon que vous effectuez un zoom avant ou arrière ou à la 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: définissez la largeur de la colonne A sur 17,14 (125 pixels), le retour à la ligne et l'alignement des cellules en haut.)

(J'ai vérifié deux fois que j'ai appliqué l'ajustement automatique de la hauteur des lignes aux deux lignes. 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 recourir à un ajustement manuel de la hauteur des rangées (ce qui n’est pas pratique pour plus d’une poignée de rangées)?

85
devuxer

Une méthode que je viens de trouver (prolongeant un peu le post précédent):

  • Sélectionnez la feuille entière.
  • Redimensionner une colonne un peu plus large (étant donné que toute la feuille est sélectionnée, toutes les colonnes deviendront plus larges)
  • Double-cliquez sur un séparateur de ligne - la hauteur de la ligne sera ajustée automatiquement
  • Double-cliquez sur un séparateur de colonne - la largeur des colonnes sera ajustée automatiquement

Voila!

101
Nick Carrington

Le WYSIWYG d'Excel n'est pas le meilleur. Dans ta photo, "chat". à peine se faufile dans la 5ème ligne. Si vous réduisez le pourcentage de zoom à moins de 100% (99% par exemple.), Cliquez sur "cat". est maintenant renvoyé à la 6ème ligne. Je pense qu'Excel tente de s'ajuster automatiquement de manière à ce que tout soit presque toujours visible, quel que soit votre niveau de zoom.

Ce n'est pas le seul problème que vous aurez avec AutoFit. De plus, la façon dont une cellule enveloppée dans Word est imprimée ne correspond pas toujours à ce que vous voyez à l'écran. Prenez votre exemple et changez la police en Courrier tout en laissant une taille de 11.

Changed font to Courier

Comme vous pouvez le constater, la cellule A1 semble se voir attribuer 1,5 ligne supplémentaire. Maintenant, regardez l'aperçu avant impression, "chat". est complètement caché.

print preview of same file

D'après mon expérience, Excel rencontre ce problème avec certaines polices et tailles de polices plus que d'autres. Courier est pire que Courier New , la taille 11 est généralement inférieure à 10 ou 12. (Pourquoi ont-ils choisi la taille 11 comme nouvelle valeur par défaut, je n'en ai aucune idée.)

13
mischab1

Je viens d'écrire une petite macro à cet effet. Je lui ai assigné une touche de raccourci (Ctrl-Maj-J) et cela fonctionne comme un charme pour moi.

Sub ArrangeTable()
'set proper column width and row height for the current region
    With Selection.CurrentRegion
        .Columns.ColumnWidth = 200
        .Columns.EntireColumn.AutoFit
        .Rows.EntireRow.AutoFit
    End With
End Sub

Pour rendre cela disponible en permanence, vous pouvez facilement créer un complément à chargement automatique:

  • créer un module dans un nouveau classeur vierge et coller le code,
  • attribuez-lui la touche de raccourci que vous voulez,
  • puis Save As, Add-in, dans le dossier %appdata%\Microsoft\Excel\XLSTART
    Ainsi, il sera chargé de manière invisible à chaque démarrage d’Excel.
2
Patrick Honorez

J'ai moi aussi enduré ce microbe minuscule mais extrêmement distrayant pendant de nombreuses années. Je n'ai pas d'autre solution que de manipuler la largeur de la cellule contenant le plus de texte, et le programme finira par céder et afficher le texte correctement.

0
Andrew Buchanan

Parfois, il existe une méthode nucléaire pour résoudre les problèmes automatiques qui se comportent mal.

Ce que je fais est de copier le texte de chaque cellule et de coller les données dans le Bloc-notes, puis de supprimer la ligne. Ensuite, je copie et insère immédiatement une ligne vide, mais dont le formatage et le comportement sont identiques à ceux de la ligne supprimée. (Vous devez copier et insérer la ligne entière en utilisant les boutons de la ligne de gauche.)

Une fois que cela est fait, vous devez revenir en arrière et insérer le texte du bloc-notes dans chaque cellule. (Utilisation F2 ou bien activez le mode d’édition de chaque cellule avant d’insérer du texte.) C’est une douleur, c’est donc un dernier recours, en particulier pour les feuilles de calcul très larges.

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

0
Paul

Je n'ai pas testé cela à fond, mais cela fonctionne pour moi. Essentiellement, toutes les feuilles sont ajustées automatiquement, puis de nouveau en arrière et la largeur de la colonne est définie sur la largeur d'origine, à moins qu'elle ne soit étendue par l'ajustement automatique. Je n'avais que 10 colonnes et jamais plus de 1000 lignes, ajustez donc le code selon vos 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
0
Dan Williams

Il y a un kb article sur ce qui "suggère" (il est excessivement rare, à la mode classique de Microsoft) que si vous définissez une hauteur de ligne, l'ajustement automatique de la hauteur est définitivement supprimé pour cette ligne de la feuille de calcul. Les rangées dont vous n'avez pas encore touché la hauteur seront ajustées automatiquement.

Alors que vous pouvez réinitialiser les largeurs de colonne avec le paramètre "largeur standard" en 2003 (2007: conçu par madman, passez à "largeur par défaut"), mais ils ont oublié (encore une fois) (et encore) de l'inclure dans les lignes. La permanence semble donc inévitable. Cela signifie que si vous avez une hauteur par défaut de 15 et que vous créez une feuille et définissez toutes les hauteurs sur 12, vous venez de perdre l'ajustement automatique.

0

Dans certains cas, le problème d'espace supplémentaire dans certaines lignes après avoir appelé "Ajuster automatiquement la hauteur de ligne" peut être qu'une colonne masquée a du texte enveloppé dans ces lignes.

0
BobO

J'ai Excel 2010. J'ai constaté que ce problème m'était arrivé lorsque mon réglage de zoom n'était pas à 100%. Tant que je suis à 100%, je ne coupe pas le texte avec l'ajustement automatique des colonnes et des lignes.

0
Kevin Morin

Il y a une solution facile:

1) Sélectionnez toutes les lignes que vous souhaitez formater automatiquement (s'il s'agit d'un gros bloc, cliquez sur le premier puis appuyez sur Maj + Fin et Maj + Bas)

2) Cliquez avec le bouton droit de la souris sur la sélection, Formatage des cellules, onglet Alignement, et décochez l'option de renvoi à la ligne.

J'espère que cela t'aides ;)

0
Pedro