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

VBA Cut dans Excel — Range.Cut, Cut face à Copy, et les deux façons de poser ce que vous avez coupé

|

VBA Cut dans Excel — Range.Cut, Cut face à Copy, et les deux façons de poser ce que vous avez coupé

TL;DRRange.Cut ramasse des cellules dans le presse-papiers en mode couper. Ensuite vous les reposez, et il existe exactement deux façons qui font l'inverse l'une de l'autre : rng.Cut Destination:=dest (un collage) dépose les cellules par-dessus dest et l'écrase, tandis que rng.Cut puis dest.Insert ouvre un espace et décale les cellules pour ne rien perdre. Cut déplace aussi — il vide la source — là où Copy duplique. Videz le presse-papiers avec Application.CutCopyMode = False quand vous avez terminé.

Sub CutBasics()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Data")
    ws.Range("A2:D2").Cut                       ' ramasser les cellules de la ligne (bordure clignotante)
    ws.Range("A10").Insert Shift:=xlDown         ' INSERER les cellules coupees - decale, n'ecrase pas
    Application.CutCopyMode = False              ' ranger l'etat du presse-papiers
End Sub

Cut est le verbe qui sous-tend le déplacement de lignes et le déplacement de colonnes. Comprenez ce qu'il place dans le presse-papiers et les deux façons de l'en retirer, et chaque déplacement bâti dessus se comporte de façon prévisible.

Ce que vous allez apprendre

  • Cut face à Copy — un déplacement vide la source, une copie la laisse en place
  • Les deux consommateurs d'une coupe — Destination:= / le collage écrase, Insert décale
  • Pourquoi Application.CutCopyMode = False compte, et ce qu'est vraiment la bordure clignotante
  • Pourquoi Cut refuse une plage multi-zone (Union) alors que Copy la tolère parfois
  • Pourquoi une formule qui pointe sur des cellules coupées les suit, contrairement à une suppression qui la casse

Cut déplace ; Copy duplique

La différence tient en un mot : à quoi ressemble la source quand vous avez fini. Copy laisse la source exactement là où elle était — vous avez maintenant deux exemplaires. Cut retire la source une fois que les cellules atterrissent quelque part — vous en avez un, à un nouvel endroit :

ws.Range("A2:D2").Copy ws.Range("A20")     ' A2:D2 RESTE, A20 recoit un duplicata
ws.Range("A2:D2").Cut ws.Range("A20")      ' A2:D2 est VIDEE, A20 recoit les originaux

Donc Cut sert à déplacer et Copy à dupliquer. Recourir à Copy pour déplacer — copier, puis supprimer la source à la main — est une source classique de déplacements à moitié faits, où la copie atterrit mais la suppression est oubliée ou supprime la mauvaise plage. Si l'objectif est un déplacement, coupez.

Les deux façons de poser ce que vous avez coupé

Une fois les cellules dans le presse-papiers en mode couper, la façon dont vous les reposez décide si les données survivent. Ces deux lignes se ressemblent et font l'inverse l'une de l'autre :

ws.Range("A2:D2").Cut Destination:=ws.Range("A10")   ' COLLAGE - atterrit sur A10:D10, l'ecrase
ws.Range("A2:D2").Cut
ws.Range("A10").Insert Shift:=xlDown                  ' INSERTION - ouvre un espace en A10, decale vers le bas

Cut Destination:= (et un .Cut puis .Paste manuel) est un collage : les cellules coupées atterrissent par-dessus la destination et écrasent ce qui s'y trouvait. .Insert après un .Cut est une insertion de cellules coupées : la destination et tout ce qui la suit se décalent pour faire de la place, et rien n'est écrasé. Choisissez le collage quand la cible est vide et que vous voulez que les cellules atterrissent exactement là ; choisissez l'insertion quand vous glissez des cellules entre d'autres — c'est cela, un déplacement.

CutCopyMode et la bordure clignotante

Après un Range.Cut (ou un Copy) sans destination, Excel reste dans un état particulier — la source porte une bordure en pointillés qui défile, la « bordure clignotante », et Excel attend que vous colliez ou insériez. Cet état, c'est Application.CutCopyMode, et le laisser en suspens n'est pas propre : la prochaine action de l'utilisateur peut déclencher un collage intempestif, et appuyer sur Échap ou modifier une cellule l'annule d'une manière que votre macro n'avait pas prévue.

ws.Range("A2:D2").Cut
ws.Range("A10").Insert Shift:=xlDown
Application.CutCopyMode = False        ' annuler la bordure clignotante, liberer le presse-papiers

Cut Destination:= et .Insert achèvent l'opération et vident le mode pour vous, si bien que la ligne supplémentaire y relève de la ceinture et des bretelles. Mais chaque fois que vous faites .Cut ou .Copy puis d'autres tâches avant de coller, terminez par Application.CutCopyMode = False pour ne jamais laisser Excel en pleine coupe.

