Comment faire en sorte que la fonction «Ajuster automatiquement la hauteur des lignes» d'Excel s'adapte réellement à la hauteur des lignes?

88

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 parviennent parfois pas à 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é lors de son impression. 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), l’habillage du texte 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%.)

L'ajustement automatique échoue pour la première ligne et réussit pour la seconde

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

devuxer
la source
Si quelqu'un souhaite reproduire l'exemple de ma question, la largeur de la colonne A est 17,15 (125 pixels).
devuxer
1
Un bug semble dépendre de la police et de la taille de la police
Raystafarian
1
@Raystafarian, ne semble pas fonctionner avec Wrap Text activé.
Devuxer
1
J'ai essayé d'ajuster automatiquement les colonnes, ce qui a élargi une colonne, puis d'ajuster automatiquement les lignes. Cela fait passer de 73 à 64 pages, mais il reste encore beaucoup de lignes vides au bas de la plupart des lignes. J'ai les lignes alignées en haut. Si vous modifiez manuellement la taille des lignes, le résultat est correct lorsque je travaille sur le document, mais pas dans l'aperçu ni dans l'impression.
1
Oui, si ennuyeux!
Voir

Réponses:

105

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 seront 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 - les largeurs de colonne seront ajustées automatiquement

Voila!

Nick Carrington
la source
2
Cela semble vraiment fonctionner. La zone grise est celle où vous dites "un peu plus large". L’un des exemples que j’ai essayés ne marchait que si j’allongeais assez la colonne, mais j’ai finalement réussi à la faire fonctionner. Merci!
devuxer
5
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é la hauteur des lignes.
Keith Sirmons
6
Notez que l’ajustement automatique ne fonctionne pas avec les cellules fusionnées: support.microsoft.com/kb/212010
freb
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
Attendez une minute, cette méthode a pour effet secondaire d'augmenter la largeur de toutes les colonnes de la feuille, n'est-ce pas?
Ant_222
13

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 manière dont une cellule d’emballage mot-motivée 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.

Changement de police en Courrier

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é.

aperçu avant impression du même fichier

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 ont-ils choisi la taille 11 comme nouvelle valeur par défaut, je n'en ai aucune idée.)

mischab1
la source
Alors ... fondamentalement, ils l'ont cassé. Votre explication est plausible cependant, mais ça me
gêne
3

Je viens d'écrire une petite macro à cet effet. Je lui ai assigné un raccourci clavier (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,
  • ensuite Save As, Add-indans un dossier De %appdata%\Microsoft\Excel\XLSTART
    cette façon, il sera chargé de manière invisible à chaque démarrage d’Excel.
Patrick Honorez
la source
Vous pouvez également procéder de la manière suivante: Private Sub Worksheet_Change (cible ByVal en tant que plage) ArrangeTable End Sub
kurdtpage
0

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

BobO
la source
Ce qui n'est pas le cas dans cette question.
Dmitry Grigoryev
0

