Est-il plus performant de renseigner une cellule en utilisant le range ou en activant la feuille et en utilisant cells.value ?
Est-il plus performant de renseigner une cellule en utilisant le range ou en activant la feuille et en utilisant cells.value ?
Bonjour,
que tu utilises un range simple, un cells(ligne,colonne) ou encore un range(Cells(ligne,colonne),Cells(ligne,colonne)) ... il sera toujours plus rapide de directement les manipuler, plutôt que d'activer les feuilles et les sélectionner
exemple avec un range simple (c'est pareil pour les Cells et les Range incluant des Cells)
Méthode à proscrire
Methode conseillée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Sub PasOptimal() Sheets("Feuil1").Activate Range("A1").Select Selection.Copy Sheets("Feuil2").Activate Range("B4").Select ActiveSheet.Paste End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub PlusOptimal() Sheets("Feuil1").Range("A1").Copy Sheets("Feuil2").Range("B4") End Sub
Je pensais davantage à des données provenant de curseur sql.
Je suis désolé, ma boule de cristal ne fonctionne pas très bien, et vu que tu postes dans la catégorie "Excel VBA", je répond stricto sur ce périmètre puisque tu ne précisait pas de contexte particulier
tes données ont déjà été rapatriée sur Excel ? Ta requête SQL est dans une table sur Excel ou ailleurs ? Que souhaites-tu faire de ta sélection ? etc..
il faut encore des précisions sinon on va encore répondre en dehors de ton souhait
Mes données proviennent d'une base de données oracle.
Est-il plus performant de coder
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 With worksheet("mafeuille") .range("A" & i).value = valeur de mon recordset End with
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 worksheet("mafeuille").activate Cells(i,1).value = valeur de mon recordset
Si on reprend ma première explication, c'est ton premier code le plus perfomant : tu n'actives pas de feuille
mais on peut rendre ton second code équivalent au premier, il suffit de rattacher ton Cells à la feuille concernée :
Par ailleurs, le ".value" n'est pas nécessaire, c'est la propriété par défaut... si tu n'indiques aucun propriété ( Range("A1") = Une valeur) alors c'est interprété comme un .Value
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 With worksheet("mafeuille") .Cells(i,1).value = valeur de mon recordset End With
Bonjour,
Sans avoir fait une revue exhaustive des expériences des "collègues" voici, comme dirait Guy A. Lepage, "La question qui tue" : Pourquoi activer la feuille ?
Cells et Range sont fondamentalement la même chose, des Objets Range. Les moments où il faut sélectionner ou activer la feuille pour manipuler des objets Range, sont excessivement rares.
Partager