| Macro sous Excel |
| Code | Commentaires | ||
1) | Sub nom de la macro() | Une macro Excel commence toujours par Sub | |
2) | End Sub | Une macro Excel se termine toujours par End Sub met fin à la macro | |
3) | rem | permet de mettre un commentaire | |
4) | Msgbox "texte" V1=1 Msgbox V1 | permet d'afficher une boite de dialogue avec un message ou une variable Exemple : Msgbox "ma 1ere macro Excel 7" | |
5) | Selection() | Contenu de la cellule en cours (ou cellule active) Exemple la cellule en cours est B1, B1 contient la valeur 7 alors Selection() = 7 | |
6) | ActiveCell.Offset(ligne,colonne). Range("A1").Select | Permet de sélectionner la cellule se trouvant (n lignes) au dessus ou au dessous de la cellule active et (n colonnes) à droite ou à gauche de la cellule active Exemple la cellule active est B3 ActiveCell.Offset(+2,-1).Range("A1").Select sélectionnera la cellule 2 lignes en dessous et une colonne à gauche de la cellule active c'est à dire A5 Exemple la cellule active est D10 ActiveCell.Offset(-3,+2).Range("A1").Select sélectionnera la cellule 3 lignes au dessus et 2 colonnes à droite de la cellule active c'est à dire F7 | |
7) | Utilisation de variable v1="Salut" Msgbox v1 v2=20 Msgbox v2*3 la cellule A1 est la cellule active et contient la valeur 5 v3=selection()*6 Msgbox v3 | la variable v1 contient l'expression "Salut" Msgbox v1 affichera dans une boite de dialogue "Salut" la variable v2 contient la valeur 20 Msgbox v2*3 affichera dans une boite de dialogue 60 Msgbox v3 affichera 30 dans une boite de dialogue | |
8) | Condition If condition then Action à réaliser si vrai Else Action à réaliser si faux Endif | Exemple If Selection()=10 then Msgbox "il y a 10 dans la cellule active" Else Msgbox "tout sauf 10 dans cette cellule" Endif | |
9) | Exit Sub | permet de Quitter la Macro avant la fin c'est à dire avant le End Sub | |
10) | Application.Goto Reference:="RxCy" x=n° de la ligne à atteindre y=n° de la colonne à atteindre | Permet d'atteindre une cellule spécifiée et de la sélectionner Exemple Application.Goto Reference:="R3C1" sélectionnera la cellule A3 (colonne 1, ligne 3) | |
11) | Instruction de boucle do While Condition Actions à réaliser Loop | Permet de réaliser une action tant que la condition est vraie lorsque la condition devient fausse la macro passe à l'instruction qui suit "Loop" Exemple I=1 do While I<=3 Msgbox I // Afichera 1 puis 2 puis 3 et s'arrêtera I=I+1 // I Augmente de 1 à chaque tour Loop | |
12) | Goto Etiquette .. Etiquette: | Permet d'aller à un endroit particulier de la Macro Exemple If selection()="Salut" then Goto Suite Exit Sub Suite: | |
13) | Selection.ClearContents Selection.Clear | Supprime le contenu de la cellule sélectionnée Supprime le contenu et le format de la cellule sélectionnée | |
14) | Selection.Font.Bold= true Selection.Font.Bold= false | Permet de mettre la cellule active en gras (true) enlever l'option gras (false) | |
15) | Selection.Font.Italic= true Selection.Font.Italic = false | Permet de mettre la cellule active en Italique (true) enlever l'option Italique (false) | |
16) | rem V1 est une variable rem servant à stocker le résultat de la demande V1=inputBox("question","titre de la fenêtre",défaut) défaut=valeur affichée par défaut dans la fenêtre | Stockage de la réponse de l'utilisateur dans une variable. InputBox ("texte") permet de poser une question à l'utilisateur. La réponse doit être stockée dans une variable. Exemple: rem Age est une variable permettant de stocker la réponse de l'utilisateur. Age=InputBox("Quel âge as-tu ?","Information",21) MsgBox "Tu es né(e) en "+2003-Age | |
17) | Selection.Copy Application.CutCopyMode = False | Copie dans le presse papier le contenu de la sélection Ne plus permettre d'effectuer le collage du presse papier | |
18) | Selection.Cut | Copie dans le presse papier le contenu de la sélection et supprime | |
19) | ActiveSheet.Paste | Colle dans la cellule active le contenu du presse papier | |
20) | ActiveCell.FormulaR1C1="=Formule" ActiveCell.FormulaR1C1="=A1*2" ActiveCell.FormulaR1C1="=average(a1:a10)" ActiveCell.FormulaR1C1="=sum(b1:b5)+A1" ActiveCell.FormulaR1C1="=max(a1:a10)" voir la liste des fonctions | Permet d'entrer une formule dans la cellule active Exemple: La cellule active est D4, La case C4 contient 10 ActiveCell.FormulaR1C1="=RC[-1]*3" RC[-1] = Même ligne, 1 Colonne à gauche de la cellule active soit C4 Donc ActiveCell.FormulaR1C1 correspond à C4*3 soit 30 ActiveCell.FormulaR1C1="=Sum(R[-10]C:R[-1]C)" permettra de faire la somme (Sum) des 10 cellules se trouvant au dessus de la cellule active. | |
21) | ActiveCell.Range("A1:A10;C1:C10").select Range("A1:A10").select sélection des cellules de A1 à A10 | Permet de sélectionner un groupe de cellules. par rapport à la cellule active | |
| par rapport à la feuille | |||
22) | Range("e4", [e4].End(Direction)).Select Direction=xltoLeft, xlToRight, xlDown, xlUp | Selectionner un goupe de cellules, d'une position jusqu'à la fin Exemple: Range("b10",[b10].End(xlDown)).select Selectionnera de B10 jusqu'à B65536 (la fin) | |
23) | Application.Run Macro:="NomDeLaMacro" | Permet dans une macro d'exécuter une autre macro | |
| | N=ActiveSheet.Comments.Count rem N est le nombre de commentaire dans la feuille en cours if N>0 then Selection.SpecialCells(xlCellTypeComments).Select For Each commentaire In Selection rem commentaire.Comment.Text ===> contenu du commentaire If InStr(1, commentaire.Comment.Text, "abc") > 0 Then 'si abc trouvé dans commentaire rem action à réaliser... End If Next End if | Affichage des commentaires | |
| SELECTION | |||
| | Range("A2:A" & Range("A2").End(xlDown).Row).Select | Sélectonner de la cellule A2 jusqu'à la dernière cellule non vide de la colonne A Range("A2").End(xlDown).Row donne le numéro de la dernière ligne. | |
| SELECTION | |||
| | Range(Cells(1, 1), Cells(1, Range("A1").End(xlToRight).Column)).Select | Sélectonner de la cellule A1 jusqu'à la dernière cellule non vide de la ligne 1 Cells(1, 1) correspond à la cellule A1 cells(No ligne,No colonne) Range("A1").End(xlToRight).Column donne le numéro de la dernière colonne. | |
| FORMULAIRE | |||
| | Me.civilite.List()=Array("Monsieur","Madame") | Remplir une liste déroulante (nommée civilite) d'un formulaire avec Monsieur et Madame | |
| FORMULAIRE | |||
| | Dim Ws As Worksheet Set Ws = Sheets("clients") For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row Me.listeclient.AddItem Ws.Range("A" & J) Next J | Remplir une liste déroulante d'un formulaire (ex:listeclient) avec le contenu de la colonne A de la feuille : clients | |
| FORMULAIRE | |||
| | Dim Ws As Worksheet Set Ws = Sheets("clients") Me.Controls("nom") = Ws.Cells(3, 1) | Remplir un champ de type texte (nommé nom) d'un formulaire avec le contenu de la cellule A3 de la feuille : clients Ws.Cells(3, 1) correspond à la ligne 3, colonne 1 (A3) de Ws (donc de la feuille «clients») | |
| | Sheets.Count | Nombre de feuilles | |
| | IsNumeric(contenu cellule) Application.isText(contenu cellule) | savoir si la cellule est numérique savoir si la cellule est de type texte | |
| | Rows(n).select Columns(n).select Selection.Insert(ou delete) | Sélection de la ligne n Sélection de la colonne n insertion/suppression ligne ou colonne | |
| | ActiveSheet.Name | Nom de la feuille active | |
| | Sheets(N° ou "nom feuille").Activate | Activer une feuille | |
| | Sheets(n° ou nom).copy before(after):=Sheets(n° ou nom) | Copier une feuille | |
| | Sheets.add before(after):=Sheets(n° ou nom) | Ajouter une feuille | |
| | Sheets(n° ou nom).move before(after):=Sheets(n° ou nom) | Déplacer une feuille | |
| | Application.DisplayAlerts=false Sheets(n° ou nom).delete | Supprimer une feuille sans confirmation | |
| | WorkBooks(n° ou nom).Sheets(n° ou nom).Range(plage1,plage2,...).copy Destination:=WorkBooks(n° ou nom).Sheets(n° ou nom).Range(cellule de destination) | Copier des cellules d'un classeur vers un autre classeur | |
| | Cells.Range("plage de cellules").Find(what:="texte à chercher").Activate | Permet de rechercher dans une plage de cellules un texte en particulier | |
| | Selection.Address(RowAbsolute:=False, ColumnAbsolute:=False) | Coordonnées de la séléction , si les cellules B3 à C10 sont sélectionnées le résultat sera : B3:C10 | |
| | ActiveCell.Column | Colonne en cours | |
| | ActiveCell.Row | Ligne en cours | |
| | ActiveCell.ColumnWidth | Largeur de la colonne active | |
| | ActiveCell.RowHeight | Hauteur de la ligne active | |
| | ActiveCell.Address | Coordonnées absolues de la cellule active sous la forme par exemple $a$1 | |
| | ActiveCell.HasFormula Dans un nouveau module, faire la fonction suivante : Function AvecFormule(cel as Range) as Boolean If cel.HasFormula then AvecFormule=True Else AvecFormule=False End Function | Renvoie True si la cellule contient une formule False dans le cas contraire Création dans une feuille Excel d'une formule personnalisée =AvecFormule(A2) - - - - -> renvoie Vrai si la cellule A2 contient une formule. | |
| | ActiveCell.Value | Permet de connaître la valeur de la cellule active | |
| | ActiveCell.Value=valeur | Permet de remplir la cellule active exemple :ActiveCell.Value=10 ou ActiveCell.Value="aze" | |
| | ActiveCell.Interior.Color = RGB(0,0,0) | Permet de changer la couleur de fond de la cellule exemple :RGB(0,0,0)=noir, RGB(250,128,114)=saumon | |
| | ActiveCell.Characters.Font.Color=RGB(0,0,0) | Permet de changer la couleur du texte de la cellule exemple :RGB(255,215,0)=Or | |
| | ActiveWorkBook.Name | Nom du Classeur actif | |
| | ActiveWorkbook.Path | Chemin du Classeur Actif | |
| | WorkBooks.open filename:= "fichier", UpdateLinks:=0 ou 1 | Ouvrir un classeur, Fichier=nom du fichier xls à ouvrir , activer les liens=1 ou 0 1= oui, 0= liens non activés | |
| | ActiveWorkbook.SaveCopyAs "chemin + nom de la copie" | Permet de sauvegarder une copie du classeur actif | |
| | A placer dans la partie déclaration du module: Private Declare Function PlaySound& Lib "winmm.dll" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) Const SND_ASYNC = &H1 Const MonFichier = "c:/WINDOWS/MEDIA/ringin.wav" A placer dans votre macro If PlaySound(MonFichier, 0&, SND_ASYNC) = False Then MsgBox "fichier son non trouvé" End If | Permet jouer un son (format .wav) | |
| | A placer dans la partie déclaration du module: Private Declare Function Beep Lib "Kernel32" (ByVal Fq As Long, ByVal Tm As Long) As Long A placer dans votre macro Beep 500,400 N.B. 500 correspond à la fréquence de la note jouée, 400 correspond à la durée en milliseconde | Permet jouer un son d'une fréquence donnée et d'une durée donnée | |
| | actif = ActiveWorkbook.Name For Each classeur In Application.Workbooks If classeur.Name <> actif Then classeur.Close End If Next | Fermer tous les classeurs sauf le classeur actif pour ne pas enregistrer en fermant le classeur : classeur.Close SaveChanges:=False | |
| | Set Lc=createObject("scripting.FileSystemObject") rep=ActiveWorkbook.Path set dossier=Lc.getFolder(rep) For each fichier in dossier.files ..........Msgbox fichier.name Next | Boucle de parcours de tous les fichiers d'un repertoire | |
| | Set obj=createObject("scripting.FileSystemObject") rep=ActiveWorkbook.Path newrep = rep & "/gab" If obj.FolderExists(newrep) Then MsgBox "existe" Else obj.CreateFolder (newrep) MsgBox "répertoire crée !" End If | Permet de créer un repertoire (s'il n'existe pas) | |
| | For i = 1 To Sheets.Count For j = i To Sheets.Count If Sheets(j).Name < Sheets(i).Name Then Sheets(j).Move before:=Sheets(i) End If Next Next | Boucle permettant de trier les onglets de façon croissante | |
| | Application.ActiveWorkbook.Sheets("nom_onglet_dialogue").Show | Affichage d'une boite de dialogue du classeur actif | |
| | Application.ActiveWorkbook.Sheets("nom_onglet_dialogue").Hide | Masquer la boite de dialogue | |
| | Dim plg As Range Set plg = Application.InputBox("S'lection d'une plage", , , , , , , 8) MaSelection = plg.Address Range(MaSelection).Select | Permet à un utilisateur de selectionner une plage | |
| | For Each cell In Selection() MsgBox cell.Value Next | Permet d'analyser le contenu de chaque cellule dans la sélection | |
| | coul = Application.Dialogs(xlDialogEditColor).Show(A, rouge, vert, bleu) A=1 (mode standard), A=2 (mode personnalisé) pour avoir du rouge: rouge=255 vert=0 bleu=0 coul=vrai si bouton OK | Permet d'ouvrir la boite de dialogue couleur | |
