VBA Excel général suite Flashcards
Sélection des cellules C5, D4 et F8 :
Range(“C5, D4, F8”).Select
le code ci-dessous sélectionne une plage de B2 à E8 :
Range(“B2:E8”).Select
Cells, une autre classe pour les cellules…
Les cellules sont des instances de Range, mais aussi de la classe Cells. La différance de code:
Range(“E3”).Select
Cells(3, 5).Select
C’est exactement l’inverse de l’adressage que nous connaissons dans le tableur. D’abord la ligne, ensuite la colonne.
Offset
Vous avez été traumatisés par les translations en maths ? Aïe pour vous. On va apprendre une technique qui sert à décaler une sélection à partir de la cellule active.
La cellule active est gérée par la classe ActiveCell. La classe nouvelle qui effectuera le décalage est Offset.
Offset attend deux arguments : le nombre de lignes puis le nombre de colonnes du décalage. Il ne faut pas se tromper dans le signe. Des exemples ? En voici :
Sub decalages()
‘La cellule active ne bouge pas :
ActiveCell.Offset(0, 0).Select
‘Décalage d’une ligne vers le bas et d’une colonne vers la droite :
ActiveCell.Offset(1, 1).Select
‘Décalage d’une ligne vers le haut et de trois colonnes vers la gauche :
ActiveCell.Offset(-1, -3).Select
End Sub
Les lignes du tableur sont des objets de la classe (1). La sélection de la deuxième ligne du classeur actif peut se faire comme ceci :
- Rows
Rows(“2”).Select
Tout comme pour les cellules, on peut aussi sélectionner une plage de lignes contiguës :
’ Sélection des lignes 2 à 5 incluses :
Rows(“2:5”).Select
On utilise toujours la même méthode (Select). C’est juste la classe qui change :)
Tout comme pour les cellules, on peut aussi sélectionner une plage de lignes contiguës :
’ Sélection des lignes 2 à 5 incluses :
Rows(“2:5”).Select
Les lignes peuvent aussi être discontinues. Dans ce cas, la syntaxe est la suivante :
Range(“2:2, 5:5, 6:8”).Select
La méthode pour sélectionner des colonnes est la même que pour sélectionner des lignes. Nous allons juste utiliser la classe Columns qui s’occupe des colonnes du tableur ;) Je pense que vous savez désormais sélectionner une colonne…
‘Sélection de la colonne C :
Columns(“C”).Select
Vous pouvez aussi sélectionner une plage de colonnes :
‘Sélection des colonnes C, D, E et F :
Columns(“C:F”).Select
Et comme pour les lignes, on se tourne vers la classe Range pour la sélection d’objets discontinus :
‘Sélection des colonnes A, C et G :
Range(“A:A, C:C, G:G”).Select
Nous savons maintenant ce qu’est une variable. Il est temps d’apprendre à les créer ! On parle alors de déclaration de variable. Il existe deux méthodes de déclaration : explicite et implicite. Étudions les deux méthodes.
- La déclaration de variable explicite est très simple, voici la syntaxe :
Dim ma_variable_explicite [As type]
Étudions ce bout de code.
Pour déclarer une variable, on écrit en premier Dim. Vient ensuite le nom de notre variable qu’il faut un minimum explicite, mais pas non plus une phrase. Enfin, le type de la variable. Il est ici entre crochets puisqu’il n’est pas obligatoire. S’il n’est pas indiqué, la variable est de type Variant par défaut (nous allons voir les différents types ultérieurement).
- On peut ensuite attribuer une valeur à notre variable :
ma_variable_explicite = 10
Déclaration implicite
La déclaration de variable explicite était simple, l’implicite l’est encore plus ! Voici la syntaxe :
ma_variable_implicite = 6
Vous avez compris le truc ? Et bien, la variable est utilisée directement. Elle n’a pas été déclarée avec Dim. Le programme demande automatiquement de créer cette variable, qui sera par défaut de type Variant et aura pour valeur 6.
Cette approche peut poser problème et engendrer des erreurs difficiles à détecter si vous n’orthographiez pas correctement le nom de la variable dans une commande ultérieure du programme.
Par exemple, si dans la suite de votre programme vous faites référence à ma_variabl_implicite au lieu de ma_variable_implicite, vous savez ce que cela signifie, mais VBA l’ignore. Il va supposer que ma_variabl_implicite est une nouvelle variable et la créé en tant que telle. L’ancienne variable, ma_variable_implicite, est toujours là, mais elle n’est plus utilisée. Vous avez à présent deux variables différentes alors que vous pensez n’en avoir qu’une seule. Cela peut causer d’énormes problèmes qui peuvent prendre beaucoup de temps à être résolus.
Afficher “bonjour” dans une boite de dialogue
Sub bonjour()
MsgBox “Bonjour”
End Sub
n type de données peut être attribué à une variable ce qui permet de déterminer le type d’information que la variable peut stocker. Cette décision peut avoir un effet sur l’efficacité de votre code. Si aucun type de données n’est spécifié, le type par défaut est Variant.
On rappelle que pour attribuer un type à une variable, il faut faire suivre le type lors de la déclaration de variable.
Dim ma_variable As String
Variant
Une variable de type Variant peut stocker tous les types de données, par exemple, du texte, des nombres, des dates ou bien encore d’autres informations. Elle peut même stocker un tableau entier. Une variable Variant peut modifier librement son type pendant l’exécution du code alors que ceci est impossible à réaliser avec un autre type de données (par exemple String).
Vous pouvez utiliser la fonction …. pour trouver le type de données que contient une variable Variant.
VarType
n type de données peut être attribué à une variable ce qui permet de déterminer le type d’information que la variable peut stocker. Cette décision peut avoir un effet sur l’efficacité de votre code. Si aucun type de données n’est spécifié, le type par défaut est Variant.
On rappelle que pour attribuer un type à une variable, il faut faire suivre le type lors de la déclaration de variable.
Dim ma_variable As String
Variant
Une variable de type Variant peut stocker tous les types de données, par exemple, du texte, des nombres, des dates ou bien encore d’autres informations. Elle peut même stocker un tableau entier. Une variable Variant peut modifier librement son type pendant l’exécution du code alors que ceci est impossible à réaliser avec un autre type de données (par exemple String).
Vous pouvez utiliser la fonction …. pour trouver le type de données que contient une variable Variant.
VarType
Sub TestVariables()
’ On déclare implicitement une variable qui est du texte.
ma_variable = “le_site_du_zéro”
'On affiche le type de la variable MsgBox VarType(ma_variable)
‘On change la valeur de la variable pour mettre un nombre
ma_variable = 4
'On affiche le nouveau type de la même variable MsgBox VarType(ma_variable)
End Sub
La boite de dialogue affichera d’abord la valeur 8 puis la valeur 2.
Mais, je croyais que la fonction nous renvoyait le type de la variable ?
C’est le cas, sauf qu’au lieu de vous le donnez en toutes lettres. On vous donne un chiffre qui correspond à un type. Voilà le tableau des correspondances :
Valeur de retour Type 0 Empty 1 Null 2 Integer 3 Long 4 Single 5 Double 6 Currency 7 Date/Time 8 String
Même si Variant stocke tout type de données, il n’est pas indifférent à ce qu’il contient. En effet, vous avez vu dans l’exemple précédant que Varient identifie le type de données. Ainsi, si vous essayez d’effectuer des calculs avec une variable de type Variant mais contenant du texte, une erreur apparait. Il existe une fonction pour savoir si la variable est de type numérique ou non et donc ainsi faire des calculs. Cette fonction est … et fonctionne comme la fonction VarType. Si la variable comprend un nombre, la fonction renvoie Vrai, sinon elle renvoie Faux.
IsNumeric