Cut refuse une plage multi-zone

Cut fonctionne sur un seul bloc contigu. Donnez-lui une plage multi-zone — des cellules jointes par Union, ou une sélection multiple comme Range("A2:D2, A8:D8") — et il lève une erreur d'exécution, car il n'existe aucun endroit unique sensé où déposer deux blocs disjoints :

Union(ws.Range("A2:D2"), ws.Range("A8:D8")).Cut   ' erreur d'execution - Cut exige un seul bloc

Copy se montre parfois plus indulgent avec des plages multi-zones de forme identique, ce qui est une autre raison pour laquelle couper et copier ne sont pas interchangeables. Pour déplacer plusieurs lignes éparses, coupez et insérez-les un bloc à la fois (de bas en haut quand elles sont empilées) plutôt que de tenter de toutes les couper d'un coup — voyez le déplacement de lignes.

Couper emporte les références ; supprimer les casse

Voici la propriété qui fait de la coupe un déplacement sûr. Quand vous coupez des cellules, Excel réécrit chaque formule qui pointe dessus pour que les références suivent les cellules jusqu'à leur nouveau domicile : =Data!B2 lit toujours la même valeur après que B2 a été coupée vers B40. C'est exactement l'inverse de la suppression de ces cellules, où une formule qui pointe dans la plage supprimée s'effondre en =#REF! et reste cassée.

La raison tient au sens de chaque verbe. Une coupe relocalise les données — les données existent toujours, leurs références ont donc encore quelque chose à viser, et Excel les met à jour. Une suppression détruit les données — il ne reste rien à viser, les références se cassent donc. Quand vous voulez les mêmes chiffres à un nouvel endroit avec chaque formule encore fonctionnelle, Cut est l'outil ; quand vous voulez que les chiffres disparaissent, attendez-vous aux #REF! et faites le ménage.

Comment ExcelMaster vous aide

Cut cache trois bifurcations qui échouent toutes en silence — déplacer ou dupliquer (couper face à copier), écraser ou décaler (coller face à insérer), et terminé ou en pleine coupe (CutCopyMode) — plus la plage multi-zone qui, elle, lève carrément une erreur. Choisissez mal et vous obtenez des lignes source perdues, une destination écrasée, ou un classeur coincé en mode couper.

ExcelMaster vous laisse dire l'intention — « déplace ces cellules sous les totaux sans rien écraser » — et il coupe plutôt qu'il ne copie, insère plutôt qu'il ne colle, traite l'opération une plage contiguë à la fois, et vide CutCopyMode quand c'est fini. Vous gardez le classeur et le code.

Questions fréquentes

Que fait Range.Cut en VBA ?

Range.Cut place les cellules de la plage dans le presse-papiers en mode couper et affiche la bordure clignotante en pointillés. À lui seul, il ne déplace encore rien — vous achevez le déplacement en collant (Cut Destination:=, qui écrase la cible) ou en appelant .Insert sur la destination (qui décale les cellules et les préserve). Une fois les cellules posées, la source est vidée.

Quelle est la différence entre Cut et Copy en VBA ?

Cut déplace — la source est vidée après que les cellules atterrissent, si bien que vous terminez avec un seul exemplaire à un nouvel endroit. Copy duplique — la source reste et la destination reçoit un second exemplaire. Utilisez Cut pour déplacer, Copy pour dupliquer ; n'utilisez pas copier-puis-supprimer comme déplacement, ce qui est facile à laisser à moitié fait.

Pourquoi devrais-je régler Application.CutCopyMode = False ?

Pour annuler l'état de presse-papiers de la bordure clignotante après une coupe ou une copie. Le laisser actif invite un collage intempestif à la prochaine frappe et laisse Excel en attente au milieu de l'opération. Cut Destination:= et .Insert le vident automatiquement, mais réglez Application.CutCopyMode = False vous-même chaque fois que vous faites .Cut ou .Copy puis d'autres tâches avant de coller.

Pourquoi VBA lève-t-il une erreur quand je coupe une plage Union ?

Parce que Cut ne gère qu'un seul bloc contigu. Un Union ou une sélection multiple, ce sont plusieurs blocs disjoints, et il n'existe aucun endroit unique où les déposer, si bien que Cut lève une erreur d'exécution. Coupez et insérez plutôt un bloc à la fois. (Copy se montre parfois plus tolérant envers des plages multi-zones de forme identique.)

Les références de formule se cassent-elles quand je coupe des cellules ?

Non — elles suivent. Excel réécrit les formules qui référencent des cellules coupées pour qu'elles pointent sur le nouvel emplacement des cellules, si bien qu'elles continuent de lire les mêmes données. C'est la différence avec la suppression de cellules, qui laisse les références sans rien à viser et les réduit à #REF!.

Testé dans

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

Guides associés : VBA Move Rows · VBA Move Columns · VBA Copy Paste · VBA PasteSpecial · VBA Delete Rows