VBA Value Paste & PasteSpecial

Ce tutoriel vous montrera comment utiliser PasteSpecial dans VBA pour coller uniquement certaines propriétés de cellule (exs. valeurs, formats)

Dans Excel, lorsque vous copiez et collez une cellule, vous copiez et collez toutes les propriétés de la cellule : valeurs, formats, formules, formatage des nombres, bordures, etc :

Au lieu de cela, vous pouvez « Coller spécial » pour ne coller que certaines propriétés de la cellule. Dans Excel, le menu Collage spécial est accessible avec le raccourci CTRL + ALT + V (après avoir copié une cellule) :

Ici, vous pouvez voir toutes les combinaisons de propriétés de cellule que vous pouvez coller.

Si vous enregistrez une macro en utilisant le menu Collage spécial, vous pouvez simplement utiliser le code généré. C'est souvent le moyen le plus simple d'utiliser VBA pour coller spécial.

Coller les valeurs

Coller les valeurs ne colle que la cellule « valeur ». Si la cellule contenait une formule, Coller les valeurs collera le résultat de la formule.

Ce code copiera et collera les valeurs d'une seule cellule sur la même feuille de calcul :

12 Plage("A1").CopierRange("B1").PasteSpecial Paste:=xlPasteValues

Copier et coller la valeur dans une autre feuille

Cet exemple copiera et collera des valeurs pour des cellules individuelles sur différentes feuilles de calcul

12 Feuilles("Feuille1").Plage("A1").CopierSheets("Sheet2").Range("B1").PasteSpecial Paste :=xlPasteValues

Ces exemples copieront et colleront des valeurs pour une plage de cellules :

Copier et coller des plages de valeurs

12 Plage ("A1:B3").CopierRange("C1").PasteSpecial Paste:=xlPasteValues

Copier et coller des colonnes

12 Colonnes("A").CopierColumns("B").PasteSpecial Paste:=xlPasteValues

Copier et coller des valeurs de lignes

12 Lignes(1).CopierRows(2).PasteSpecial Paste:=xlPasteValues

Coller des valeurs et des formats de nombre

Coller des valeurs ne collera que la valeur de la cellule. Aucune mise en forme n'est collée, y compris la mise en forme des nombres.

Souvent, lorsque vous collez des valeurs, vous souhaiterez probablement inclure également le formatage des nombres afin que vos valeurs restent formatées. Regardons un exemple.

Ici nous allons valuer coller une cellule contenant un pourcentage :

12 Feuilles("Feuille1").Colonnes("D").CopierSheets("Sheet2").Columns("B").PasteSpecial Paste:=xlPasteValues

Remarquez comment le formatage du nombre de pourcentage est perdu et à la place une valeur décimale bâclée est affichée.

À la place, utilisons les formats Coller les valeurs et les nombres :

12 Feuilles("Feuille1").Colonnes("D").CopierSheets("Sheet2").Columns("B").PasteSpecial Paste :=xlPasteValuesAndNumberFormats

Vous pouvez maintenant voir que la mise en forme des nombres est également collée, en conservant le format de pourcentage.

.Valeur au lieu de .Coller

Au lieu de coller des valeurs, vous pouvez utiliser la propriété Value de l'objet Range :

Cela définira la valeur de la cellule de A2 égale à la valeur de la cellule de B2

1 Plage("A2").Valeur = Plage("B2").Valeur

Vous pouvez également définir une plage de cellules égale à la valeur d'une seule cellule :

1 Plage("A2:C5").Valeur = Plage("A1").Valeur

ou une plage de cellules égale à une autre plage de cellules de taille identique :

1 Plage("B2:D4").Valeur = Plage("A1:C3").Valeur

C'est moins de frappe pour utiliser la propriété Value. De plus, si vous souhaitez maîtriser Excel VBA, vous devez être familiarisé avec l'utilisation de la propriété Value des cellules.

Valeur de la cellule par rapport à la propriété Value2

