TL;DR — Coller les valeurs remplace une formule vivante par le nombre qu'elle affiche à cet instant. Ce nombre tient alors tout seul : vous pouvez supprimer les cellules qu'il référençait, le classeur arrête de le recalculer, et les liens externes se taisent. La recette au presse-papiers est
.CopypuisPasteSpecial Paste:=xlPasteValues— maisxlPasteValuestout seul laisse tomber le format de nombre, donc les dates reviennent en numéros de série comme45000. UtilisezxlPasteValuesAndNumberFormatsquand l'affichage compte, et pour un simple gel sans aucun presse-papiers,dst.Value = src.Value.
' Figer une plage de formules dans leurs resultats, en gardant l'affichage :
src.Copy
src.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
' L'equivalent sans presse-papiers pour des valeurs seules (perd les formats de nombre) :
dst.Value = src.Value
Une formule est une promesse de recalcul : =Sheet2!A1*1.1 n'est pas un nombre, c'est une instruction
qui se ré-exécute chaque fois que Sheet2!A1 change. La plupart du temps, c'est exactement ce que vous
voulez. Mais parfois vous avez besoin que la réponse cesse d'être une promesse et devienne un fait — un
mois que vous archivez, un instantané que vous envoyez par e-mail, une formule volatile dont vous voulez
arrêter le remue-ménage. C'est ce que fait le collage des valeurs. C'est le coin le plus recherché de
PasteSpecial, et il cache un piège qu'il vaut mieux connaître avant de s'en
servir.
Ce que vous allez apprendre
- Le modèle mental — coller les valeurs transforme une promesse de recalcul en un simple nombre
- La règle qui sauve les données — figer avant de supprimer la source, jamais après
- Le piège de format —
xlPasteValuesretire le format de nombre et les dates deviennent des séries - Les trois vraies utilités — archiver un résultat, arrêter les volatiles, rompre les liens externes
- Le raccourci sans presse-papiers —
dst.Value = src.Value - Quand ne pas figer, parce qu'une formule fait son travail
Le modèle mental : un instantané, pas un lien
Une formule relie une cellule à ses entrées. Coller les valeurs coupe ce lien et laisse derrière lui le
nombre qui s'affichait au moment où vous l'avez fait — un instantané. Les pixels ont l'air identiques ; le
comportement est complètement différent. Avant, la cellule était =A1+A2 et suivait A1 et A2 pour
toujours. Après, la cellule est le littéral 350, et A1 et A2 peuvent changer, se déplacer ou disparaître
sans qu'elle s'en aperçoive.
Cette seule distinction — lien contre instantané — résume toute la décision. Si vous vous demandez « ce nombre a-t-il encore besoin de suivre ses entrées ? », la réponse vous dit s'il faut laisser la formule ou la figer. Coller les valeurs, c'est vous qui répondez « non, ce résultat est définitif maintenant ».
La règle qui compte le plus : figer avant de supprimer la source
Voici l'erreur qui détruit des données. Vous construisez un rapport avec des formules qui référencent
une feuille de données brutes, puis vous supprimez cette feuille pour alléger le fichier — et chaque
formule s'effondre en #REF!, parce que les cellules qu'elle visait ont disparu :
dst.Formula = "=RawData!A1 * 1.1" ' un lien vivant vers une autre feuille
Worksheets("RawData").Delete ' la source disparait...
' dst affiche maintenant #REF! - le nombre est perdu
Le correctif est une question d'ordre : figez d'abord les résultats en valeurs, puis supprimez la
source. Une fois que dst.PasteSpecial Paste:=xlPasteValues s'est exécuté, la cellule contient un
vrai nombre qui ne doit plus rien à RawData, donc supprimer la feuille est sans danger. La règle se
généralise : chaque fois que vous êtes sur le point de retirer, d'écraser ou de déplacer les cellules
dont dépend une formule, collez les valeurs d'abord. Un #REF! ne peut plus être annulé une fois le
fichier enregistré et fermé.
Le piège de format : les valeurs seules retirent le format de nombre
Voici la surprise qui ramène les gens vers un moteur de recherche. xlPasteValues copie la valeur —
et une valeur, dans Excel, est un nombre nu. Une date est stockée comme un numéro de série (le nombre de
jours depuis 1900), la monnaie comme un simple nombre, un pourcentage comme une décimale. Le format de
nombre de la formule était ce qui les affichait en 2026-03-15, $1,200 et 35%. Collez seulement les
valeurs et cette mise en forme reste en arrière :
src.Copy
src.PasteSpecial Paste:=xlPasteValues ' 2026-03-15 devient 46091
src.PasteSpecial Paste:=xlPasteValuesAndNumberFormats ' 2026-03-15 reste 2026-03-15
Le choix par défaut honnête pour tout ce qu'un humain lit est donc xlPasteValuesAndNumberFormats, qui
transporte le format d'affichage avec le nombre. Ne prenez xlPasteValues tout seul que lorsque vous
voulez précisément les nombres bruts sous-jacents — pour alimenter un calcul, ou exporter vers un système
qui remet de toute façon la mise en forme.
Trois utilités réelles du collage de valeurs
Figer des formules n'est pas une seule tâche mais trois, et les nommer vous dit quand agir :
- Archiver un résultat. Un récapitulatif mensuel calculé à partir des données de ce mois-ci ne devrait pas changer quand les données du mois suivant arrivent. Figez-le et le nombre appartient au mois, définitivement.
- Arrêter les formules volatiles.
NOW(),RAND(),TODAY()etOFFSET()se recalculent à chaque modification, ce qui devient du bruit une fois que vous avez la valeur voulue. Coller les valeurs les fige en place. - Rompre les liens externes. Un classeur plein de
=[Budget.xlsx]Sheet1!A1harcèle chaque destinataire d'une invite de mise à jour. Figez ces cellules et le fichier transporte ses nombres sans aucun lien à poursuivre.
Les trois sont la même opération avec une intention différente, et les trois sont dangereuses si vous supprimez la source d'abord — figez, puis retirez.
Le raccourci sans presse-papiers : dst.Value = src.Value
Si tout ce que vous voulez, ce sont des valeurs — pas de formats, pas d'opération, pas de transposition
— vous n'avez pas du tout besoin du presse-papiers. Affecter le .Value d'une plage à une autre écrit
les nombres directement :
dst.Value = src.Value ' valeurs seules, instantane, ne touche jamais au presse-papiers
C'est la façon la plus rapide de figer sur place — rng.Value = rng.Value écrase les formules d'une
plage par leurs propres résultats en une ligne — et cela évite tous les modes de défaillance du
presse-papiers liés à PasteSpecial. Sa seule limite est qu'elle ne déplace
que les valeurs : pas de format de nombre, donc utilisez
PasteSpecial Paste:=xlPasteValuesAndNumberFormats quand l'affichage doit survivre, et voyez
Copy Destination pour la vue d'ensemble de la copie sans presse-papiers.
Quand ne pas figer
Figer est destructeur — vous jetez une formule. Ne le faites pas à une cellule dont le nombre devrait continuer à suivre ses entrées : un total courant, un récapitulatif lié, un modèle dont toute la raison d'être est de se recalculer quand les hypothèses changent. Si vous figez ces cellules-là, le prochain lecteur modifie une entrée et le « total » arrête de bouger en silence, ce qui est pire que n'importe quel délai de recalcul. Figez un résultat qui est définitif ; laissez une formule qui travaille encore. Dans le doute, figez une copie sur une feuille d'instantané et gardez les formules vivantes là où elles sont.
Comment ExcelMaster aide
Coller les valeurs est une idée qui tient en une ligne, avec deux façons de perdre des données : figer
après avoir supprimé la source et vous obtenez #REF! ; utiliser xlPasteValues tout seul sur des dates
et vous envoyez à quelqu'un par e-mail une colonne de 45000. Les deux compilent, les deux s'exécutent,
et les deux ont l'air corrects jusqu'à ce qu'il soit trop tard pour corriger.
ExcelMaster vous laisse dire ce
que vous voulez — « fige les chiffres de ce mois-ci », « convertis ces formules en valeurs mais garde les
dates », « romps les liens avant que je l'envoie » — et il ordonne les étapes en sécurité (figer d'abord,
supprimer ensuite), choisit xlPasteValuesAndNumberFormats quand un humain lira le résultat, et utilise
dst.Value = src.Value quand le presse-papiers n'est pas nécessaire. Vous gardez le classeur et le code.
Questions fréquentes
Comment convertir des formules en valeurs en VBA ?
Figez-les sur place : rng.Value = rng.Value écrase chaque formule par le nombre qu'elle produit
actuellement, en une ligne et sans presse-papiers. Si vous devez conserver le format d'affichage des
dates ou de la monnaie, utilisez plutôt la forme presse-papiers — rng.Copy puis
rng.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, suivi de Application.CutCopyMode = False.
Pourquoi mes dates se sont-elles transformées en nombres après un collage de valeurs ?
Parce que xlPasteValues colle la valeur sans le format de nombre, et que la valeur sous-jacente d'une
date est un numéro de série comme 45000. C'est le format qui l'affichait comme une date. Utilisez
xlPasteValuesAndNumberFormats pour que le format d'affichage traverse aussi, et les dates restent des
dates.
Comment arrêter le recalcul d'une formule sans la supprimer ?
Remplacez-la par son résultat — collez les valeurs. Copiez les cellules et faites
PasteSpecial Paste:=xlPasteValuesAndNumberFormats, ou utilisez rng.Value = rng.Value. C'est le
correctif habituel pour les formules volatiles comme NOW(), RAND() et OFFSET() qui changent à chaque
modification : une fois figé, le nombre est fixe.
Le collage de valeurs empêchera-t-il mes formules de casser si je supprime la feuille source ?
Il empêche cette casse — à condition de figer d'abord. Si une formule référence une autre feuille et
que vous supprimez cette feuille, la formule devient #REF! et le nombre est perdu. Collez les valeurs
avant de supprimer, pour que la cellule contienne un vrai nombre qui ne dépend plus de la source.
Quelle est la différence entre .Value et .Value2 lors d'un gel ?
.Value renvoie les dates et la monnaie sous leurs types mis en forme, tandis que .Value2 renvoie le
nombre brut sous-jacent (une date sous son numéro de série). Pour un gel simple, rng.Value = rng.Value
convient ; n'utilisez .Value2 que lorsque vous voulez délibérément les numéros de série bruts sans
typage monnaie ou date — voyez VBA Value2 pour la distinction.
Testé dans
Testé dans : Excel 365 (Windows 11), VBA 7.1 — vérifié le 09/09/2026.
Guides connexes : VBA PasteSpecial · VBA Copy Destination · VBA Copy Paste · VBA Formula · VBA Value2
