Réaliser et comprendre les sélections en VBA !
Quand on se lance dans le VBA, un des point les plus difficile à comprendre est la sélection des cellules, plage de cellule, zone de cellule… bref tout ce qui se rapproche de la sélection en VBA (il y a aussi la déclaration des variables avec laquelle je jongle plus que je ne la maitrise !)
Pour faire une sélection deux méthodes : Le Range(cellule:cellule) ; ou la seconde Cells(ligne,colonne)
Voyons ces méthodes en détail :
Le Range :
Pour faire une sélection d’une cellule simple, ou d’une plage de cellule, le range est le plus facile à utiliser ; on va même le retrouver dans les codes fournis avec l’éditeur de macro.
Comment l’utiliser ? regarder les exemples ci-dessous
-
-
‘Sélection d’une cellule simple
-
Range("A1").select
-
-
‘Sélection d’une plage de cellule en mode horizontal
-
Range("A1:D1").select
-
‘ou en mode vertical
-
Range("A1:D9999").select
-
‘ou encore les deux modes
-
Range("A1:U9999").select
-
-
‘Sélection d’une colonne :
-
Range("A:A").select
-
-
‘Selection d’une ligne
-
Range("1:1").select
-
Jusque là tout est simple, et vous pouvez retrouver le tout sur des forums, des tuto etc…
Maintenant passons aux choses sérieuse !
-
-
‘On va attribuer la valeur d’une cellule à une variable
-
mavariable = range("A1")
-
‘attention a bien supprimer le ".select"
-
-
‘on va selectionner une plage de cellule en fonction d’une variable
-
Range("A1:A" & nbdata).select
-
‘ou nbdata est le nombre de valeurs à sélectionner
-
‘on peut aussi en prendre plus
-
-
Range("A" & nbdatastart & ":B" & nbdataend).select
-
‘ou nbdatastart est la ligne de départ…
-
-
‘on peut aller plus loin en sélectionnant une ligne
-
Range(nbdata &";"& nbdata).select
-
”ou nbdata est le numéro de la ligne
-
C’est à peu près tout pour l’utilisation de Range !
Le Cells :
L’utilisation de Cells(a,b) est similaire au Range, tout en étant plus compliqué, et en nous laissant aller plus loin dans nos sélection ! Personnellement je l’utilise dans des loop, ou je vais inscrire des données, a la fois dans des lignes différents, mais aussi dans des colonnes différentes !
Comment utiliser Range ?
-
-
’sélectionner une cellule ; ici A1
-
Cells(1,1).select
-
‘Ou B4 !
-
Cells(4,2).select
-
‘Bref cela donne :
-
Cells([Numéro de la ligne],[Numéro de la colonne (A=1, B=2,...,Z=26]).select
-
-
‘on peut aussi faire des cellules contiguës avec un range au milieu !
-
‘Pour A1:B9
-
Range(cells(1,1),cells(9,2)).select
-
On peut faire la même chose avec des variables
-
-
‘Pour affecter un nombre à nbdata situé en C2
-
nbdata = cells(2,3)
-
-
‘On peut aussi sélectionner en fonction des variables !
-
Cells(b,a).select
-
‘où b est le numéro de ligne, et a celui de la colonne
-
-
‘placé dans un loop cela donne :
-
For i = 1 To 999
-
Cells(i, i).Select
-
ActiveCell.FormulaR1C1 = "=RANDBETWEEN(0,999)"
-
Next i
-
‘ce qui donne un truc comme l’image ci-dessous (la fonction RANDBETWEEN(0,999) permet d’afficher un chiffre entre 0 et 999 de manière aléatoire !
-

Vous pouvez bien entendu avoir des utilisations plus utiles et plus complexe de ces fonctions, mais à vous de les trouver maintenant !
Par contre j’ai remarqué que dans certains cas la fonction Cells avait tendance à ne pas fonctionner (par exemple dans le cadre de la mise à jour d’un graphique !)
Pour y remédier, j’ai eu recourt à la fonction qui nous retourne la lettre de la colonne en fonction de l’adresse d’une cellule !
c’est : =GAUCHE(ADRESSE(1;COLONNE([adresse de la cellule]);4);NBCAR(ADRESSE(1;COLONNE([adresse de la cellule]);4))-1)
Ce qui nous permet donc de venir utiliser un Range à la place du select ; ce qui nous donne en VBA :
-
-
‘on va coller cette formule dans la cellule A1
-
Range("A1").Select
-
ActiveCell.FormulaR1C1 = _
-
"=LEFT(ADDRESS(1,COLUMN(RC[" & nbcolonne& "]),4),LEN(ADDRESS(1,COLUMN(RC[" & nbcolonne & "]),4))-1)"
-
‘ou nbcolonne est le numéro de votre dernière colonne
-
‘on vient récupérer cette lettre !
-
lettrecolonne = range("A1")
-
-
‘et on va l’utiliser dans notre sélection :
-
range("A1:"& lettrecolonne & "9").select
-
Et voilà !
vous en voyez d’autre ? des questions ?
Tags: excel, formule excel, sélection excel, vba Posted in


Laisser un commentaire