TL;DR —
WrapText = Truedit à Excel de répartir un texte long sur plusieurs lignes dans la largeur de la colonne au lieu de déborder sur la cellule suivante. Cela remodèle la cellule — mais la ligne ne devient plus haute que si sa hauteur est encore en automatique. Si une macro (ou une cellule fusionnée) a figé unRowHeightexplicite, le texte se renvoie de façon invisible et reste tronqué. Pour voir réellement le texte renvoyé, exécutez la chorégraphie en trois temps : fixez une largeur de colonne, activezWrapText, puis appelezRows.AutoFitpour que la ligne grandisse à la nouvelle forme.
' Le renvoi remodele la cellule ; la hauteur de ligne doit etre libre de grandir pour le montrer.
Columns("C").ColumnWidth = 40 ' 1) donner au texte une largeur fixe contre quoi se renvoyer
Range("C2:C100").WrapText = True ' 2) repartir le texte long sur plusieurs lignes
Range("C2:C100").EntireRow.AutoFit ' 3) laisser les lignes grandir pour tenir le texte renvoye
' Le desactiver :
Range("C2:C100").WrapText = False
WrapText est le jumeau, en code, du bouton Renvoyer à la ligne automatiquement de l'onglet Accueil.
Sans lui, un libellé long file vers la droite, caché dès que la cellule voisine contient quoi que ce
soit. Avec lui, le même libellé se plie sur deux ou trois lignes et reste dans sa colonne. Jusque-là, le
bouton le montre clairement. Ce que le bouton cache — et ce qui fait trébucher chaque macro qui tente de
l'automatiser — c'est que le renvoi est mêlé à la hauteur de ligne, et obtenir un rendu lisible impose
de traiter les deux ensemble.
Ce que vous allez apprendre
- Le modèle mental —
WrapTextremodèle la cellule ; il ne change pas le texte - La seule règle qui compte — le renvoi n'agrandit la ligne que lorsque la hauteur est en automatique
- La séquence en trois temps qui fait vraiment apparaître le texte renvoyé (largeur, renvoi, AutoFit)
WrapTextface à un saut de ligne forcé (Chr(10)/ Alt+Entrée)- Relire
WrapText, et pourquoi une plage mixte renvoieNull - Quelles colonnes renvoyer et lesquelles laisser tranquilles
Le modèle mental : remodeler la cellule, pas modifier le texte
Activer le renvoi ne touche pas à la valeur de la cellule. "North America regional summary" est la même
chaîne avant et après ; ce qui change, c'est la mise en page qu'en fait Excel. Désactivé, la chaîne est
dessinée sur une seule ligne qui déborde vers la droite jusqu'à ce qu'un voisin la bloque. Activé, Excel
la plie en lignes qui tiennent chacune dans la largeur de la colonne, empilées vers le bas. Voyez
WrapText comme un changement de la forme de la boîte où vit le texte — plus étroite et plus haute —
pas du texte lui-même.
Ce changement de forme est tout l'enjeu, et il explique la seule chose que les débutants ratent : une boîte qui empile plusieurs lignes a besoin d'une ligne plus haute pour toutes les afficher. Le renvoi et la hauteur de ligne sont les deux moitiés d'une même idée. Vous ne pouvez pas changer l'un en ignorant l'autre et espérer que le résultat ait l'air correct.
La règle qui compte le plus : le renvoi n'agrandit la ligne que si la hauteur est libre
Voici l'erreur derrière presque tous les rapports « j'ai activé WrapText mais rien ne se renvoie ».
WrapText = True plie le texte à l'intérieur, mais la ligne ne devient plus haute pour révéler ces
lignes supplémentaires que si sa hauteur est en automatique. Si quoi que ce soit a déjà fixé la
hauteur, Excel conserve cette hauteur et coupe les lignes renvoyées hors de vue :
Rows(2).RowHeight = 15 ' une macro a fige la hauteur plus tot...
Range("C2").WrapText = True ' le texte se renvoie a l'interieur, mais la ligne reste a 15pt - tronque
Deux choses figent couramment la hauteur : une macro qui a réglé RowHeight sur un nombre, et — la plus
sournoise — une cellule fusionnée, parce que Rows.AutoFit refuse de redimensionner une ligne qui en
contient une (voir AutoFit). Le correctif est de laisser la hauteur en automatique
et de laisser AutoFit la mesurer, ou, si vous avez vraiment besoin de cellules fusionnées, de calculer et
définir le RowHeight vous-même. La règle à retenir : WrapText = True remodèle la cellule, mais il faut
encore que quelque chose rende la ligne assez haute pour l'afficher.
La séquence en trois temps qui fonctionne vraiment
Parce que le renvoi et la hauteur sont liés, obtenir un rendu lisible est un enchaînement ordonné en trois temps — et l'ordre compte :
Columns("C").ColumnWidth = 40 ' 1) une largeur FIXE - le texte a besoin de quelque chose contre quoi se renvoyer
Range("C2:C100").WrapText = True ' 2) activer le renvoi
Range("C2:C100").EntireRow.AutoFit ' 3) faire grandir les lignes a la nouvelle forme renvoyee
La première étape est celle que les gens sautent. L'AutoFit de ligne ne peut calculer une hauteur
qu'une fois la largeur de colonne arrêtée — le texte doit savoir quelle largeur lui est permise avant de
pouvoir décider du nombre de lignes qu'il lui faut. Si vous faites l'AutoFit de la largeur de colonne et
de la hauteur de ligne, les deux s'affrontent : élargir la colonne laisse le texte tenir sur moins de
lignes, ce qui change la hauteur, et vous obtenez un résultat instable. Fixez donc la largeur d'abord (ne
l'ajustez pas automatiquement), puis renvoyez, puis faites l'AutoFit de la hauteur. Faites les trois dans
cet ordre et le rendu est correct à chaque fois.
WrapText face à un saut de ligne forcé
Il y a deux façons différentes pour un texte de se retrouver sur plusieurs lignes, et les confondre sème
le trouble. WrapText est un renvoi souple, piloté par la largeur : Excel décide où couper selon la
largeur de la colonne, et les coupures se déplacent si vous redimensionnez la colonne. Un saut de ligne
forcé est un caractère que vous placez vous-même dans la chaîne — Chr(10) en VBA, ou Alt+Entrée à la
main — qui impose une coupure à cet endroit précis quelle que soit la largeur :
Range("C2").Value = "Line one" & Chr(10) & "Line two" ' un saut force a l'interieur du texte
Range("C2").WrapText = True ' necessaire pour que le saut force SOIT VISIBLE
Le piège : même un saut Chr(10) forcé ne s'affiche sur deux lignes que lorsque WrapText est activé —
sinon Excel montre un petit glyphe en forme de carré ou colle tout ensemble. Les deux fonctionnent donc de
concert : utilisez Chr(10) quand vous voulez une coupure à un endroit précis (un bloc d'adresse, un
libellé au-dessus d'une valeur), et comptez sur WrapText seul quand vous voulez juste qu'un texte long
se plie pour tenir.
Relire WrapText, et le Null d'une plage mixte
WrapText est une propriété par cellule. Lisez-la sur une seule cellule et vous obtenez True ou
False. Lisez-la sur une plage où certaines cellules se renvoient et d'autres non, et Excel ne peut pas
donner une réponse unique, alors il renvoie Null :
Debug.Print Range("C2").WrapText ' True ou False
Debug.Print Range("C2:C100").WrapText ' Null si la plage est mixte
Ce Null n'est pas une erreur — c'est Excel qui vous dit que la plage est hétérogène. Si vous devez
vérifier qu'une plage est renvoyée de façon uniforme, testez d'abord IsNull(rng.WrapText) ; un
résultat non-Null signifie que toutes les cellules s'accordent. En pratique, vous la relisez rarement —
vous la définissez sur toute une colonne d'un coup, ce qui garde la plage uniforme et évite complètement
la question.
Quelles colonnes renvoyer
Le renvoi mérite sa place sur les colonnes de texte — descriptions, commentaires, adresses, libellés
longs — où le pliage garde la colonne étroite et la feuille lisible. Il est généralement malvenu sur les
colonnes de nombres : un nombre renvoyé est plus difficile à lire, pas plus facile, et les nombres en
ont rarement besoin. L'habitude efficace consiste à définir WrapText sur toute la colonne en une seule
instruction (Columns("C").WrapText = True) plutôt que de boucler cellule par cellule, puis à faire
l'AutoFit des lignes une seule fois pour tout le bloc. Le définir par cellule dans une boucle est à la
fois plus lent et une source fréquente du Null de plage mixte vu plus haut. Décidez par colonne,
appliquez une fois, faites l'AutoFit une fois.
Comment ExcelMaster aide
Renvoyer à la ligne est le réglage qui ressemble à une ligne unique puis produit un rendu tronqué que
personne ne remarque avant l'impression du rapport — la hauteur de ligne avait été figée plus tôt, la
largeur de colonne n'a jamais été fixée si bien qu'AutoFit a mesuré la mauvaise forme, ou le saut
Chr(10) forcé ne s'affiche jamais parce que le renvoi était resté désactivé.
ExcelMaster vous laisse décrire le
résultat — « renvoie la colonne de description et laisse les lignes grandir », « mets l'adresse sur trois
lignes dans cette cellule » — et il écrit les étapes dans le bon ordre : une largeur de colonne fixe
d'abord, WrapText sur toute la colonne, puis Rows.AutoFit, avec Chr(10) là où vous avez demandé un
saut forcé et le renvoi activé pour qu'il s'affiche. Il signale les cellules fusionnées qui empêcheront la
ligne de grandir. Vous gardez le classeur et le code.
Questions fréquentes
Pourquoi mon WrapText VBA ne fonctionne-t-il pas ?
Le texte se renvoie presque certainement — il ne s'affiche simplement pas, parce que la hauteur de ligne
est fixe. La hauteur de ligne ne grandit pour révéler les lignes renvoyées que lorsqu'elle est en
automatique. Laissez la hauteur tranquille et appelez Rows.AutoFit après avoir mis WrapText = True, et
assurez-vous d'abord que la colonne a une largeur fixe pour que le texte ait quelque chose contre quoi se
renvoyer. Si la cellule est fusionnée, l'AutoFit de ligne ne la redimensionnera pas du tout — définissez
le RowHeight explicitement.
Comment renvoyer le texte et faire l'AutoFit de la hauteur de ligne en VBA ?
Faites trois étapes dans l'ordre : fixez une largeur de colonne (Columns("C").ColumnWidth = 40), activez
le renvoi (Range("C2:C100").WrapText = True), puis faites l'AutoFit des lignes
(Range("C2:C100").EntireRow.AutoFit). Fixer la largeur d'abord est important — l'AutoFit de ligne ne
peut mesurer la hauteur nécessaire qu'une fois que le texte sait quelle largeur lui est permise.
Comment désactiver Renvoyer à la ligne en VBA ?
Mettez la propriété à False : Range("C2:C100").WrapText = False. Si les lignes avaient grandi pour
tenir le texte renvoyé, elles ne rétréciront pas d'elles-mêmes — rappelez Rows.AutoFit ensuite, ou
définissez un RowHeight explicite, pour les ramener à une hauteur d'une seule ligne.
Quelle est la différence entre WrapText et un saut de ligne Chr(10) ?
WrapText est un renvoi souple, piloté par la largeur — Excel choisit où couper selon la largeur de la
colonne, et les coupures se déplacent quand vous redimensionnez. Chr(10) (l'équivalent d'Alt+Entrée) est
un saut forcé que vous placez dans la chaîne à un endroit précis. Un saut forcé ne s'affiche sur
plusieurs lignes que lorsque WrapText est également activé, les deux sont donc généralement utilisés
ensemble.
Pourquoi Range.WrapText renvoie-t-il Null ?
Parce que WrapText est une propriété par cellule et que la plage est mixte — certaines cellules se
renvoient et d'autres non, si bien qu'Excel ne peut pas renvoyer un seul True ou False et donne Null
à la place. Lisez-la sur une seule cellule pour une réponse nette, ou testez IsNull(rng.WrapText) pour
vérifier qu'une plage entière est uniforme. Définir WrapText sur toute la colonne d'un coup la garde
cohérente.
Testé dans
Testé dans : Excel 365 (Windows 11), VBA 7.1 — vérifié le 10/09/2026.
Guides connexes : VBA AutoFit · VBA Figer les volets · VBA Largeur de colonne · VBA Fusionner les cellules · VBA Font
