🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

VBA Line Continuation dans Excel — le trait de soulignement, ses règles et le piège des chaînes

|

VBA Line Continuation dans Excel — le trait de soulignement, ses règles et le piège des chaînes

TL;DR — Terminez une ligne par un espace et un trait de soulignement _ et VBA traite la ligne physique suivante comme faisant partie de la même instruction. L'analyseur efface le _ et joint les lignes avant la compilation, si bien qu'elle ne change que la façon dont votre source se lit — jamais ce qui s'exécute. Trois règles font trébucher tout le monde : l'espace avant _ est obligatoire, rien (pas même un commentaire) ne peut le suivre, et vous ne pouvez pas couper à l'intérieur d'une "string" — vous fermez le guillemet, ajoutez & _, et continuez.

' Une seule instruction logique, etalee sur trois lignes lisibles
Workbooks.Open Filename:="C:\Reports\Q3.xlsx", _
               ReadOnly:=True, _
               UpdateLinks:=False

' Une longue chaine : fermez le guillemet, joignez avec & _, continuez
MsgBox "The report finished at " & _
       Format(Now, "hh:mm") & " with no errors."

Ce que vous allez apprendre

  • Le modèle mental — un élément de source que l'analyseur efface avant la compilation
  • Les trois éléments qui n'agissent que sur la source, et où se place la continuation parmi eux
  • L'espace obligatoire, et pourquoi rien ne peut suivre le trait de soulignement
  • Le piège des chaînes — pourquoi vous ne pouvez pas couper à l'intérieur des guillemets
  • Pourquoi un commentaire tue silencieusement une continuation
  • Le trait de soulignement contre le deux-points — découper une instruction contre en joindre plusieurs
  • L'avis : la continuation est faite pour les humains, alors servez-vous-en comme tel

Le modèle mental : un élément que l'analyseur efface

VBA n'a aucune limite de longueur de ligne — une instruction peut faire 500 caractères et s'exécuter parfaitement. Le caractère de continuation de ligne n'existe donc que pour une seule raison : vous. Un espace suivi d'un trait de soulignement _ à la fin d'une ligne dit à l'analyseur : « cette instruction n'est pas finie ; la ligne physique suivante la continue ». Avant même que le compilateur ne voie votre code, l'analyseur retire le _, colle les lignes ensemble, et compile une seule instruction logique.

C'est tout le modèle mental, et il explique chaque règle ci-dessous. Parce que _ est un élément de mise en page de la source, consommé avant la compilation, il doit se placer là où l'analyseur s'attend à ce que l'instruction marque une pause — à une coupure naturelle, avec un espace devant, et avec vraiment rien après. C'est de la ponctuation pour le lecteur, pas une instruction pour la machine.

Trois éléments que la macro n'exécute jamais

La continuation de ligne est l'un des trois éléments que vous tapez et que la macro en cours d'exécution n'exécute jamais. Ils façonnent la source et la compilation, pas l'exécution :

Élément Ce qu'il fait à votre source Ce qu'il coûte à l'exécution
' commentaire Laisse des notes et désactive du code que le compilateur supprime Rien — il ne s'exécute jamais
_ continuation de ligne Découpe une longue instruction sur plusieurs lignes Rien — l'analyseur l'efface avant la compilation
Option Explicit Force chaque nom à être déclaré S'exécute à la compilation, donc les fautes de frappe meurent avant que la macro démarre

Le commentaire et la continuation sont tous deux effacés avant la compilation — du pur formatage de source. Cette nature commune est aussi la raison de leur conflit, comme le montre le piège du commentaire plus bas.

Règle 1 : un espace avant le trait de soulignement, rien après

La continuation est composée de deux caractères dans un ordre fixe — l'espace, puis le trait de soulignement — et elle doit être la dernière chose sur la ligne.

' CORRECT - un espace avant _, et il termine la ligne
total = price + _
        tax

' FAUX - pas d'espace avant le trait de soulignement
total = price +_
        tax                ' Compile error / unexpected token

' FAUX - quelque chose apres le trait de soulignement (meme un commentaire)
total = price + _ ' ajoute la taxe
        tax                ' Expected: end of statement

Oubliez l'espace et +_ est lu comme un unique symbole ; placez quoi que ce soit après le _ — un espace parasite passe, mais pas un commentaire ni du code — et VBA signale Expected: end of statement. La correction est mécanique : _ se place tout à la fin, et l'explication va sur sa propre ligne au-dessus.

Règle 2 : vous ne pouvez pas couper à l'intérieur d'une chaîne

C'est le piège qui amène les gens ici. Un trait de soulignement à l'intérieur d'une chaîne entre guillemets n'est qu'un trait de soulignement littéral — c'est du texte, pas une continuation. Vous ne pouvez donc pas replier une longue chaîne en lâchant un _ au milieu :

' CASSE - le _ est du texte litteral a l'interieur des guillemets
MsgBox "This is a very long message _
        that keeps going"       ' la chaine ne se ferme jamais -> compile error

' CORRECT - fermez le guillemet, concatenez avec & _, continuez sur la ligne suivante
MsgBox "This is a very long message " & _
       "that keeps going"

Pour découper une longue chaîne, vous fermez le guillemet, ajoutez & _ (concaténation, puis continuation), et ouvrez un nouveau guillemet sur la ligne suivante. Surveillez l'espace en fin de la première chaîne — "message " & conserve l'espace que le saut de ligne masquerait sinon. Ce seul motif — " ... " & _ — couvre quatre-vingt-dix pour cent des usages réels de la continuation, car ce sont les longues chaînes (messages, SQL, chemins) qui ont le plus besoin d'être repliées.