Techniquement, il est préférable d'utiliser la propriété Value2 d'une cellule. Value2 est légèrement plus rapide (cela n'a d'importance qu'avec des calculs extrêmement volumineux) et la propriété Value peut vous donner un résultat tronqué de la cellule formatée en devise ou en date. Cependant, plus de 99% du code que j'ai vu utilise .Value et non .Value2. Personnellement, je n'utilise pas .Value2, mais sachez qu'il existe.

1 Plage("A2").Valeur2 = Plage("B2").Valeur2

Copier Coller Builder

Nous avons créé un « Copy Paste Code Builder » qui facilite la génération de code VBA pour copier (ou couper) et coller des cellules. Le constructeur fait partie de notre Complément VBA : AutoMacro.

Macro automatique contient également de nombreux autres Générateurs de code, Un vaste Bibliothèque de codes, et puissant Outils de codage.

Collage spécial - Formats et formules

Outre les valeurs de collage, les options de collage spécial les plus courantes sont les formats de collage et les formules de collage.

Coller des formats

Coller les formats vous permet de coller toutes les mises en forme des cellules.

12 Plage ("A1:A10").CopierPlage("B1:B10").CollerPâte spéciale :=xlCollerFormats

Coller des formules

Coller les formules collera uniquement les formules des cellules. Ceci est également extrêmement utile si vous souhaitez copier des formules de cellule, mais que vous ne souhaitez pas copier les couleurs d'arrière-plan des cellules (ou un autre format de cellule).

12 Plage ("A1:A10").CopierPlage("B1:B10").CollerPâte spéciale :=xlCollerFormules

Coller des formules et des formats de nombre

Semblable à Coller des valeurs et des formats de nombres ci-dessus, vous pouvez également copier et coller des formats de nombres avec des formules

Ici, nous copierons une formule de cellule avec le formatage des numéros comptables et les formules de collage uniquement.

12 Feuilles("Feuille1").Plage("D3").CopierSheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulas

Remarquez comment le formatage des nombres est perdu et qu'à la place, une valeur bâclée non arrondie est affichée à la place.

À la place, utilisons les formats Coller les formules et les nombres :

12 Feuilles("Feuille1").Plage("D3").CopierSheets("Sheet2").Range("D3").PasteSpecial xlPasteFormulasAndNumberFormats

Vous pouvez maintenant voir que le formatage des nombres est également collé, en conservant le format comptable.

Collage spécial - Transposer et ignorer les blancs

Collage spécial - Transposition

Paste Special Transpose vous permet de copier et coller des cellules en changeant l'orientation de haut en bas à gauche-droite (ou vis-a-versa):

12 Feuilles("Feuille1").Plage("A1:A5").CopierSheets("Sheet1").Range("B1").PasteSpecial Transpose:=True

Collage spécial - Sauter les blancs

Ignorer les blancs est une option spéciale de collage qui ne semble pas être utilisée aussi souvent qu'elle devrait l'être. Il vous permet de copier uniquement les cellules non vides lors du copier-coller. Les cellules vides ne sont donc pas copiées.

Dans cet exemple ci-dessous. Nous allons copier la colonne A, faire un collage régulier dans la colonne B et sauter les blancs dans la colonne C. Vous pouvez voir que les cellules vides n'ont pas été collées dans la colonne C dans l'image ci-dessous.

123 Feuilles("Feuille1").Plage("A1:A5").CopierSheets("Sheet1").Range("B1").PasteSpecial SkipBlanks:=FalseSheets("Sheet1").Range("C1").PasteSpecial SkipBlanks:=True

Autres options spéciales de collage

Collage spécial - Commentaires

1 Feuilles("Feuille1").Plage("A1").Copier Feuilles("Feuille1").Plage("E1").PasteSpecial xlPasteComments

Collage spécial - Validation

12 Feuilles("Feuille1").Plage("A1:A4").CopierSheets("Sheet1").Range("B1:B4").PasteSpecial xlPasteValidation

Collage spécial - Tous utilisant le thème source

123 Classeurs(1).Feuilles("Feuille1").Plage("A1:A2").CopierClasseurs(2).Feuilles("Feuille1").Plage("A1").CollerSpécialClasseurs(2).Sheets("Feuille1").Range("B1").PasteSpecial xlPasteAllUsingSourceTheme

Collage spécial - Tout sauf les bordures

123 Plage("B2:C3").CopierPlage("E2").CollerSpécialRange("H2").PasteSpecial xlPasteAllSaufBorders

PasteSpecial - Largeurs de colonnes

Un de mes préférés personnels. PasteSpecial Column Widths copiera et collera la largeur des colonnes.

123 Plage ("A1:A2").CopierRange("C1").CollerSpécialRange("E1").PasteSpecial xlPasteColumnWidths

PasteSpecial - All MergingConditionalFormats

123 Plage ("A1:A4").CopierRange("C1").CollerSpécialRange ("E1").PasteSpecial xlPasteAllMergingConditionalFormats

wave wave wave wave wave