Question Comment faire pour que la fonction "Hauteur ajustement automatique" d'Excel s'adapte automatiquement à la hauteur de la ligne?


Pour chaque génération d'Excel, je peux me rappeler (y compris en 2010, que j'utilise maintenant), les fonctions "Taille automatique" d'Excel ne parviennent parfois pas à définir automatiquement une ligne lorsque la cellule contient du texte encapsulé. Lorsque 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. En cas d'échec, il ajoute de l'espace 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 correct à l’écran est coupé au moment de l’impression. Vous obtenez également des tailles différentes selon que vous effectuez un zoom avant / arrière ou une taille réelle.

Cas de test simple:

Pourquoi y a-t-il un écart 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 à 17.14 (125 pixels), le retour à la ligne et l'alignement de la cellule.)

(J'ai vérifié que j'appliquais Auto Fit Row Height aux deux lignes. Le niveau de zoom est de 100%.)

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

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


84
2018-02-14 21:16


origine


Si quelqu'un veut reproduire l'exemple de ma question, la largeur de la colonne A est de 17,15 (125 pixels). - devuxer
Le bogue semble dépendre de la police et de la taille de la police - Raystafarian
@Raystafarian ne semble pas fonctionner avec Wrap Text activé. - devuxer
J'ai essayé d'auto-adapter les colonnes, ce qui a élargi une colonne, puis ajusté automatiquement les lignes. Cela a ramené de 73 à 64 pages, mais encore beaucoup de lignes vides au bas de la plupart des lignes. J'ai les lignes alignées en haut. Changer manuellement la taille des lignes donne l'impression que je travaille sur la doc, mais pas dans l'aperçu ou dans l'impression.
Oui, tellement ennuyeux! A également vu cela au moins dans Excel 2007. Ne vous souvenez jamais de l'avoir vu dans Excel 2003. - abstrask


Réponses:


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

  • Sélectionnez la feuille entière.
  • Redimensionner une colonne un peu plus large (car le la feuille entière est sélectionnée, toutes les colonnes seront plus larges)
  • Double-cliquez sur un séparateur de lignes - la hauteur de la ligne sera ajustée automatiquement
  • Double-cliquez sur un séparateur de colonne - les largeurs de colonne seront ajustées automatiquement

Voila!


97
2017-12-05 10:49



Cela semble vraiment fonctionner. La seule zone grise est l'endroit où vous dites "un peu plus large". L'un des exemples que j'ai essayés n'a pas fonctionné à moins que je ne l'étende assez, mais j'ai fini par le faire fonctionner. Merci! - devuxer
J'ai sélectionné la feuille entière puis double-cliqué sur le séparateur de lignes entre deux lignes aléatoires et le document entier a réajusté les hauteurs des lignes. - Keith Sirmons
Notez que AutoFit ne fonctionne pas pour les cellules fusionnées: support.microsoft.com/kb/212010 - freb
Impressionnant! Est-ce que quelqu'un sait ceci est possible dans un script VBA? - Andreas Furster
Cette méthode ne fonctionne-t-elle que si toutes les colonnes ont la même largeur? Lorsque j'ai redimensionné une colonne un peu plus large, toutes les autres colonnes ont la même largeur (dans Excel 2010). - Ed Greaves


Excel WYSIWYG n'est pas le meilleur. Dans ta photo, "chat" se glisse à peine dans la 5ème ligne. Si vous réduisez le pourcentage de zoom à moins de 100% (99% par exemple), alors "chat". est maintenant enveloppé à la 6ème ligne. Je pense qu'Excel essaie de s'adapter 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 rencontrerez avec AutoFit. De plus, la manière dont une cellule est enveloppée de mots ne correspond pas toujours à ce que vous voyez à l'écran. Prenez votre exemple et changez la police en Courier en laissant la taille à 11.

Changed font to Courier

