Nouveau
Lister tous les fichiers - Avec ce classeur, listez tous les fichiers d'un dossier, ainsi que tous ses sous-dossiers et fichiers qu'ils contiennent
Gestion des fichiers, dossiers et lecteurs - Copier, déplacer, renommer, supprimer, mettre à la corbeille des fichiers et des dossiers, gérer les dossiers spéciaux, boîtes de dialogue intégrées de choix de fichier, analyse complète de l'arborescence et recherche de fichiers, attributs, tailles, lecteurs disponibles, création, modification et recherche dans des fichiers textes, et un grand exercice à la fin.
Un didacticiel très complet qui vous permet de synthétiser plusieurs classeurs dans un classeur de consolidsation ! Idéal pour s'immerger dans VBA Excel quand on est débutant !
Base
Les premières leçons du cours VBA pour Excel ici
Vous
êtes un utilisateur averti de Word et d'Excel ? Vous avez souvent entendu
parler de VBA, ce fameux langage de programmation qui permet de décupler
la puissance de vos logiciels favoris ? Vous êtes tombé juste
!Grâce
à VBA (Visual Basic pour Applications), vous allez pouvoir automatiser
plein de choses, et devenir encore plus productif.
Il faut savoir que Visual Basic est décliné en de nombreuses
variantes : Il existe Visual Basic "Pur et Dur", qui est un langage
de programmation commercialisé tel quel, et qui est vraiment destiné
aux développeurs professionnels. Ensuite, Microsoft a intégré
ce Visual Basic au sein de ses applications phaes : a savoir Office. Aussi,
il existe Visual Basic pour Word, pour Excel, Pour Access, pour PowerPoint
et pour Outlook. Pourquoi y a-t-il autant de variantes ? Simplement parce
que chaque programme a ses spécificités : En effet, Word n'a
nul besoin d'une commande de création de nouvel onglet spécifique
à Excel, Excel, n'a nul besoin de comamndes Visual Basic permettant
de créer un nouveau Courrier (spécifique à Outlook),
et ainsi de suite. Par contre, certaines instructions, comme le MsgBox par
exemple, qui permet d'afficher un court message à l'écran, est,
lui, présent dans tous les Visual Basic que vous rencontrerez.
Au début de votre apprentissage, nous allons commencer par aborder
les principes de programmation identiques dans tous les Visual Basic, aussi,
peu importe le programme que vous allez utiliser (Word, Excel, Access, Powerpoint
ou Outlook). Cependant, pour des raisons de pédagogie et de pratique,
certains chapitres sont plutôt effectués avec Word, surtout en
début d'apprentissage, et, petit à petit, nous allons principalement
nous tourner vers Excel, pour étudier son VBA plus en profondeur. Pourquoi
cette préférence ? Simplement parce qu'il s'avère qu'Excel
est habituellement le programme pour lequel on désire le plus vite
et le plus possible se tourner vers sa programmation.
Que
sont les objets ? Exemple du téléphone portable - Qu'entend-on
exactement par "Programmation Orientée Objet" ? ou POO. Tout
vous est expliqué
Qu'est-ce
qu'un programme et à quoi sert-il ? - Un peu de théorie avant de
commencer
Votre première macro Excel - Avant
de vous plonger dans les arcanes de la programmation avancée (VBA EXCEL)
Attacher une macro à une icône d'une barre d'outils - Afin de pouvoir appeler votre macro d'un simple clic plutôt que d'aller
dans Outils/Macros/Macros
Les variables et les constantes
Les tableaux
Utilisation de la fonction InputBox et du &
(Et commercial)
Calcul mental - Ou comment partir
d'un petit programme pour en faire un gros
Les boucles
Les
boucles DO, LOOP, WHILE et UNTIL
Affichage d'un certain nombre de fois "Bonjour"
à l'écran (Do While, Until, Loop, TypeText, TypeParagraph)
Transformation
d'un nombre de jours en secondes
Changer de l'argent en monnaie différente
Créez votre premier jeu en VBA !
Utilisation de beaucoup de notions de base en programmation
Trop
grand, trop petit (If Then, Select Case, RND, Do Until, Loop)
Chaînes de caractères
Traitement
de chaînes de caractères (Left, Right, Mid, Len, Chr)
Comptage du nombre de voyelles d'une phrase
Réécriture d'une phrase à l'envers
Par exemple, éviter un message d'avertissement lorsque vous effacez une feuille de calcul dans EXCEL :
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Détermination
des diviseurs d'un nombre
Utilisation des Sub et des Function + passage de tableaux en paramètres
Petit exercice (avec la solution)
simplement ici
Les types de données - Lors de la déclaration
des variables : Variant, Byte, Boolean, Double, etc. Tableau récapitulatif
Accès aux cellules et plages de cellules
Comment déplacer une cellule complète (Format et contenu) ?
L'exemple suivant déplace la cellule B2 dans C1 :
Quelle est la différence entre Sheets et WorkSheets ? En fait, Sheets
contient toutes les feuilles, même les graphiques ou les Macros Excel
4 (En fait, tout ce que vous pouvez insérer quand vous cliquez avec
le bouton droit sur un onglet et que vous choisissez "Insérer...").
Tandis que WorkSheets ne parcourt QUE les feuilles "Normales"
Sub Feuille()
For Ctr = 1 To Sheets.Count
MsgBox Sheets(Ctr).Name
Next
End Sub
Sub FeuilleTravail()
For Ctr = 1 To Worksheets.Count
MsgBox Worksheets(Ctr).Name
Next
End Sub
Gestion des fonctions intégrées
d'Excel dans VBA - Il est très possible d'écrire des fonctions
intégrées d'Excel dans des cellules depuis VBA, encore faut
il avoir une syntaxe correcte.
Gestion des plages de cellules - S'y déplacer, aller a ses limites,
compter ses cellules, lignes, colonnes (CurrentRegion et consorts)
Créez votre premier complément
Excel .XLA - Mettez à disposition vos procédures et fonctions
à toute votre entreprise
Calculez les notes sans les extrêmes - Vous avez déjà vu les compétitions sportives à
la télé ? Les juges notent, mais on exclut les notes les plus
hautes et les plus basses
Sélection
de cellules - Comment sélectionner la première ou la dernière
cellule, ou ligne ou colonne d'un tableau donné
Ecriture, sélection, déplacement
dans les cellules - Cette section explique comment écrire quoi
que ce soit dans la ou les cellules de votre choix, qu'il s'agisse de la
feuille courante ou d'une autre, d'un autre classeur, ou même d'un
calcul
Gestion des onglets - Comment les déplacer,
supprimer, renommer...
Les événements de feuilles
et de classeurs - Ou l'art de savoir non seulement ce que Visual Basic
va faire, mais QUAND il va le faire
Les autres événements - On
peut demander à VBA d'exécuter quelque chose à une
heure précise, ou dans quelques muinutes, ou lorsqu'on fait Edition/Annuler
Où les macros sont-elles stockées
? - Il est bien de savoir quels sont les endroits possibles pour ranger
ses macros, car ça va déterminer quand elles seront utilisables
On peut assigner des raccourcis clavier aux macros. Pour ce faire, allez dans le menu Outils/Macros/Macros, choisissez la macro qui vou intéresse, et cliquez sur le bouton "Options", en bas à droite. Assignez une lettre minuscule, par exemple s. Cliquez sur OK, et Annuler (car il n'y a pas de bouton OK). Maintenant, lorsque vous appuyez sur CTRL s, Excel exécute la macro au lieu d'enregistrer le classeur (CTL s étant le raccourci de Fichier/Enregistrer). Vous l'avez donc "Supplanté". La plupart des lettres et chiffres sont déjà utilisés par Excel en fait. Pour éviter l'écrasement, lorsque vous attribuez un raccourci clavier à une macro, utilisez une lettre MAJUSCULE, par exemple S. Comme ça, CTRL s, ce sera "Enregistrer", et CTRL SHIFT s, ce sera l'appel à votre macro. Attention : il n'y a pas moyen facile d'avoir la liste de tous vos raccourcis claviers assignés aux macros, ce qui fait que si vous attribuez le même raccourci clavier à deux macros différentes, Excel ne donnera PAS de message d'erreur, mais lorsque vous utiliserez votre raccourci clavier, ce sera la macro la première dans l'ordre alphabétique qui sera exécutée !
Le saviez-vous ? Lorsque vous allez dans Outils/Macros complémentaires et que vous cochez la case "Utilitaires d'analyse", ça ajoute un complément "FuncRes.XLA", que vous pouvez voir dans l'environnement VBA (Alt-F11), mais il est protégé par mot de passe. Celui ci est : Wildebeest!! Mais il n'y a pas de module VBA visible... c'est magique... Ce mot de passe est le même pour tous les compléments XLA disponibles.
Apprenez
a faire votre première MacroWord - a vec l'enregistreur de macro bien
pratique (VBA WORD)
Exécutez du code VBA WORD lors
d'événements tels que Print ou Save Comment créer des
événements non inclus à la base dans Word
Pourrissez la vie des spammeurs - Les spammeurs recherchent les adresses e-mails sur tout le web. Ce petit
programme vous aide à générer une immense page HTML
pleine d'adresses e-mails invalides
Listez toutes les imprimantes installées
Sub ListeDesImprimantesInstallees()
For Ctr = 0 To Application.Printers.Count - 1
Debug.Print Application.Printers(Ctr).DeviceName
Next
End Sub
Les variables d'environnement - Comment
retrouver le nom de l'utilisateur courant, le nom de l'ordinateur sur lequel
on est, etc.
Ici le site MSDN (Microsoft Developer Network)
Ecrire dans le bloc-notes depuis Excel. On lance l'application Notepad.exe, et on y écrit abc. Ensuite on sauvegarde et on ferme : (Attention : ca ne marche pas avec la touche F5 dans l'éditeur VBA, mais seulement en lançans la macro depuis Outils/Macros/Macros :
Sub EcrireBlocNote()
' Lancement du bloc-notes :
AppActivate Shell("Notepad.exe",
vbNormalFocus)
' Ecrire abc dans le bloc-notes
SendKeys "abc"
' CTRL S pour sauver :
SendKeys "^s"
SendKeys "D:\Atelier\teste.txt"
' Comme si on cliquait sur OK :
SendKeys "{ENTER}"
' Quitter le bloc notes avec ALT F4 :
SendKeys "%{F4}"
End Sub
Utilisez l'assistant : Ce petit personnage sur votre programme Office (Le petit trombonne ou le petit Einstein). On peut leur faire dire ce qu'on veut :
Sub
UtiliserAssistant() With Assistant.NewBalloon .BalloonType = msoBalloonTypeNumbers .Icon = msoIconTip .Button = msoButtonSetOK .Heading = "Astuces pour travailler en sécurité" .Labels(1).Text = "Enregistrez souvent (CTRL S)" .Labels(2).Text = "Installez un pare feu" .Labels(3).Text = "Fermez Windows correctement" .Show End With End Sub |
![]() |
Les raccourcis clavier - Comment appeler
une macro avec une touche, utilisation de Application.OnKey
Le panneau de configuration (Application.International) - Il peut être très intéressant de connaître le
séparateur décimal (Point ou virgule), les séparateurs
de date (point ou /), etc
L'explorateur d'objets - Les propriétés,
méthodes, constantes sont innombrables dans Excel. Voyez ici une vue
panoramique de l'explorateur d'objets
Accès à la base de registre - Si
vous voulez sauvegarder des informations générales sur la configuration
de votre programme
Les macros complémentaires : Emplacement, utilisation
si vous voulez afficher le contenu d'une variable, ou bien "Vide"
si sa valeur est nulle il suffit de faire :
Nz(LaVariable, "vide")
Les fonctions de conversions de type : Integer,
Single, String, Texte, Monnaie, Booléen...
Interaction avec Access : Notamment
accès depuis Excel à des .MDB d'Access via DAO, Importation...
Créer automatiquement un raccourci
sur le bureau
Conversion de nombres décimaux
en binaires, et de binaires en nombres décimaux
Extraction d'une chaîne de caractères
dans une autre chaîne
Calcul de temps pour des heures supérieures
à 24 heures
Exécutez une procédure à une heure précise
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:00:05"), "Coiffeur"
End Sub
Sub Coiffeur()
MsgBox "N'oubliez pas votre rendez-vous chez le coiffeur"
End Sub
Accédez à d'autres programmes depuis VBA
Exportation de données Access dans Excel,
et envoi par e-mail - Ou comment créer un fichier Excel
avec des données en provenance de tables ACcess, en utilisant Outlook
Envoyez des E-Mails en série -
Une base de données Access, Outlook, et c'est parti !
Listes de diffusion - Accédez
à Outlook depuis Access via VBA
Pilotez Word depuis Excel - Attention : Pour
utilisateurs de VBA confirmés seulement ! C'est ce qu'on appelle
l'OLE automation
Pilotez PowerPoint depuis Excel - Ou
n'importe quel autre programme d'Office
Utilisation de For ... Each - Cette instruction
de permet de parcourir une collection d'objets simplement
Les modules de classe - Property Get, Let, Set, comment ça marche
?
Création de ses propres types - Suivis des
tableaux de types, et collections de types personnalisés
Fonctions personnalisées prêtes
à l'emploi - Apprenez comment créer des fonctions personnalisées
vraiment pratique, et améliorez celles qui sont ici pour votre propre
emploi
Récupérer le numéro de série
du disque dur - Pour par exemple empêcher le piratage d'un programme
Afficher la résolution de l'écran
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Sub AfficherResolution()
Largeur = GetSystemMetrics(0)
Hauteur = GetSystemMetrics(1)
MsgBox "La résolution de votre écran est de " & Largeur & " par " & Hauteur
End Sub
Compliqué (Utilisation d'API):
Choisissez un dossier -Comment
sélectionner un dossier particulier de votre ordinateur ou de votre
réseau local
Les fichiers - Tout savoir sur les fichiers :
Utilisation de la boîte de dialogue Ouvrir (GetOpenFileName)
Nettement plus simple :
Sélectionner des fichiers ou
des dossiers - Comment sélectionner un ou plusieurs fichiers,
ou un dossier avec la boîte de dialogue standard Ouvrir ou Enregistrer
Sous...avec Application.FileDialog -
Fichiers texte - Comment y accéder
en lecture/écriture
Recherche de fichiers - comment retrouver
un fichier ou une liste de fichiers selon leur nom, contenu, date de création,
etc.
Boîtes de dialogues intégrées : comment faire apparaître par exemple la boîte Fichier/Ouvrir
par exemple. Choix d'un fichier de manière conviviale, GetSaveAsFileName
Boîtes de dialogues personnalisées et contrôles
Boîtes de dialogues personnalisées - Boutons, listes déroulantes, zones de textes, dans une feuille
de calcul
Utilisation de boîtes de dialogues
personnalisées - Il est parfois bien pratique de créer
des boîtes de dialogues personnalisées. Exemple : Outils/Solveur
est un bon exemple de boîte de dialogue personnalisée
Les objets de la boîte
à outils pour les boîtes de dialogues personnalisées - Zones d'édition, listes déroulantes, boutons, etc.
Boîtes de dialogues personnalisées : Création, utilisation, UserForm, Show, Zones d'édition
Boîtes de dialogues intégrées : comment faire apparaître par exemple la boîte Fichier/Ouvrir
par exemple. Choix d'un fichier de manière conviviale,
GetSaveAsFileName
Petite astuce pour demander à une Macro d'attendre 4 secondes avant de continuer :
Application.Wait Now + TimeValue("0:00:04")
MsgBox "Terminé"
Petites astuces diverses
DoCmd.Maximize' La fenêtre active au sein d'Access
DoCmd.RunCommand acCmdAppMaximize' Le programme Access lui-même