Copies de cellules optimisées

M

magoo

Guest
Bonjour à tous,

J'ai besoin de copier les cellules d'une feuille, ou je fais mes calculs, dans une autre ou je n'affiche que les résultats (sans formule).

Je voulais savoir si il y avait des solutions pour optimiser le code suivant qui correspond à la copie de une cellule dans mon formulaire alors que j'en ai une cinquantaine

Sub CopieCellule()
'
Sheets("CalculeCompteContact").Select
Range("H8").Select
Selection.Copy

Sheets("Formulaire").Select
Range("G5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False

End Sub

Il y a sûrement plus simple
Merci à vous d'avance

Magoo
 
J

jmps

Guest
Bonjour, magoo, bonjour léa,

On n'a pas besoin de passer par des select ou des activate pour faire des copies de cellules. Essaye le code ci-dessous.

Sub CopieCellule()
  Sheets("CalculeCompteContact").Range("H8").Copy
  Sheets("Formulaire").Range("G5").PasteSpecial Paste:=xlPasteValues, _
  Operation:=xlNone, SkipBlanks :=False, Transpose:=False
End Sub


De plus si ta feuille active est la première, tu peux aussi de passer de Sheets("CalculeCompteContact"). sur la première instruction et laisser le Range directement.

Bonne fin de journée.

José
 
L

léa

Guest
Bonjour José,

Absolument d'accord avec toi
Mais Magoo désire en plus d'optimiser son code, l'étendre à une "cinquantaine de cellules".
Voila pourquoi il serait peut-être intéressant de voir comment son disposeées ces fameuses 50 cellules afin d'intégrer ton bout de code dans une boucle ....

A+
Léa
 
R

Rai

Guest
Bonjour,

Pour copier la valeur d'une cellule, le code le plus optimisé que je connaisse ressemble à ça :
[G5] = [H8]
et d'une feuille à l'autre ça donnerait :
Sheets("Formulaire").[G5] = Sheets("CalculeCompteContact").[H8]

---------

Pour ce qui est de copier 50 cellulles, je suis d'accord, cela dépend de la forme de la zone de départ, et de celle d'arrivée

Pour l'instant on peut considérer que la sélection désigne les cellules à copier, et que le résultat sera collé sur des cellules contigues :

For Each c In Selection
Sheets("Formulaire").[G5].Offset(Lig, Col) = c
Lig = Lig + 1
'remplacer Lig par Col pour un déplacement horizontal
Next c

Ce qui continue à être 'optimisé'.

Mais attendons d'en savoir plus ;o))


A bientôt

Rai
 

Discussions similaires

Réponses
2
Affichages
143
Réponses
5
Affichages
172