Introduction aux macros et à VBA
Comment démarrer avec Excel VBA
Liste des codes fréquemment utilisés
Nous avons résumé les préparatifs pour commencer à écrire du VBA et les codes de base souvent utilisés. Nous présenterons des exemples que vous pouvez copier et essayer, notamment la spécification de cellule/plage, les variables, le branchement conditionnel, la répétition et la façon d'écrire des fonctions.
Si vous souhaitez savoir ce que sont les macros et VBA, veuillez d'abord consulter Article d'introduction aux macros/VBA.
Préparation de l'environnement de Développeur (Windows)
Vous n'avez besoin d'aucun autre logiciel pour écrire du VBA. Écrivez-le en VBE(Visual Basic Editor) dans Excel et exécutez-le tel quel. Tout d’abord, préparez ce qui suit une seule fois.
1. Afficher l'onglet développeur
Ouvrez « Fichier » → « Options » → « Personnaliser le ruban », cochez « Développeur » dans la liste des « Onglets principaux » à droite et appuyez sur « OK ». Un onglet « Développeur » apparaîtra sur le ruban.
2. Ouvrez VBE
Cliquez sur "Visual Basic" dans l'onglet "Développeur".Alt+F11Mais je peux l'ouvrir. En appuyant à nouveau dessus, vous reviendrez à l’écran Excel.
3. Ajouter un module standard
Sélectionnez "Insertion" → "Module standard" dans le menu VBE. "Module1" sera créé dans le projet à gauche, et vous pourrez écrire du code à droite. Les macros ordinaires sont écrites dans ce module standard.
4. Activez « Forcer la déclaration des variables »
Cochez "Forcer la déclaration des variables" dans l'onglet "Outils" → "Options" → "Modifier" de VBE. La ligne suivante est automatiquement insérée au début du module nouvellement créé et un message d'erreur s'affichera pour vous informer si vous avez mal saisi un nom de variable.
Option Explicit ' Au début du module, cette instruction impose la déclaration des variables avec Dim.5. Écrivez et exécutez
Après avoir écrit le code, cliquez à l'intérieur de Sub ~ End Sub, puis appuyez sur "▶" (Sub/Run User Form) dans la barre d'outils, ouF5Appuyez sur Depuis l'écran Excel, cliquez sur "Macros" (Alt+F8) pour sélectionner un nom et l'exécuter.
Si vous souhaitez vérifier les valeurs intermédiaires, accédez à "Affichage" → "Fenêtre immédiate" de VBE (Ctrl+G) et écrivez "Nom de la variable Debug.Print" dans le code, la valeur y apparaîtra.
6. Enregistrer en tant que classeur prenant en charge les macros (.xlsm)
Pour le classeur dans lequel vous avez écrit VBA, sélectionnez "Classeur Excel prenant en charge les macros (*.xlsm)" dans "Enregistrer sous". Si vous l'enregistrez en tant que fichier .xlsx standard, le code que vous avez écrit sera perdu.
Lorsque vous ouvrez le classeur, si vous recevez un message indiquant « Avertissement de sécurité : les macros ont été désactivées », cliquez sur « Activer le contenu » uniquement si le classeur est celui que vous avez créé ou en qui vous avez confiance. Les macros peuvent être bloquées dans les fichiers enregistrés à partir du courrier électronique ou d'Internet. Dans ce cas, faites un clic droit sur le fichier → sélectionnez « Propriétés » et cochez « Autoriser ».
Les modifications apportées à l'aide d'une Macros ne peuvent pas être annulées à l'aide de Ctrl+Z.Lorsque vous l'essayez, utilisez une copie du classeur ou des données d'entraînement.
Pour Mac, affichez l'onglet développeur en sélectionnant le menu "Excel" → "Préférences" → "Ruban et barre d'outils", et ouvrez VBE dans "Visual Basic" sur l'onglet développeur.
Entraînez-vous à utiliser le navigateurEntraînez-vous depuis l'affichage de l'onglet de Développeur jusqu'à l'Exécuter du code →Une liste de référence rapide des codes fréquemment utilisés
Si vous pouvez lire autant de choses, vous pourrez lire de nombreuses macros et codes enregistrés créés par l’IA. Des instructions détaillées pour chacun sont présentées dans les sections ci-dessous.
| Comment écrire | sens |
|---|---|
| Sub MacroName() 〜 End Sub | Le début et la fin d'une Macros (procédure) |
| ' Commentaire | ' Notes qui ne sont pas exécutées jusqu'à la fin de la ligne |
| Dim item As Long | Préparez une variable (Long est un entier) |
| Set item = Worksheets("décompte") | Mettez des feuilles, des cellules, etc. dans des variables |
| Range("A1") | Cellule A1 |
| Range("A1:C5") | Gamme de A1 à C5 |
| Cells(row, column) | Spécifier les cellules par numéro de ligne/colonne |
| Cells(Rows.Count, 1).End(xlUp).Row | La dernière ligne avec des données dans la colonne A |
| .Value | valeur de cellule |
| If condition Then 〜 End If | Exécuter uniquement lorsque les conditions sont remplies |
| For i = 1 To 10 〜 Next i | répéter un certain nombre de fois |
| For Each item In targetRange 〜 Next | Traiter les cellules à portée une par une |
| Function MacroName() … End Function | Fonction maison qui renvoie une valeur |
| WorksheetFunction.Sum(targetRange) | Utiliser les fonctions de feuille de calcul avec VBA |
| MsgBox "personnages" | afficher le message |
Forme de base de la Macros (Sub) et commentaires
La Macros commence par « Sub Macros name() » et se termine par « End Sub ». Les commandes écrites pendant ce temps seront exécutées dans l'ordre du haut. Le japonais peut également être utilisé dans les noms de macros.
Sub SayHello()
' Cette ligne est commentée (non exécutée)
MsgBox "Bonjour"
End Sub「'" (guillemet simple) à la fin de la ligne se trouve un commentaire. Écrire ce que vous faites vous aidera à le lire plus tard ou à le transmettre à quelqu'un d'autre.
Utilisez "Appeler" pour appeler d'autres macros.
Sub RunAll()
Call CheckSales ' appeler une autre Macros
Call SayHello
End SubComment écrire des variables et des constantes
Les variables sont des zones qui stockent les valeurs en cours de calcul ou les valeurs utilisées plusieurs fois. Préparez-le avec "Nom de la variable Dim Comme type" et saisissez la valeur avec "=".
Sub VariablesExample()
Dim total As Long ' entier
Dim customer As String ' chaîne
Dim price As Double ' nombres avec décimales
Dim today As Date ' Date
Dim finished As Boolean ' Vrai ou faux
total = 12
customer = "Komorebi Shop"
price = 1200.5
today = Date
finished = False
Range("A1").Value = customer & ":" & total & "importe"
End Sub| moule | Que mettre dedans |
|---|---|
| Long | Entier (numéro de ligne, nombre d'éléments, etc.) |
| Double | Nombres incluant des décimales (montants, pourcentages, etc.) |
| String | chaîne |
| Date | Date/heure |
| Boolean | True / False |
| Variant | Tout peut s'adapter (quand vous ne décidez pas d'un type) |
| Worksheet / Range | Feuille/cellule (insérer avec Set) |
Lorsque vous stockez des « choses » (objets) telles que des feuilles ou des cellules dans des variables, ajoutez "Set" au début. Si vous oubliez de le joindre, une erreur se produira, et c'est là que je trébuche souvent.
Dim ws As Worksheet
Set ws = Worksheets("décompte") ' Insérer des feuilles et des cellules avec Set
ws.Range("A1").Value = "Ventes totales"
Dim target As Range
Set target = ws.Range("A2:C10")
target.ClearContentsPour les valeurs qui ne changent pas au cours du processus, comme le taux de taxe à la consommation, si vous utilisez « Const » pour en faire une constante, vous n'avez qu'à changer d'endroit lors de la modification.
Const TAX_RATE As Double = 0.1 ' Une valeur qui ne change pas au cours du processus
Range("C2").Value = Range("B2").Value * (1 + TAX_RATE)Comment spécifier des cellules/plages
La chose la plus courante à écrire en VBA consiste à spécifier des cellules. 「Range("A1")" est l'adresse de la cellule et "Cellules (ligne, colonne)" est spécifié par un numéro.Les cellules, qui peuvent être spécifiées par un nombre, sont utiles lors du déplacement des lignes une par une lors d'une répétition.
Range("A1").Value = 100 ' A1
Range("A1:C3").Value = 0 ' Regroupé en A1-C3
Range("A:A").Font.Bold = True ' Colonne A entière
Range("2:2").Font.Bold = True ' toute la deuxième rangée
Cells(2, 3).Value = "C2" ' 2ème ligne/3ème colonne (C2)
Range(Cells(1, 1), Cells(5, 3)).Select ' A1〜C5
Worksheets("décompte").Range("A1").Value = "Total" ' Préciser la feuilleSi vous n'écrivez pas de nom de feuille, la feuille actuellement ouverte (feuille active) sera ciblée. Lorsque vous utilisez une autre feuille, cliquez surWorksheets("nom de la feuille").» devant.
trouver la dernière ligne
Pour les tableaux dont le nombre de lignes change chaque mois, vérifiez la quantité de données avant le traitement. Il s'agit d'une façon d'écrire pour trouver le numéro de ligne de la première cellule contenant des données, en commençant par la cellule du bas de la colonne A et en remontant.
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row ' Rechercher du bas de la colonne A vers le haut
Range("A2:A" & lastRow).Font.Bold = True ' Du bas du titre jusqu'à la dernière ligneTableau entier/shift/développer
Range("A1").CurrentRegion.Select ' Table entière connectée à A1
Range("A1").Offset(1, 0).Value = "en bas" ' 1 ligne en dessous (A2)
Range("A1").Offset(0, 2).Value = "à droite" ' 2ème rangée à droite (C1)
Range("A1").Resize(3, 2).Select ' 3 lignes x 2 colonnes de A1 (A1:B3)Manipulation de valeurs, de formules et de formats
Les valeurs des cellules sont lues et écrites à l'aide de ".Value". Pour la formule, saisissez la même chaîne que lors de sa saisie dans Excel dans ".Formula".
Range("D2").Formula = "=B2*C2" ' entrez la formule
Range("A2:D10").ClearContents ' Supprimez uniquement la valeur (le format reste)
Range("A1").Font.Bold = True ' Gras
Range("A1").Interior.Color = RGB(255, 242, 204) ' couleur de remplissage
Range("D2:D10").NumberFormat = "#,##0" ' Séparateur à 3 chiffres
Range("A1:D10").Copy Destination:=Worksheets("réserve").Range("A1") ' copier et collerBranchement conditionnel (If · Select Case)
Utilisez « If ~ Then » pour séparer le traitement en fonction des conditions. N'oubliez pas le "End If" à la fin.Utilisez "ElseIf" pour diviser la condition en plusieurs conditions, et "Else" lorsqu'aucune des conditions ne s'applique.
If Range("B2").Value >= 80 Then
Range("C2").Value = "Réussi"
ElseIf Range("B2").Value >= 60 Then
Range("C2").Value = "Reconfirmation"
Else
Range("C2").Value = "Échec"
End IfIf Range("A2").Value = "" Then
MsgBox "A2 est vide"
End If
' Et (les deux), Ou (soit), <> (pas égal)
If Range("B2").Value >= 60 And Range("C2").Value <> "Absence" Then
Range("D2").Value = "OK"
End IfLors d'une division en plusieurs manières basées sur une valeur, « Sélectionner la casse » est plus facile à lire.
Select Case Range("B2").Value
Case "Tokyo", "Yokohama"
Range("C2").Value = "Kanto"
Case "Ōsaka", "Kyoto"
Range("C2").Value = "Kansaï"
Case Else
Range("C2").Value = "Autre"
End SelectRépéter (For · For Each · Do While)
Effectuer le même traitement pour chaque ligne est l’endroit où VBA montre le plus de puissance."Pour ~ Suivant" se répète tout en incrémentant la variable i de 1.
Dim i As Long
For i = 2 To 10
Cells(i, 4).Value = Cells(i, 2).Value * Cells(i, 3).Value
Next iLorsque vous traitez les cellules d'une plage ou les feuilles d'un classeur une par une, utilisez « Pour chaque ».
Dim cell As Range
For Each cell In Range("A2:A10")
If cell.Value = "" Then
cell.Interior.Color = RGB(255, 199, 206) ' remplis les blancs avec du rouge
End If
Next cell
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets ' toutes les feuilles
ws.Range("A1").Font.Bold = True
Next wsSi la ligne de fin n'est pas déterminée, utilisez « Do While » pour répéter tant que les conditions sont remplies.Si vous oubliez "r = r + 1", vous ne pourrez pas vous arrêter.Quand ça ne s'arrête pas,EscOuCtrl+BreakVous pouvez l'interrompre avec .
Dim r As Long
r = 2
Do While Cells(r, 1).Value <> "" ' Jusqu'à ce que la colonne A soit vide
Cells(r, 5).Value = "Confirmé"
r = r + 1
LoopFor i = 2 To 100
If Cells(i, 1).Value = "Total" Then Exit For ' sortir à mi-chemin
Next iComment écrire et utiliser des fonctions
Quand on parle de « fonctions » dans VBA, il en existe trois types :
Créez votre propre fonction (Fonction)
Si vous le créez en utilisant "Fonction", il deviendra une fonction qui renvoie la valeur calculée. Si vous mettez une valeur dans le nom de la fonction, voilà le résultat.Si vous l'écrivez dans un module standard, vous pouvez saisir "=Montant TTC (A2)" dans une cellule et l'utiliser de la même manière qu'une fonction de feuille de calcul.
Function PriceWithTax(price As Double) As Double
PriceWithTax = price * 1.1 ' La valeur que vous mettez dans le nom de la fonction devient le résultat.
End Function
Sub UseFunction()
Range("B2").Value = PriceWithTax(Range("A2").Value)
End SubUtiliser les fonctions de feuille de calcul avec VBA
Les fonctions utilisées dans les cellules, telles que SUM et COUNTIF, peuvent être appelées avec « WorksheetFunction ».
Range("C11").Value = WorksheetFunction.Sum(Range("C2:C10"))
Range("C12").Value = WorksheetFunction.Average(Range("C2:C10"))
Range("C13").Value = WorksheetFunction.CountIf(Range("B2:B10"), "Tokyo")Fonctions VBA
VBA fournit également des fonctions qui gèrent les dates et les chaînes.
Range("A1").Value = Format(Date, "yyyy-mm-dd") ' la date d'aujourd'hui dans le texte
Range("A2").Value = Now ' date et heure actuelles
Range("A3").Value = Len("Komorebi Shop") ' Nombre de caractères → 13
Range("A4").Value = Left("2026-10-06", 4) ' 4 caractères en partant de la gauche → 2026
Range("A5").Value = Replace("Tokyo Branche", "Branche", "") ' Remplacer → Tokyo
Range("A6").Value = Trim(" Tokyo ") ' Effacer les espaces avant et aprèsMessage et entrée (MsgBox · InputBox)
Utilisé pour notifier la fin du traitement ou pour confirmer avant Exécuter. Si vous utilisez "InputBox", vous pouvez saisir le mois, le responsable, etc. à chaque fois que vous exécutez le programme.
MsgBox "C'est fini"
If MsgBox("Voulez-vous l'exécuter ?", vbYesNo) = vbNo Then Exit Sub
Dim answer As String
answer = InputBox("Combien de mois ?")
Range("A1").Value = answer & "Mensuel"Opérations feuille/livre
Worksheets("Ventes").Activate ' changer de feuille
Worksheets("Ventes").Copy After:=Worksheets(Worksheets.Count) ' copie de la feuille
ActiveSheet.Name = "Oct" ' Changer le nom de la feuille
Worksheets.Add After:=Worksheets(Worksheets.Count) ' ajouter une feuille
Dim book As Workbook
Set book = Workbooks.Open(ThisWorkbook.Path & "\Tokyo_October.xlsx")
book.Close SaveChanges:=False ' Fermer sans enregistrer
ThisWorkbook.Save ' Enregistrer ce classeurS'il y a beaucoup de traitement à effectuer, vous pouvez arrêter la mise à jour de l'écran et cela se terminera plus rapidement. Vous pouvez écrire le processus lorsqu'une erreur se produit en utilisant "On Error GoTo".
Sub RunFaster()
Application.ScreenUpdating = False ' Arrêter les mises à jour de l'écran
' ...Processus qui prend du temps...
Application.ScreenUpdating = True ' revenir au dernier
End SubSub HandleErrors()
On Error GoTo ErrHandler
Worksheets("décompte").Range("A1").Value = "OK"
Exit Sub
ErrHandler:
MsgBox "J'ai une erreur :" & Err.Description
End SubExemple combiné : calcul et coloration du tableau des ventes
En combinant le code jusqu'à présent, nous obtenons ceci : dans la feuille "Ventes", dans un tableau avec le nom du produit dans la colonne A, la quantité dans la colonne B et le prix unitaire dans la colonne C, calculez le montant dans la colonne D et coloriez en vert les lignes de 100 000 yens ou plus.
Sub CheckSales()
Dim ws As Worksheet
Dim lastRow As Long, i As Long
Set ws = Worksheets("Ventes")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
' Montant = Quantité × Prix unitaire
ws.Cells(i, 4).Value = ws.Cells(i, 2).Value * ws.Cells(i, 3).Value
' Si c'est plus de 100 000 yens, c'est vert.
If ws.Cells(i, 4).Value >= 100000 Then
ws.Cells(i, 4).Interior.Color = RGB(198, 239, 206)
Else
ws.Cells(i, 4).Interior.ColorIndex = xlNone
End If
Next i
MsgBox lastRow - 1 & "calculé la ligne"
End SubContient des variables (Dim), une spécification de feuille (Set), une ligne finale, une répétition (For) et un branchement conditionnel (If). Si vous pouvez lire « ce qui est fait dans quelle cellule » ligne par ligne, vous pouvez modifier le nombre de lignes et les conditions en fonction de votre tableau.
Même lorsque l'IA crée du code, si vous pouvez lire cette forme, vous pouvez vérifier par vous-même quelle colonne est calculée et si les conditions sont remplies.
En savoir plus
Nous vous recommandons de consulter la liste de codes pour voir comment l'écrire, puis de l'essayer à l'aide du fichier de matériel pédagogique. Ce livre d'introduction étape par étape vous permet de tout pratiquer, de l'enregistrement de macros aux variables, en passant par la répétition et le branchement conditionnel avec des exemples connectés.
Pour ceux qui se sentent obligés de le faire seuls ou pour ceux qui souhaitent discuter des domaines de leur travail qui peuvent être automatisés, suivre un cours dispensé par un instructeur est également une option.
La manière de choisir une méthode d'étude est également présentée dans Comment étudier les macros et VBA.