Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA: Et le collage spécial

12 réponses
Avatar
Emile63
Bonjour =C3=A0 tous,

Par souci d'optimalisation, je me demandais si on peut am=C3=A9liorer ce bo=
ut de code.
Je pense surtout au collage des valeurs et formats en une seule ligne


With ActiveSheet
.Range("MonInsertion").Copy
.Range("A5").PasteSpecial Paste:=3DxlValues
.Range("A5").PasteSpecial Paste:=3DxlPasteFormats
Application.CutCopyMode =3D False
End With

Merci d'avance pour vos commentaires,
Tr=C3=A8s bonne journ=C3=A9e =C3=A0 tous.
Emile

10 réponses

1 2
Avatar
LSteph
Bonjour,
[MonInsertion].Copy [A5]
[A5]=[MonInsertion]
Application.CutCopyMode = False
'LSteph
Avatar
JièL
Le Môssieur il a dit "en une seule ligne"... pfffff faut toujours
surveiller ce que tu fais ;-))))))
[MonInsertion].Copy [A5] : [A5]=[MonInsertion] :
Application.CutCopyMode = False
--
JièL Sur et bien veillant
Le 17/08/2016 à 11:54, LSteph a écrit :
Bonjour,
[MonInsertion].Copy [A5]
[A5]=[MonInsertion]
Application.CutCopyMode = False
'LSteph
Avatar
LSteph
:(roooo
JièL : Peu: Sur et bien Vilain (veillant)

;o)
Avatar
MichD
Bonjour,
ActiveSheet.Range("MonInsertion").Copy ActiveSheet.Range("A5")
MichD
Avatar
Emile63
Bonjour à tous,
Merci pour vos propositions. :-)
Avec le "Copy" on copie intégralement la cellule alors que je ne dois copier que les formats et valeurs (pas les formules), d'ou le "PasteSpecial "
Si je reprends la proposition de MichD, je verrais bien un truc de ce genre :
ActiveSheet.Range("MonInsertion").Copy ActiveSheet.Range("A5").PasteSpecial Paste:=xlValues :=xlPasteFormats
Mais je doute que ça fonctionne en 1 ligne.. :-/
Avatar
LSteph
Bonjour,
C'est gentil de nous dire merci mais teste les ces propositions:
[MonInsertion].Copy [A5] 'ca copie tout
[A5]=[MonInsertion] 'mais retient la valeur pas la formule
';o))
Emile63 a écrit :
Merci pour vos propositions. :-)
Avec le "Copy" on copie intégralement la cellule alors que je ne doi s copier que les formats et valeurs (pas les formules), d'ou le "PasteSpeci al"
Si je reprends la proposition de MichD, je verrais bien un truc de ce gen re:
ActiveSheet.Range("MonInsertion").Copy ActiveSheet.Range("A5").PasteSpeci al Paste:=xlValues :=xlPasteFormats
Mais je doute que ça fonctionne en 1 ligne.. :-/
Avatar
MichD
Il y a aussi ceci:
with ActiveSheet
With .Range("MonInsertion")
.Copy .Range("A5")
.Value = .value
End With
End With
Avatar
MichD
Plutôt comme ceci :
Il y a aussi ceci:
with ActiveSheet
.Range("MonInsertion").Copy .Range("A5")
With .Range("A5")
.Value = .value
End With
End With
Avatar
Emile63
Re-Bonjour à tous,
Oui LSteph, tu as raison, autant pour moi. :-)
Le Nom [MonInsertion] correspond à une ligne d'une dizaine de cellules contiguës, avec dans les cellules, parfois des formules, des dates et d'autres du texte. d'ou l'intérêt de copier les valeurs et forma ts.
En utilisant la proposition:
[MonInsertion].Copy [A5] : [A5]=[MonInsertion] :
La première opération copie bien toutes les cellules de la zone: MonInsertion et les colle en(a partir de..) A5.
Malheureusement la seconde étape n'a pas l'air de fonctionner comme es péré, en effet la cellule A5 se vide de son contenu (effacé) et les formules qu'il y a sur les autres cellules contiguës, sont tou jours présentes...
Comme je n'étais pas sûr des deux petits points finaux (à qu oi servent-ils?), j'ai testé avec ou sans , mais n'y ai pas vu de diff érence.
Voilà le mieux que trouvé:
With ActiveSheet.[MonInsertion].Copy
[A5].PasteSpecial Paste:=xlValues: [A5].PasteSpecial Paste: =xlPasteFormats: Application.CutCopyMode = False
End With
PS: Excel 2016
Merci pour votre aide encore.
Bonne journée,
Emile
Avatar
LSteph
...alors on va dire plutôt au temps pour moi!
on en aurait gagné en imaginant qu'il s'agissait non pas d'une cellul e mais de plusieurs...
--
LSteph
Le jeudi 18 août 2016 15:38:27 UTC+2, Emile63 a écrit :
Re-Bonjour à tous,
Oui LSteph, tu as raison, autant pour moi. :-)
Le Nom [MonInsertion] correspond à une ligne d'une dizaine de cellul es
1 2