Optimisation de code

Résolu
enark78 Messages postés 417 Date d'inscription   Statut Membre Dernière intervention   -  
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   - 11 févr. 2010 à 14:32
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
A voir également:

8 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
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
Artamos Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   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
enark78 Messages postés 417 Date d'inscription   Statut Membre Dernière intervention   17
 
ok, merci a vous deux
0
enark78 Messages postés 417 Date d'inscription   Statut Membre Dernière intervention   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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
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
enark78 Messages postés 417 Date d'inscription   Statut Membre Dernière intervention   17
 
ca c'est pour ma premiere question non ?
0
enark78 Messages postés 417 Date d'inscription   Statut Membre Dernière intervention   17
 
personne pour ma deuxieme question ?
0
Bidouilleu_R Messages postés 1181 Date d'inscription   Statut Membre Dernière intervention   295
 
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