dimanche 11 mars 2012

Copier-coller en valeur... plus vite !

Copier une (ou plusieurs) cellule(s) puis effectuer un collage spécial “Valeurs” est sans doute une des manipulations qu’on effectue le plus souvent quand on construit un tableau.

C’est le cas, par exemple, quand on raisonne “table de données” et qu’on veut enrichir une base de départ dans laquelle il manque des colonnes : à coup de calculs et de RechercheV notamment, on étoffe la base de départ pour la rendre plus riche ou plus pertinente. Il arrive ensuite souvent qu’on veuille couper la source de ces enrichissements : soit des colonnes peu intéressantes en elle-mêmes, soit des tables de correspondance pour nos RechercheV. Les formules qui s’y réfèrent doivent donc être écrasées : c’est ce qu’on fait par un copier-coller en valeur de ces cellules sur elles-mêmes.

À la souris, certes, ce n’est pas très compliqué. Dans Excel 2003 par exemple : une fois la plage de cellules sélectionnée, on clique “copier” puis on va dans le menu Edition / Collage Spécial, où on sélectionne l’option Valeurs avant de cliquer OK. C’est 5 clics de souris, rien de plus.



Soit. Mais...

Si on travaille au clavier, il faut tenir compte du temps mis à aller chercher la souris, puis 5 fois le temps de bien cibler l’endroit où on va cliquer, puis du temps mis à lâcher la souris pour revenir au clavier. Répété un certain nombre de fois dans une séance de travail, c’est long. Surtout pour une manip qui ne présente strictement aucune valeur ajoutée.

Alors allons-y au clavier. Toujours sous Excel 2003 et une fois la plage de cellules sélectionnée, on fait la même chose par les opérations suivantes :
- Ctrl C pour copier
- Alt, E, G, V, ‘OK’ pour le collage spécial valeur

Alors oui, ça fait une séquence de 6 pressions de touche. C’est plus que le nombre de clics, mais ça va quand même sensiblement plus vite, je trouve. Comme les touches E, G et V sont relativement proches, c’est une manip qui se fait de façon souple. Du reste, comme les touches Ctrl  et C sont dans la même région du clavier, on fait l’essentiel des opérations uniquement de la main gauche, et la main droite vient clore tout ça par le ‘OK’.

Mais poussons le verdict précédent un peu plus loin : si on répète cette manip un très grand nombre de fois et régulièrement, ça devient pénible. D’autant qu’il n’y a toujours pas l’ombre d’une valeur ajoutée là-dedans.


Voyons alors ce qu’on peut faire en VBA !

Copier une plage de cellules sélectionnée, c’est facile :
Selection.Copy

La coller en valeur c’est ceci :
    Selection.PasteSpecial Paste:=xlPasteValues

Disséquons cette ligne de code : le fait de travailler aussi sur Selection assure qu’on fait tout ça sur place (on ne va pas coller ailleurs). La méthode PasteSpecial va coller ce qui se trouve dans le Presse-papiers, c’est à dire ce qu’on a copié à la ligne d’avant : la sélection elle-même. Cette méthode reçoit plusieurs arguments, notamment pour permettre la transposition, mais ne nous y attardons pas : seul l’argument Paste nous intéresse ici. On lui passe le paramètre xlPasteValues, qui fait ce qu’il dit : il colle des valeurs. (On pourrait aussi coller des formules, des formats, etc.)

Dernière chose : désactiver le mode copie. On fait ça comme ceci :
    Application.CutCopyMode = False
Dans les manipulations à la souris ou au clavier qu’on a vues plus haut, c’est ce qui est fait lorsqu’on passe à l’étape suivante du travail, ou tout simplement si on appuie sur la touche ‘Échap’ : cela stoppe le liséré qui clignote autour des cellules copiées.

Ca peut ressembler à une coquetterie VBA, mais cela permet d’effectuer un travail complet de manière plus propre. Le copier-coller valeur est réalisé sans même qu’on voie qu’il y a eu une copie.

Voici la macro en entier, elle n’est pas bien lourde (euphémisme) :

Sub CopColVal_Sélection()
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub


C’est une macro que j’ai toujours sous la main, dans un classeur de macros personnelles. J’ai pris l’habitude de la déclencher par une séquence de trois touches.

Et là, contrairement à ce qui est pratique dans la manip de base au clavier, la séquence que j’ai définie pour cela demande une alternance gauche / droite / gauche. Plus précisément, c’est Alt pour appeler les menus, M pour mon menu d’accès aux macros personnelles, et C pour cette macro-là. Comme les touches Alt et C sont très proches, le déclenchement est extrêmement rapide : le copier-coller valeur doit prendre moins d’un dixième de seconde.

Délirant ? Peut-être. Mais terriblement confortable.

Aucun commentaire:

Enregistrer un commentaire