2 questions d'ordre général en VBA

Alphonss

XLDnaute Nouveau
Bonjour,

Comme l'annonce l'intitulé de cette discussion j'ai 2 questions : o)

1ere Question : "Range" & "Cells"
D'après ce que j'ai compris en lisant sur des forums "Range" et "Cells" diffèrent en ce point : "Cells" ne peut que prendre en charge une seule cellule tandis que "Range" peut prendre à la fois en charge une seule cellule ou plusieurs.
Ma question est donc la suivante : Est-il finalement utile d'utiliser "Cells". Autant utiliser "Range" à chaque fois. "Cells" a-t-il une utilité qui m'échappe mis à part le fait que la syntaxe est différente de "Range" :

Range.("B5").Select

ET

Cells(5, 2).Select

2eme Question : "Selection" et "ActiveCell"
J'aimerais savoir si il y a une différence entre :

Range("A1").Select
ActiveCell.FormulaR1C1 = "Bonjour"

ET

Range("A1").Select
Selection.FormulaR1C1 = "Bonjour"


Par ailleurs peut on utilisé "Selection" et "ActiveCell" aussi bien avec:

Range("A1").Select

ET

Cells(1, 1).Select


(Il me semble par ailleurs qu'il est possible d'écrire directement :
Range("A1").FormulaR1C1 = "Bonjour")

Merci d'avance :)


Alphons
 

RENAUDER

Nous a quitté
Repose en paix
Re : 2 questions d'ordre général en VBA

Bonjour,
Range ou Cells:
Les 2 ont leur utilité.
Par exemple pour sélectionner la cellule A1, j'utiliserai plus souvent Range("A1").Select que Cells(1,1).Select car ça me parait plus évident.
D'ailleurs tu peux aussi écrire [A1].Select

Avec des variables par contre ...
Cells avec ses 2 paramètres est approprié par exemple avec des boucles de type For i= 1 To 25 et For J=1 To 3 comme ça on peut facilement écrire des données dans une cellule en écrivant Cells(I,J).Value=...
Par exemple pour sélectionner la cellule j'utiliserai plus souvent Range("A1").Select



Pour ta seconde question tout ce que tu dis est vrai et je pense que
cela dépend de la personne qui écrit le programme car moi-même je pense avoir utilisé tous les cas que tu cites et c'est peut-être lié à l'humeur du moment.
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : 2 questions d'ordre général en VBA

Bonjour le fil, bonjour le forum,

Regarde ce code et tu comprendras mieux la différence pour ta deuxième question :
Code:
Sub Macro1()
Range("A1:A10").Select
Selection.Value = "testA" 'plus court que ".FormulaR1C1 = "testA"
Range("B1:B10").Select
ActiveCell.Value = "testB"
End Sub
Même si il y a plusieurs cellules sélectionnées, il n'y a qu'une seule cellule Active.

Mais pour reprendre ta dernière remarque ce n'est pas qu'il est possible d'écrire directement mais c'est qu'on doit écrire directement. Car les Select ralentissent toujours le code et il faut éviter un maximum de les utiliser.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 100
Messages
2 085 294
Membres
102 854
dernier inscrit
ADRIENVR