VBA Excel

Résolu
Grumly -  
 Grumly -
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
Configuration: Windows XP
Firefox 3.5.5

2 réponses

  1. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    Bonjour,
    ça devrait faire qqchose comme ça :
    Range("Name manager").Offset(0, -10).Select
    Selection.Copy
    Range("Name manager").Select
    ActiveSheet.Paste
    0
  2. Grumly
     
    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
    1. Grumly
       
      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
      1. Grumly > Grumly
         
        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
      2. Rilke Messages postés 4 Statut Membre > Grumly
         
        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
      3. Grumly > Rilke Messages postés 4 Statut Membre
         
        Merci bcp, en effet ca na rien a voir, tres efficace !
        0