Les dictionnaires sont des tableaux associatifs dans lesquels chaque clés est reliée à une valeur.
Un dictionnaire se crée avec des accolades.
dico = {} # Création d'une dictionnaire vide
dico = {'clé1' : 'valeur1', 'clé2' : 'valeur1', 'clé3' : 'valeur3'} # Création d'une dictionnaire avec 3 valeurs
Pour ajouter une valeur dans un dictionnaire, il faut indiquer une clé entre crochets.
mon_dico[clé] = valeur # Ajout de valeur à la "position" clé
Si on ajoute une valeur à une clé existante, cela remplacera l'ancienne valeur par la nouvelle.
À savoir : si on boucle sur un dictionnaire, Python nous renverra les clés :
for element in dico:
print(element) # Affiche clé1 puis clé2 puis clé3
Les dictionnaires sont des tableaux associatifs dans lesquels chaque clés est reliée à une valeur.
Un dictionnaire se crée avec des accolades.
dico = {} # Création d'une dictionnaire vide
dico = {'clé1' : 'valeur1', 'clé2' : 'valeur1', 'clé3' : 'valeur3'} # Création d'une dictionnaire avec 3 valeurs
Pour ajouter une valeur dans un dictionnaire, il faut indiquer une clé entre crochets.
mon_dico[clé] = valeur # Ajout de valeur à la "position" clé
Si on ajoute une valeur à une clé existante, cela remplacera l'ancienne valeur par la nouvelle.
À savoir : si on boucle sur un dictionnaire, Python nous renverra les clés :
for element in dico:
print(element) # Affiche clé1 puis clé2 puis clé3
VBA
Visual Basic for Applications (VBA) est un language de programmation de Microsoft qui est intégré dans toutes les applications de Microsoft Office. Dans cette fiche, nous allons voir VBA appliqué à Excel.
Pour pouvoir accéder à l'onglet VBA sur Excel, il faut aller dans Option, puis Personnalisé le ruban et cocher Développeur. Dans l'onglet développeur, cliquez sur Visual Basic (en haut à gauche).
Il faut aussi activé les macros, pour cela il faut désactiver la sécurité des macros dans l'onglet développeur.
Exécuter une macro / programme :
- Soit sur VBA, cliquez sur Exécuter.
- Soit dans l'onglet Développeur sur Excel, cliquez sur Macro, sélectionnez votre macro puis cliquez sur Exécuter.
Pour mettre un point d'arrêt sur une ligne d'un programme, il faut cliquer à gauche de la ligne.
Pour exécuter pas à pas un programme, il faut utiliser la touche F8.
Pour faire un commentaire, il faut le précéder par un apostrophe :
' commentaire
Créer un programme / une macro :
sub nom_programme( )
actions
end sub
Quand on écrit un programme, il est parfois utile de faire appel à un autre programme. À la place de faire un vulgaire copier coller du programme, je vous conseille d'utiliser plutôt la fonction call qui a pour argument le nom du programme dont on veut faire appel.
call(nom_programme)
Déclarer une variable :
dim nom_variable as type
Déclarer plusieurs variables :
dim nom_variable1, nom_variable2, nom_variable3 as type
Déclarer une variable qui sera utilisable en dehors de la macro :
public nom_variable as type
Les principaux types de variables sont :
- integer
- string
- single
- double
- long
Afficher un message à l'écran :
msgbox("Message textuel à écrire")
msgbox(variable à afficher) ' On ne met pas d'apostrophe pour les variables à afficher.
Pour faire une concaténation, on utilise le symbole & :
msgbox("La moyenne est : " & variable_moyenne)
Pour faire un saut de ligne / retour chariot, on utilise la commande char(10) ou char(13) :
msgbox("La moyenne est : " & variable_moyenne & char(10) & "La médiane est : " & variable_médiane)
Si on souhaite ajouter des options (boutons, titre) au message à afficher, on précède la commande msgbox( ) par l'instruction call :
call msgbox("Bonjour", option_bouton, "Écrire ici un titre")
call msgbox("Bonjour", , "Écrire ici un titre") ' On doit laisser les deux virgules si on ne veut pas préciser d'option pour les boutons.
On peut aussi utiliser une boîte de dialogue qui permet de récupérer une valeur dans une variable. On affiche une question, puis l'utilisateur rentre une valeur qui sera enregistrer dans une variable :
variable_reponse = inputbox("Écrire ici une question")
Interactions avec Excel :
Écrire dans une cellule :
- Soit cells(numéro ligne, numéro colonne) = "Ce texte sera écrit dans la cellule"
- Soit range("nom cellule") = "Ce texte sera écrit dans la cellule"
Pour préciser une feuille :
- Soit sheets("Feuil2").cells(1,1) = "..."
- Soit sheets("Feuil2").range("A1") = "..."
À l'inverse, on peut stocker dans une variable le contenu d'une cellule :
var = sheets("Feuil2").cells(2,4)
Renvoie vers un point du programme :
A : ' Création de mon ancre. Ne pas oublier les deux points.
goto A ' Renvoie vers mon ancre nommée A.
Incrémenter une valeur :
i = i + 1
Enfin, pour supprimer le contenu de toutes les cellules d'une feuille, il faudra utiliser la fonction clear :
Sheets("Feuil2").Cells.Clear ' Supprime le contenu de toutes les cellules de la feuille nommée Feuil2.
Pour supprimer le contenu d'une cellule en particulier :
Sheets("Feuil2").Range("A1").Clear ' Supprime le contenu de la cellule A1 de la feuille nommée Feuil2.
Sheets("Feuil2").Cells(1,1).Clear ' Supprime le contenu de la cellule A1 (ligne 1, colonne 1) de la feuille nommée Feuil2.
Boucle si :
Condition avec deux cas :
if condition then
actions si la condition est remplie
else
actions si la condition n'est pas remplie
end if
Condition avec plus de deux cas :
if condition then
actions
elseif condition then
actions
elseif condition then
actions
else
actions
end if
À savoir : comme avec tous les langages de programmation, on peut utiliser les mots clés and et or. Avec and, les deux conditions doivent êtres réalisées. Avec or, au moins une des deux conditions doit être réalisée.
Astuce : dans une condition, pour vérifier qu'une cellule est vide, on utilise les guillemets avec rien dedans :
if cells(1,1) = "" then
On peut aussi utiliser select case, pour faire des conditions :
select case nom_variable
case is < 0
actions
case 0 to 5
actions
case else
actions
end select
Boucle pour :
for i = ... to ... step ...
actions
next ' Avec la boucle if, on met end if à la fin, avec la boucle for, on met next.
L'option step est facultatif, elle sert à préciser le pas de la boucle (de 2 en 2 par exemple : step 2).
Boucle tant que :
while condition
actions
wend ' Avec la boucle if, on met end if à la fin, avec la boucle while, on met wend.
Autres fonctions utiles :
Générer un nombre décimale aléatoire entre 0 et 1 (non compris) :
rnd(1)
À savoir que rnd(1) fait strictement la même chose que rnd(10).
Il est fortement conseillé de mettre la commande randomize, avant l'utilisation de la fonction rnd, afin de la réinitialiser et de la rendre imprévisible :
randomize
rnd(1)
Générer un nombre entier aléatoire entre 1 et 40
int(rnd(1)*40+1)
À savoir : la fonction int permet d'avoir la partie entière d'un nombre. Attention : cette fonction ne va pas faire un arrondi, elle va juste prendre les chiffres à gauche de la virgule.
Fonctions sur les chaînes de caractères :
Renvoyer un nombre de caractères à gauche de la chaîne :
left(variable textuelle, nombre de caractère)
Renvoyer un nombre de caractères à droite de la chaîne :
right(variable textuelle, nombre de caractère)
Renvoyer un nombre de caractères au milieu de la chaîne :
mid(variable textuelle, numéro du premier caractère, nombre de caractère)
Renvoyer la taille d'une chaîne de caractères :
len(variable textuelle)
Fonctions sur les dates :
Renvoyer l'année :
year(variable date)
Renvoyer le mois (en chiffre) :
month(variable date)
Renvoyer le jour (en chiffre) :
day(variable date)
Renvoyer le jour de la semaine (en lettre):
weekday(variable date)
Parcours de lignes et de caractères :
Parcours de toutes les lignes d'une colonne d'un fichier :
Si on connait le nombre de lignes :
for i=1 to NombreLignes
...
next
Si on ne connait pas le nombre de lignes :
i = 1
while cells(i,1) <> "" ' Tant que la cellule i de la colonne 1 n'est pas vide.
...
i = i + 1 ' Ne pas oublier d'incrémenter le compteur de lignes.
wend
Parcours de tous les caractères d'une cellule :
for i = 1 to len(cells(...,...)) ' Pour i allant de 1 à la fin de la chaine de caractères de la cellule ...
if mid(cells(...,...), i, 1) = "..." ' Si le caractère est égale à ...
...
end if
next
Important : pour lancer une macro depuis Excel juste en cliquant sur un bouton personnalisable, il faut aller dans l'onglet développeur sur Excel, puis cliquer sur insérer et choisir un bouton.
Cela peut être utile pour qu'un utilisateur non initié au language VBA puisse lancer des macros depuis Excel.
Enfin, si vous ne savez pas comment coder une action sous Excel :
Allez dans l'onglet développeur, cliquez sur enregistrer une macro, faites l'action sous Excel, puis arrêter l'enregistrement.
Pour retrouver le code de l'action sous Excel, allez dans vos macros VBA.
Pour finir, quand vous enregistrer un fichier Excel, n'oubliez pas de spécifier le type "Classeur Excel (prenant en charge les macros)". Si vous ne le faites pas, vous perdrez tous vos programmes.