Il existe un article de kb sur ce sujet 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 automatique 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) (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 perdez tout simplement l'ajustement automatique.

GatesIsAntichrist
la source
1
Je ne peux pas dupliquer ce comportement. Dès que je fais "Ajuster automatiquement la hauteur de la ligne", tout réglage manuel de la hauteur pour cette ligne est immédiatement remplacé par la hauteur de l'ajustement automatique. Le problème est simplement que la hauteur d'ajustement automatique est souvent fausse.
Devuxer
Je peux reproduire ce comportement. C'est exactement comme cela fonctionne pour moi.
Peter Nore
0

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 avec le même formatage et le même comportement que 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. (Utilisez F2ou 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.

Paul
la source
1
copier le texte de chaque cellule - cela semble nécessiter autant de travail que le formatage manuel.
Dmitry Grigoryev le
0

Je n'ai pas testé cela à fond, mais cela fonctionne pour moi. Essentiellement, toutes les feuilles sont ajustées automatiquement, puis remontent et définissent la largeur de la colonne 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
Dan Williams
la source
Comment cela résout-il le bogue d'ajustement automatique? Vous ajustez automatiquement les lignes, puis ajustez automatiquement les colonnes, puis redimensionnez les largeurs de colonne d'origine. Pourquoi se termine-t-il avec la bonne hauteur de rangée? À propos, totalWidthest au chômage.
Ant_222
Cela ne fonctionne pas pleinement pour moi, car vous ne restaurez la largeur que des colonnes qui sont devenues plus étroites. Votre algorithme ne conserve donc pas la largeur de la colonne.
Ant_222
-1

Pour paraphraser Dunc :

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

  1. Sélection de la feuille de calcul entière.

  2. Double-cliquez sur la ligne dans la marge entre les deux lignes.

Spécifiquement pour aborder votre problème de cette ligne supplémentaire, je suppose qu'il y a un personnage là-bas. Ce n'est peut-être pas un personnage visible, mais il y a certainement quelque chose.

Wizlog
la source
3
Vos étapes ne diffèrent pas de ce que j'ai déjà essayé (double-cliquer entre les lignes est simplement un raccourci pour "Ajuster automatiquement la hauteur des lignes"). En ce qui concerne votre théorie selon laquelle il y a un caractère supplémentaire, vous avez peut-être raison, mais je n'en ai certainement pas tapé un, et je ne saurais pas comment m'en débarrasser. Je vous invite à essayer de saisir le texte exact tel que je l’ai dans mon illustration dans Excel et de voir si vous obtenez les mêmes résultats.
Devuxer
1
Il n'y a pas de personnage sur le mien.
Raystafarian
-1

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

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 double-cliquez entre les lignes, elle sera redimensionnée en conséquence.

Renier Wessels
la source
4
Je ne doute pas que vous ayez raison, mais alors ce n'est plus "auto", c'est manuel.
devuxer
-1

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 ligne de la cellule contenant le plus de texte, et le programme finira par céder et afficher le texte correctement.

Andrew Buchanan
la source
bidouiller la largeur des rangées n’est pas une solution reproductible.
Dmitry Grigoryev Le
-1

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, puis décochez l'option d'afficher le texte.

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

Pedro
la source
1
Si vous décochez cette case Wrap text, il ne sert à rien d'ajuster automatiquement la hauteur de vos lignes, car toutes les lignes auront la même taille.
Dmitry Grigoryev
Ce problème me préoccupe depuis des années. Le basculement du texte d'habillage pour une ligne problématique a rétabli la fonction d'ajustement automatique.
Mitch
-1

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.

Kevin Morin
la source
3
Dans l'exemple que j'ai utilisé pour ma question, j'étais au zoom = 100% tout le temps. Le problème est arrivé malgré tout.
Devuxer
-1

Mon hypothèse est qu'Excel se noue lorsqu'il doit prolonger trop de lignes. J'ai eu une expérience similaire à celle ci-dessus. On dirait qu'il y a un extra NL / CR / LF à la fin mais je sais qu'il n'y en a pas. Si je construis la cellule quelques caractères à la fois, il met en forme automatiquement OK jusqu'à ce qu'une taille particulière soit atteinte, puis il insère la ligne supplémentaire. (Un comportement similaire à l’inverse se produit si vous commencez par supprimer certains caractères.) Il se produit à des moments différents avec des cellules différentes.

Bummer!

Donc, si vous pouvez étendre la largeur de la cellule, vous pouvez probablement éviter le problème. Si vous ne pouvez pas (comme dans mon cas), vous êtes bloqué avec le formatage manuel. Comme je le disais, "Bummer!"

GeoffH
la source
-1

En fait, il y a un personnage supplémentaire. C'est le caractère LF caché qui se trouve à la fin de chaque champ. Lorsque le texte est juste à la bonne taille, la rangée supplémentaire contient le caractère LF. Le redimensionnement de la largeur de la colonne, comme le suggèrent d’autres personnes, résoudra le problème de cette cellule. Toutefois, si votre feuille de calcul contient de nombreuses valeurs de taille variable dans cette même colonne, il est possible que le correctif de cette cellule provoque le problème dans une autre cellule de la colonne. . J'ai appris à vivre avec la plupart du temps.

phipywr
la source
Il n’ya certainement aucun caractère LF caché à la fin de chaque champ, à moins bien sûr que le PO l’ait mis là avec Alt + Entrée. La question concerne vraiment le cas où il n'y a pas de caractère de nouvelle ligne, mais Excel ne parvient toujours pas à aligner correctement les cellules.
Dmitry Grigoryev
-2

Ce qui a fonctionné pour moi (Excel 2010) a été de supprimer une centaine de colonnes inutilisées à droite de mes données. Je peux seulement deviner qu’il ya quelque chose qui fait que la hauteur de la rangée automatique ne se comporte pas bien.

Runk
la source
4
Je peux voir comment cela aiderait, mais cela ne fait aucune différence pour le cas de test présenté dans ma question.
devuxer
-2

sélectionnez toutes les cellules, et cliquez sur la ligne qui sépare les lignes deux fois ... il le fera automatiquement.

Paul
la source