Règle 3 : un commentaire tue une continuation

Parce qu'un commentaire et une continuation sont tous deux des éléments qui n'agissent que sur la source, ils ne peuvent pas partager une ligne. Une apostrophe termine l'instruction logique, donc un _ qui vient après un ' est à l'intérieur du commentaire et ne fait rien :

' CASSE - le commentaire avale la continuation
total = price _  ' prix de base
      + tax       ' "+ tax" est maintenant sa propre instruction cassee

' CORRECT - commentaire sur sa propre ligne, au-dessus de l'instruction
' prix de base plus taxe
total = price _
      + tax

Le symptôme est le même Expected: end of statement sur la ligne suivante, pointant au mauvais endroit. La règle est simple une fois que vous l'avez rencontrée : ne mettez jamais un commentaire sur une ligne continuée — remontez-le sur une ligne à lui. (Le guide sur le commentaire couvre cette collision depuis l'autre côté.)

Trait de soulignement contre deux-points : des outils opposés

Le _ découpe une instruction sur plusieurs lignes. Le deux-points : fait exactement l'inverse — il joint plusieurs instructions sur une ligne :

' Deux-points : trois instructions tassees sur une seule ligne physique
x = 1 : y = 2 : z = 3

' Trait de soulignement : une instruction detendue sur trois lignes
result = Application.WorksheetFunction.SumIfs( _
             data, keys, criteria)

On les confond sans cesse parce que les deux touchent aux limites de ligne, mais ils tirent dans des directions opposées. Recourez à _ pour rendre une longue instruction lisible ; soyez avare de : — tasser des instructions sur une ligne les cache des breakpoints et de quiconque lit le code, alors limitez-le au mieux à des paires triviales. Un outil sert le lecteur ; l'autre ne sert en général personne.

L'avis : la continuation est faite pour les humains, alors servez-vous-en comme tel

_ gagne sa place précisément sur les lignes qu'un humain peine à lire sur un seul écran : un Workbooks.Open avec six arguments nommés, une condition If avec quatre clauses And, un SumIfs avec une douzaine de plages, une chaîne SQL ou de connexion assemblée en morceaux. Coupez-les à leurs jointures naturelles — après une virgule, avant un opérateur, avant chaque And — et la structure de l'instruction devient visible.

Mais la continuation est un outil de lisibilité, pas une vertu en soi. Replier une ligne courte sans raison, ou continuer une instruction quinze fois, échange une forme d'illisibilité contre une autre (VBA plafonne même une instruction à environ deux douzaines de continuations). Le test est honnête et simple : la coupure rend-elle l'instruction plus facile à lire pour une personne ? Si oui, servez-vous-en ; sinon, laissez la ligne tranquille. La machine, elle, ne s'en est jamais souciée.

Quand la longue ligne est un symptôme, pas le problème

Parfois une instruction est longue parce que la tâche est réellement complexe — des appels WorksheetFunction imbriqués, des critères tentaculaires, une formule assemblée en code. La continuation de ligne rend cela lisible, mais ne le rend pas simple, et une instruction de 200 caractères coupée sur huit lignes reste difficile à réussir. ExcelMaster vous laisse énoncer le résultat au lieu d'assembler l'instruction à la main — « additionne les ventes où la région est Ouest et où la date tombe au T3 » — et il écrit et exécute le code à votre place, en sauvegardant d'abord votre fichier. La longue ligne cesse d'être votre problème, parce que vous n'avez jamais à la taper.

Foire aux questions

Quel est le caractère de continuation de ligne en VBA ?

Un espace suivi d'un trait de soulignement _ à la fin d'une ligne. Il indique à VBA que l'instruction se poursuit sur la ligne physique suivante. L'analyseur retire le trait de soulignement et joint les lignes en une seule instruction avant la compilation, si bien qu'il ne change que la mise en page de la source.

Pourquoi ma continuation de ligne VBA ne fonctionne-t-elle pas ?

En général pour l'une de trois raisons : il n'y a pas d'espace avant le trait de soulignement, quelque chose (souvent un commentaire) suit le trait de soulignement, ou vous avez tenté de couper à l'intérieur d'une chaîne entre guillemets. Le _ doit être le dernier caractère de la ligne, avec un espace devant, et les chaînes se découpent avec " ... " & _, pas en coupant en plein milieu d'un guillemet.

Comment continuer une longue chaîne sur plusieurs lignes en VBA ?

Fermez la chaîne par un guillemet, ajoutez un espace, une esperluette et la continuation — & _ — puis ouvrez un nouveau guillemet sur la ligne suivante : "first part " & _ puis "second part". Vous ne pouvez pas placer le trait de soulignement à l'intérieur des guillemets, car il n'y est qu'un trait de soulignement littéral.

Puis-je mettre un commentaire sur une ligne continuée en VBA ?

Non. Une apostrophe termine l'instruction logique, donc un _ après un commentaire ne fait rien et la ligne suivante casse. Placez plutôt le commentaire sur sa propre ligne, au-dessus de l'instruction continuée.

Quelle est la différence entre le trait de soulignement et le deux-points en VBA ?

Le trait de soulignement _ découpe une instruction sur plusieurs lignes pour la lisibilité. Le deux-points : fait l'inverse — il joint plusieurs instructions sur une seule ligne physique. Utilisez _ pour rendre les longues instructions lisibles ; évitez : sauf pour des paires triviales, car il cache les instructions des breakpoints et des lecteurs.

Testé dans

Testé dans : Excel 365 (Windows 11), VBA 7.1 — vérifié le 06/09/2026.

Guides associés : VBA Comment · VBA Option Explicit · VBA MsgBox · VBA If Then Else · VBA Dim