Comme vous pouvez le voir, la cellule A1 semble avoir 1,5 lignes supplémentaires. Regardez maintenant 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. Courrier est pire que Courier New, la taille 11 est généralement inférieure à 10 ou 12. (Pourquoi ils ont choisi la taille 11 comme nouveau défaut, je n'en ai aucune idée.)


13
2018-02-15 19:07



Donc, fondamentalement, ils l'ont brisé. Vous êtes une explication plausible, mais ça m'embête vraiment, c'est comme ça: - / - abstrask


Je viens d'écrire une petite macro à cette fin. Je lui ai attribué une touche de raccourci (Ctrl-Shift-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 de chargement automatique:

  • créer un module dans un nouveau classeur vierge et coller le code,
  • attribuez-lui la touche de raccourci souhaitée,
  • puis Save As, Add-in, au dossier %appdata%\Microsoft\Excel\XLSTART
    De cette façon, il sera chargé de manière invisible chaque fois que vous démarrez Excel.

2
2018-01-22 08:51



Ou vous pouvez faire ceci: Sous-feuille de travail privée Change_Change (ByVal Target As Range) ArrangementTable End Sub - kurdtpage


Dans certains cas, le problème de l'espace supplémentaire dans certaines lignes après l'invocation de "AutoFit Row Height" peut être qu'une colonne masquée contient du texte dans ces lignes.


0
2018-06-21 14:33



Ce qui n'est pas le cas dans cette question. - Dmitry Grigoryev


J'ai aussi enduré ce minuscule mais extrêmement dérangeant bug pendant de nombreuses années. Je n'ai pas d'autre solution que de bidouiller la largeur des lignes de la cellule avec le plus de texte, et le programme finira par se relâcher et afficher correctement le texte.


0
2018-01-01 11:17



bricoler avec la largeur de la rangée n'est pas une solution reproductible. - Dmitry Grigoryev


Il existe une solution simple:

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 sur la sélection, Format des cellules, onglet Alignement, décochez la case Encapsuler le texte.

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


0
2018-02-26 11:57



Si vous décochez Wrap text, il est inutile d'ajuster automatiquement votre hauteur de ligne, car toutes les lignes auront la même taille. - Dmitry Grigoryev
J'ai été dérangé par ce problème pendant des années. Basculer Wrap Text pour une ligne gênante a restauré la fonction autofit. - Mitch


J'ai Excel 2010. J'ai constaté que ce problème m'est arrivé lorsque mon paramètre Zoom n'était pas à 100%. Tant que je suis à 100%, je ne coupe pas le texte avec AutoFit pour les colonnes et les lignes


0
2018-04-08 16:10



Dans l'exemple que j'ai utilisé pour ma question, j'étais à zoom = 100% tout le temps. Le problème s'est produit indépendamment. - devuxer


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

Alors que vous pouvez réinitialiser les largeurs de colonne avec le paramètre "standard width" en 2003 (conçu par madman en 2007: passez à "width par défaut"), mais ils ont oublié (et encore) (et encore) pour 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 que vous définissez toutes les hauteurs à 12, vous venez de renoncer à l'auto-adaptation automatique.


0
2018-05-01 19:58



Je ne peux pas reproduire ce comportement. Dès que je fais "Ajuster automatiquement la hauteur de la rangée", tout réglage manuel de la hauteur de cette rangée est immédiatement remplacé par la hauteur ajustée automatiquement. Le problème est simplement que la hauteur ajustée est souvent incorrecte. - devuxer
Je PEUX dupliquer ce comportement. C'est exactement comme cela fonctionne pour moi. - Peter Nore


Parfois, il existe une méthode nucléaire pour résoudre les problèmes d’autoproblèmes.

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 vide mais a la même mise en forme et le même comportement que la ligne qui a été supprimée. (Vous devez copier et insérer la ligne entière en utilisant les boutons de la rangée gauche.)

Une fois cela 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 pénible, 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
2017-07-05 17:03



copier le texte de chaque cellule - Cela semble nécessiter autant de travail que le formatage manuel. - Dmitry Grigoryev


Je n'ai pas testé cela de manière approfondie, mais cela a fonctionné pour moi. Essentiellement, elle ajustera automatiquement toutes les feuilles, puis retournera à travers et définira la largeur de la colonne à la largeur d'origine, à moins qu'elle ne soit prolongée par le réglage automatique. Je n'avais que 10 colonnes et jamais plus de 1000 lignes, donc ajustez 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
2018-01-08 19:14



Comment résout-il le bogue Autofitting? Vous ajustez automatiquement les lignes, puis vous réglez automatiquement les colonnes, puis vous redimensionnez les largeurs de colonne d'origine. Pourquoi se retrouve-t-il avec la bonne hauteur de ligne de montage? Au fait, totalWidth est au chômage - Ant_222
Cela ne fonctionne pas complètement pour moi, car vous restaurez seulement la largeur de ces colonnes devenues plus étroites. Votre algorithme ne conserve donc pas la largeur de la colonne. - Ant_222