Optimisation de code

Résolu
enark78 Messages postés 491 Statut Membre -  
Bidouilleu_R Messages postés 1209 Statut Membre -
Bonjour, je voulais savoir s'il est possible de simplifier ce code:
Sheets("P1").Range("N35").Value = Sheets("Stats").Range("B15").Value
Sheets("P1").Range("N36").Value = Sheets("Stats").Range("B15").Value
Sheets("P1").Range("N46").Value = Sheets("Stats").Range("B15").Value
Sheets("P1").Range("N47").Value = Sheets("Stats").Range("B15").Value

C'est une macro excel pour ceux ou celles qui se posent la question.
Merci d'avance
Configuration: Windows XP Internet Explorer 6.0

8 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    on peut "éclaircir" en stockant la valeur de Sheets("Stats").Range("B15").Value dans une variable
    puis sur une boucle with ...end with

    Sheets("p1").Select
    toto = Sheets("Stats").Range("B15").Value
    With Sheets("p1")
        .Range("N35").Value = toto
        .Range("N36").Value = toto
        .Range("N46").Value = toto
        .Range("N47").Value = toto
    
    End With


    mais est-ce plus simple? ton code fonctionne c'est déjà bien! et même très bien.
    0
  2. Artamos Messages postés 184 Statut Membre 16
     
    en effet, difficile d'optimiser une simple copie de valeurs.
    La solution de Bidouilleu_R reste la meilleurs si tu y tiens vraiment.
    0
  3. enark78 Messages postés 491 Statut Membre 17
     
    ok, merci a vous deux
    0
  4. enark78 Messages postés 491 Statut Membre 17
     
    J'ai une question du même genre donc je vais la poster ici, peut-on faire la meme chose meme en selectionnant plusieurs cellules ?
    Un exemple vaut bien mieux qu'une explication (surtout quand on voit mon explication) donc:
    Range("C1:N31").Select
    Selection.Copy
    Range("B1").Select
    ActiveSheet.Paste

    Est ce que je peux remplacer mon c/c par une formule du type range("quelque chose").value=range("autrechose").value ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    copier coller marche mais il faut que la plage soit contigüe
    attention la zone où tu colles doit être =ou > à la zone de copie
    activesheet.paste résoud le problème

    une autre méthode ...

    Sub test2()
    Dim toto As Variant
    toto = Sheets("Stats").Range("B2:B5")
    With Sheets("p1")
    .Range("N35").Value = toto(1, 1)
    .Range("N36").Value = toto(2, 1)
    .Range("N46").Value = toto(3, 1)
    .Range("N47").Value = toto(4, 1)

    End With

    End Sub
    0
  7. enark78 Messages postés 491 Statut Membre 17
     
    ca c'est pour ma premiere question non ?
    0
  8. enark78 Messages postés 491 Statut Membre 17
     
    personne pour ma deuxieme question ?
    0
  9. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    content? ; )

    Sub test2()
    Dim toto As Variant
    toto = Sheets("Stats").Range("c1:n31")

    Sheets("p1").Select
    For i = 1 To 31
    ' B1 correspond à cells(1,2)
    Cells(i, 2).Value = toto(i, 1)
    Next i
    End Sub
    0