VBA Excel

Résolu/Fermé
Grumly - 3 déc. 2009 à 10:56
 Grumly - 3 déc. 2009 à 14:12
Bonjour,

Sous excell j'aimerai faire une macro qui me copie la valeur d'une cellule dans une autre, et ce pour une plage entiere

Ma plage destination est declaré dans le "Name manager" et la source est relative (10 colonne plus a droite)

Merci

2 réponses

tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
3 déc. 2009 à 11:09
Bonjour,
ça devrait faire qqchose comme ça :
Range("Name manager").Offset(0, -10).Select
Selection.Copy
Range("Name manager").Select
ActiveSheet.Paste
0
Je precise que j'ai bien reussi a faire une marco "Record" en selectionnant la source, copy, puis en selectionnant la destination et en faisant paste.value. Mais la macro ecrite est 100% excel :

Range("Z11:AB21").Select
Selection.Copy
Range("J11:L21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Et en fait, j'aimerai au passage faire un petit traitement du genre, ne pas faire la copie si la des contient une valeur precise, et eventuellement faire un triatement simple de la valeur source (du genre remplacer"PASSED" par "P" ..)
donc une macro en VB du genre :
0
Merci tompol (j'avait pas vu ta reponse avant ma precision).

C'est deja mieux, mais pas encore excatement ce que je veux faire.
0
Grumly > Grumly
3 déc. 2009 à 11:49
j'ai reussi a faire ca :

Dim Cellule As Range
Dim p As String

For Each Cellule In Range("playback_")
If Cellule.Value <> "NI" And Cellule.Value <> "NA" Then
p = Cellule.Offset(0, 8).Value
p = Replace(p, "PASSED", "P")
p = Replace(p, "FAILED", "F")
p = Replace(p, "LOW_Q", "LQ")
Cellule.Value = p
End If
Next

mais c'est beaucoup plus lent !!
0
Rilke Messages postés 4 Date d'inscription jeudi 3 décembre 2009 Statut Membre Dernière intervention 3 décembre 2009 > Grumly
3 déc. 2009 à 12:09
Bonjour,

pour accélérer le traitement :
encadrer celui-ci avec :
Application.ScreenUpdating = False
[ ... traitement ...]
Application.ScreenUpdating = True

La mise à jour de l'affichage ne se fera qu'en fin de traitement
Il y a aussi la possibilité d'inhiber et réactiver les calculs
Application.Calculation = xlManual
Application.Calculation = xlAutomatic
0
Grumly > Rilke Messages postés 4 Date d'inscription jeudi 3 décembre 2009 Statut Membre Dernière intervention 3 décembre 2009
3 déc. 2009 à 14:12
Merci bcp, en effet ca na rien a voir, tres efficace !
0