Workbooks | Classeur ouvert |
Workbooks("toto") désigne le classeur ouvert toto
On peut dire aussi Workbooks("toto.xls") Workbooks(2) désigne le 2ème classeur ouvert Workbooks.Open "toto" ouvre le classeur toto dans le répertoire actif Workbooks.Open "c:\truc\toto.xls" Workbooks("machin").close ferme le classeur machin Workbooks("machin").close(False) ferme sans enregistrer ActiveWorkbook désigne le classeur actif ThisWorkbook désigne le classeur contenant la macro ActiveWorkbook.SaveAs "c:\chose.xls" enregistre le classeur actif sous le nom de chose.xls ActiveWorkbook.SaveCopyAs "c:\chose.xls" enregistre une copie du classeur actif Workbooks.Add crée un nouveau classeur et renvoie l'objet correspondant (Set toto = Workbooks.Add) Workbooks.Open(filename := "toc").RunAutomacros which:=xlAutoopen lance le fichier toc avec ses macros automatiques |
Sheets, Charts | Feuille d’un classeur (feuille de calcul ou graphique) |
Sheets("machin") désigne la feuille machin du classeur actif
Sheets(2) désigne la feuille n°2 Workbooks("toto.xls").Sheets(2) désigne la 2ème feuille du classeur toto Sheets("machin").Select sélectionne la feuille machin ActiveWorkbook.Sheets("machin") désigne la feuille machin du cl actif ActiveSheet désigne la feuille active Charts désigne les graphiques Worksheets désigne les feuilles de calcul |
Range | Plage de cellules |
Range("A1:B7") ou Sheets("toto").Range("A1:B7")
ou bien simplement [A1:B7] Range("A1:B7" ).Select sélectionne la plage A1:B7 Application.Goto Range("Z100"), True sélectionne la plage Z100 et la place dans le coin supérieur gauche de l'écran Range("truc") si la plage a été nommée truc dans la feuille de calcul Range("A1:B7").Offset(1,2) renvoie la plage décalée de une ligne et deux colonnes Range("A1:C3").Resize(1,2) renvoie la plage de une ligne et deux colonnes commençant en A1 (A1:B1) Range("truc").Address renvoie l’adresse de la plage truc ($A$1:$B$7) Range("truc").Address(True,False,xlR1C1,,[A2]) renvoie au format R1C1 l'adresse de truc avec n° de ligne absolu et n° de colonne relatif à A2. [B5].Address(, , , True) renvoie l'adresse complète de B5 sous la forme [zaza.xls]Feuil1!$B$5 On peut dire Range ("[Classeur1]Feuil1!$A$1") pour Workbooks ("Classeur1").Sheets("Feuil1").Cells("$A$1"). |
Cells | Cellules |
Range("A1:B7").Cells(2) désigne la 2ème cellule de la plage A2:B7, soit la cellule B2
Sheets("toto").Cells(2) désigne la cellule B1 de la feuille toto Cells(1,2).Select sélectionne la cellule B1 (ligne1, colonne2) Selection.Cells(2).Activate active la 2ème cellule de la zone sélectionnée ActiveCell désigne la cellule active ActiveCell.Row désigne le n° de ligne de la cellule active ActiveCell.Column désigne le n° de colonne de la cellule active |
Columns | Colonnes |
Sheets(" toto ").Columns(2) désigne la colonne B:B de la feuille toto
Ne pas confondre l'objet Columns(2) et la variable Column qui désigne le numéro de colonne : Range("B1").Column renvoie 2 |
Rows | Lignes | Rows(4) désigne la quatrième ligne |
Name, Path | Nom, chemin d’accès |
ThisWorkbook.Name nom du fichier contenant la macro
ActiveWorkbook.FullName nom avec chemin d’accès ThisWorkbook.Path chemin d’accès ActiveSheet.Name nom de la feuille active Sheets(2).Name nom de la deuxième feuille du classeur actif |
Select activate save print open Close | Sélectionner, activer, sauvegarder, imprimer, ouvrir, fermer | |
Copy, Paste | Copier, coller |
Dir | Recherche de fichier |
Dir("a:\machin\*.xls") renvoie le nom du premier fichier xls du répertoire machin. Dir renvoie les suivants
Dir("a:\truc",vbdirectory) vérifie l’existence du répertoire truc |
ChDir | Change de répertoire | ChDir("c:\machin") active le répertoire machin |
ChDrive | Change de disque | ChDrive("a:\") sélectionne le lecteur a |
CurDir | Dossier en cours | Chemin complet du répertoire actif |
FileCopy | Copie un fichier | Filecopy "c:\truc.xls", "a:\machin.xls" enregistre le fichier truc sous le nom machin sous a |
Kill | Supprimer un fichier | Kill("c:\truc.xls") supprime le fichier truc (utiliser avec prudence !) |
RmDir | Supprimer un répertoire | Ne marche que si le répertoire est vide |
MkDir | Crée un fichier | Mkdir "c:\nouvfich" crée un nouveau fichier nommé nouvfich |
Name | Renomme un fichier | Name f1 as f2 renomme f1 en f2, éventuellement en le changeant d’emplacement (en spécifiant le chemin d’accès) |
FileSearch | Recherche un fichier | Cf exemple ci-dessous |
FileLen | Taille du fichier | FileLen("fichiermachin") renvoie sa taille |
Application.Defaultfilepath | Chemin par défaut | Répertoire sélectionné par défaut à l’ouverture de l’application |
Application.StartupPath | Chemin de xlOuvrir | Répertoire contenant les fichiers démarrés à l’ouverture d’Excel |
Environ("tmp") | fichiers temporaires | Renvoie l’adresse du répertoire contenant les fichiers temporaires |
Application.LibraryPath | Chemin du dossier Macrolib | Macrolib est le répertoire contenant les macros complémentaires (collection Addins) |
IsAddin | Macro complémentaire | ActiveWorkbook.IsAddin=True transforme le fichier actif en macro complémentaire |
Addins.Add | Macro complémentaire |
Addins.Add("c:\truc.xla").Installed=True place la macro complémentaire dans addins et l’installe
Addins("truc").Installed=False désactive la macro compl "truc" |
Right | Partie droite du texte | Right(text,5) renvoie les 5 derniers caractères du texte nommé text |
Left | Partie droite du texte | Left("bonjour",3) renvoie " bon " |
Len | Longueur du texte | Len("bonjour") vaut 7 |
Mid | Partie centrale | Mid(" bonjour ",2,3) renvoie " onj " (3 caractères à partir du 2ème) |
Instr | Recherche une chaîne |
Instr("bonjour", "jo") renvoie 4 (jo à partir de la 4ème lettre)
Instr("bonjour", "ja") renvoie 0 (pas trouvé) |
& | Accole 2 textes |
"bon" & "jour" renvoie "bonjour".
Attention, & doit être précédé et suivi d'un espace |
Like | Comparaison textes |
S1 like S2 est vrai si les deux textes sont identiques (on peut utiliser ? pour 1 caractère, * pour plusieurs caractères et # pour un chiffre dans S2)
"bonjour" like "?onj*" est vrai |
Substitute | Remplace des caractères |
Fonction de feuille Excel (cf. ci-dessous fonctions)
Application.WorksheetFunction.Substitute("bonjour", "bon", "abat") renvoie "abatjour" |
Format | Modifie le format | Format ("Machin", ">") renvoie MACHIN |
CHR(13) | Passage à la ligne | |
CHR(10) | Saut de ligne | |
CHR(34) | " | guillemet |
CHR(64+col) | Renvoie "A" pour col=1, "B" pour col=2… |
+, -, *, /, ^,\, Mod | opérateurs |
^ pour les puissances
\ quotient exact, Mod reste de la division |
=, <, >, <>, >=, is | (in)égalités | Is pour les objets |
IsNumeric | Test nombre | IsNumeric("bonjour") est faux |
Not, Or, And | Opérateurs logiques | Not IsNumeric("bonjour") est vrai |
Format | Formats de nombres | Format(Date, "dd mm yy") renvoie la date sous la forme 02 07 99 |
CStr | Transforme un nombre en texte | CStr(123) renvoie "123" |
CInt | Transforme un texte en nombre entier | CInt("2") renvoie la valeur 2 |
Application.WorksheetFunction | Utilisation des fonctions Excel | Permet d’utiliser dans des macros toutes les fonctions des feuilles Excel (en anglais) : Application.WorksheetFunction.Log(5) renvoie la valeur de log(5) |
Day, Month, Hour, Now, Date, Time, WeekDay, DateValue, DateSerial, DateAdd | Jour, mois |
Day("12/5/99") renvoie 12
WeekDay("5/7/99") renvoie 2 (lundi, 2ème jour de la semaine) DateValue("3 01 99") ou DateSerial(2000,10,02) renvoient le numéro d'ordre correspondant |
Evaluate | Lit une formule | Evaluate("SUM(A1:A10)/4) ou [SUM(A1:A10)/4] calcule la formule écrite en texte (id. =INDIRECT() dans une feuille de calcul) |
Array | Définit un tableau | cliquez ici |
InputBox | Boite de saisie |
InputBox("entrez le nom") propose la saisie d’un nom et renvoi ce nom
(renvoie un texte)
Avec Type:=8, Inputbox renvoie une plage de cellules (à sélectionner à la souris) Set cell = Application.InputBox("truc", "machin", Type:=8) (voir aussi RefEdit dans les contrôles) |
MsgBox | Message | MsgBox("Bonjour") affiche une boite de dialogue disant bonjour |
Msgbox | question |
If MsgBox("question ?", vbYesNo)=vbNo then…
Permet de poser une question et d’orienter le déroulement de la macro en fonction de la réponse |
Dialogs |
Boites de dialogue
prédéfinies |
Application.Dialogs(xlDialogNew).Show affiche la boite " nouveau classeur "
Application.Dialogs(xlDialogOpen) pour Fichier / Ouvrir Application.Dialogs(xlDialogOpen).Show("c:\zaza.xls") pour proposer l'ouverture de zaza.xls cliquez ici pour plus de détails. Application.Dialogs(xlDialogPrint) pour Fichier / Imprimer Application.Dialogs(xlDialogFonts) pour les polices de caractères Application.Dialogs(xlDialogZoom) pour régler le zoom... Application.Dialogs(xlDialogSaveAs) pour enregistrer Application.GetOpenFileName affiche la boîte de dialogue sans ouvrir Application.GetSaveAs affiche la boîte de dialogue sans enregistrer |
Userform |
Boite de dialogue
(personnalisée) |
Userform1.Show pour afficher la boîte de dialogue
Userform1.Hide pour masquer la boîte de dialogue Unload Userform1 pour "vider" la boîte de dialogue |
CommandButton | Bouton |
CommandButton1.Caption = " truc " inscrit truc sur le bouton
CommandButton1.Top =5 positionne le bouton à 5 points du haut |
Scrollbar | Barre de défilement | ScrollBar1.Min=1 définit la valeur mini |
Label | Texte seul | Label.Caption renvoie le texte de la zone de texte |
Boite de saisie | TextBox.Text renvoie le texte inscrit dans la boîte | |
SpinButton | Bouton de défilement | |
CheckBox | Case à cocher | |
OptionButton | Bouton d’option | |
ListBox | Liste | exemple |
ComboBox | Liste modifiable | |
RefEdit | Saisie de références |
Références de cellules (saisie possible à la souris)
UserForm1.RefEdit1.Text renvoie l'adresse de la plage sélectionnée avec le RefEdit1 de Userform1 (voir aussi InputBox) |
Top, Left, Heigh, Width | Dimensions, position | |
Max, Min, SmallChange, LargeChange | Bornes pour ScrollBar ou SpinButton | |
Text, Value | Texte, valeur | |
ControlSource | Plage de cellules associée à un contrôle | |
Click, Change, Enter, KeyDown, Scroll… | Evénements utilisables pour les contrôles | |
CommandBar | Barre d’outils, menu | voir exemple simple et plus élaboré |
CommandBarButton | Bouton, élément de menu | |
CommandBarPopUp | Sous menu |
If…Then…Else…
End If |
Si, sinon, alors |
|
For… next | A chaque… suivant | For truc = 3 to 10 …. Next |
For Each… next | Pour chaque objet | For Each truc in Range("A1:A50")… Next |
Do… Loop Until… | Boucle jusqu'à… | |
Do… Loop While | Boucle tant que | |
While… Wend | Tant que | |
GoTo… | Aller à |
GoTo étiq
étiq: |
On error GoTo… | Gestion d'erreur | On Error GoTo étiq |
On Error Resume Next | Gestion d'erreur | Saute la ligne erronée |
On error GoTo 0 | Gestion d'erreur | Annule tous les "On Error" précédents |
Exit For | Sortie de boucle | |
Exit Sub | Arrête la macro | Interruption de macro |
Call | Lancer une macro |
Call ThisWorkbook.macrochose lance macrochose
On peut dire simplement : macrochose (tout seul) |
OnKey | Evénement touche |
Application.Onkey "{ESC}", "macrochose" déclenche la macro macrochose dès qu’on tape sur ESC
Touches combinées avec MAJ +, CTRL ^, ALT %: Application.Onkey "%C" pour ALT + C |
OnTime | Evénement heure | Application.OnTime Now + TimeValue("00:00:15"), "macrochose" lance macrochose dans 15 secondes |
On Error | Gestion d'erreur |
On error GoTo truc
… truc: |
Worksheet_Activate | Activation de feuille |
Private Sub Worksheet_Activate()
macro démarrant à l'activation de la feuille |
Worksheet_BeforeDoubleClick | Double click |
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Target est l'endroit où on double-clique |
Worksheet_BeforeRightClick | Click droit | |
Worksheet_Calculate | Au moment du calcul | |
Worksheet_Change | changement | Dès qu'une cellule est modifiée |
Worksheet_Deactivate | ||
Worksheet_SelectionChange | Dès qu'on change de zone sélectionnée | |
Workbook_Activate | A l'activation du classeur | |
Workbook_BeforeClose | fermeture | Macro déclenchée avant fermeture du classeur |
Workbook_BeforeSave | enregistrement | Avant enregistrement |
Workbook_Open | ouverture | Macro activée dès l'ouverture du classeur |
Workbook_SheetChange | ||
Workbook_WindowActivate | ||
CommandButton1_Click | boutons | |
CommandButton1_DblClick | ||
CommandButton1_GotFocus | ||
CommandButton1_KeyDown | ||
CommandButton1_MouseMove | ||
CommandButton1_MouseDown | ||
…autres contrôles | Rechercher dans la feuille de code correspondant à la feuille Excel contenant les objets sur lesquels on souhaite agir. | |
Application.EnableEvents=False | empêche le déclenchement d'événements | Application.EnableEvents=true pour rétablir le déclenchement d'événements |
Shell | Démarre un programme |
Shell("c:\truc.exe") lance le programme truc et renvoie son n° d’ordre de tâche
Shell("c:\truc.exe",vbNormalFocus) lance truc dans une fenêtre normale truc=Shell("C:\zaza\msaccess.exe base.mbd",1) ouvre la base Access |
AppActivate | Active un programme |
AppActivate("truc")
AppActivate(2) active la tache n°2 Utilisez Appactivate quand vous lancez une application avec Shell : idww = Shell(C:\Program Files\Microsoft Office\Office10\Winword.EXE C:\monDoc.doc, 1) AppActivate idww |
SendKeys | Commande du clavier |
SendKeys "Bonjour" équivaut à frapper Bonjour sur le clavier
SendKeys "%FOtruc.xls{Enter}", True revient à frapper ALT+F, O, truc.xls, Enter, et donc à ouvrir truc.xls (% pour ALT, + pour MAJ, ^ pour CTRL) Ajouter "DoEvents" après SendKeys pour que les commandes envoyées par SendKeys soient executées avant la poursuite du programme VBA |
CreateObject |
Création d’objet
(OLE Automation) |
Set truc = CreateObject("Word.Application") ouvre une instance de Word, nommée truc
Set truc = New Application ouvre une nouvelle instance de l’application en cours, nommée truc |
GetObject (chemin, classe) | Affectation d’objets |
Set truc = GetObject(,"Word.Application") nomme truc l’application Word en cours
Set machin = GetObject("c:\truc.doc") nomme machin le fichier truc.doc Set truc = Application nomme truc l’application en cours |
Application.UserName | Nom d’utilisateur | |
Application.Enablecancelkey | Gestion des interruptions de macro |
Quand la macro est interrompue par ESC ou CTRL+ATTN
Application.Enablecancelkey=xlDisabled ignore l’ordre d’arrêt (attention aux boucles sans fin !) Application.Enablecancelkey=xlErrorHandler renvoie une erreur 18 (qui peut être gérée par If Err=18…) Application.Enablecancelkey=xlInterrupt rétablit la possibilité d’interrompre manuellement la macro |
ScreenUpdating | Rafraîchissement d’écran | Application.ScreenUpdating = False fige l’écran sauf contrordre jusqu’à la fin de la macro |
Count | Nombre d’éléments |
Workbooks.Count renvoie le nombre de classeurs ouverts
Workbooks("truc").Sheets.Count renvoie le nombre de feuilles du classeur truc Range("A2 :D7").Cells.Count compte le nombre de cellule de la plage A2 :D7 Selection.Cells.Count le nombre de cellules de la plage sélectionnée |
With…
. . . End With |
Utilisé pour éviter de répéter un objet
With Cells.Font .Name = "Arial" .FontStyle = "Gras" .Size = 12 .ColorIndex = 5 End With |
|
Beep | Bip ! | |
VBComponents.Add | ajouter un module | ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule) |
InsertLines | ajouter du code dans un module |
Set Module = ThisWorkbook.VBProject.VBComponents("Module1")
Module.CodeModule.InsertLines 2, "'toto" inscrit 'toto en ligne 2 de module1 |
FollowHyperlink | ouvre un fichier html |
ActiveWorkbook.FollowHyperlink "http://jacxl.free.fr/cours_xl/accueil.html", , True
pour activer un lien existant : Range("B1:C10").Hyperlinks(2).Follow(True) |
Application.EnableEvents=False | empêche le déclenchement d'événements | Application.EnableEvents=true pour rétablir le déclenchement d'événements |
Application.cursor | modifie la forme du curseur |
Application.Cursor=xlWait (affiche le sablier)
Application.Cursor=xlNormal ou xlDefault (rétablit le pointeur) |
remarque sur les fonctions | Find, CurrentRow, CurrentArray, Precedents et DirectPrecedents ne marchent pas dans les fonctions VBA appelées à partir de formules |
Documents |
Documents.Open("c:\truc.doc")
ActiveDocument.PrintOut |
|
Pages | Pages | |
Paragraphs | Paragraphes | |
Sentences | Phrases | |
Characters | lettres | |
Quit | Quitter | Application.Quit(wdDoNotSaveChanges) |
Private Sub Document_Close() | Macro déclenchée avant la fermeture | |
Private Sub Document_Open() | Macro déclenchée à l'ouverture du document |
Open | ouvre le fichier |
Open "c:\ww\tr.txt" For Input Access Read As #1
ouvre le fichier en lecture Open "c:\ww\nouv.txt" For Output As #1 crée un nouveau fichier ouvert en écriture Open "c:\ww\truc.txt" For Append As #1 ouvre le fichier "truc" pour lui faire des ajouts |
Close | ferme | Close #1 |
écrit | Print #1, "toto" écrit "toto" dans le fichier texte 1 |
|
Do While Not EOF(1)
Line Input #1, truc Loop |
lit ligne entière | boucle jusqu'à la fin du fichier |