vba et excel par fabrice pasquier cours iii. rappels: écriture dans une cellule plusieurs...
TRANSCRIPT
![Page 1: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/1.jpg)
VBA et Excel
Par Fabrice Pasquier
Cours III
![Page 2: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/2.jpg)
Rappels: écriture dans une cellule
Plusieurs raccourcis possibles:– Sheets(1).Range("A1").Value = 12– Sheets("Feuil1").Range("A1").Value = 12– Range("A1").Value = 12– Worksheets(1). Range("A1").Value = 12– Worksheets("classeur.xls").Range("A1").Value = 12
![Page 3: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/3.jpg)
Rappels: lecture d'une une cellule
Dim a As Integera = Sheets(1).Range("A1").Value
Cette syntaxe permet de prendre le contenu de la cellule A1 de la 1ère feuille de calculs et la stocker dans la variable a
Equivalence: a = Sheets("Feuil1").Range("A1").Value a =…
![Page 4: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/4.jpg)
Méthodes et propriétés
Chaque objet (Range, Worksheet) possède une liste de propriétés et de méthodes
Une propriété est plutôt passive Une méthode est active, comme une fonction Pour simplifier: méthode = fonction
![Page 5: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/5.jpg)
Exemples de méthodes et propriétés
L'objet Range possède les méthodes suivantes:– Activate, AddComment, AdvancedFilter,
ApplyNames, …, AutoFit, Clear, ClearContents, CheckSpelling, …
Les objets de la collection Sheets possède:– Delete, Select (méthodes) – Visible, Creator, Count
![Page 6: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/6.jpg)
Intégration… suite
On peut maintenant faire des boucles afin de compléter des cellules, ou pour les lire
En fonction de certaines valeurs, on effectue telles ou telles opérations
![Page 7: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/7.jpg)
Génération automatique de code
Bonne idée pour le formatage des cellules Outils -> Macro -> Nouvelle macro Spécifier le nom du programme (macro) Opérer des actions dans Excel Stopper l'enregisteur Se rendre dans l'éditeur VB pour modifier ou
adapter le code généré
![Page 8: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/8.jpg)
Fonctions (function) dans VB
Dans un programme, cela peut-être utile de séparer les actions essentielles
On crée des fonctions qui sont appelées par la suite dans le programme principal
Syntaxe:– Public Function nom_fonct (variable As String) As Integer
--- instructionsEnd Function
Appel:– a = nom_fonct ("salut")
![Page 9: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/9.jpg)
Fonctions
Exemple:Public Sub prog1()
Dim v1 As Integerv1 = somme(3, 5, 7)MsgBox v1
End Sub
Public Function somme (op1 As Integer, op2 As Integer, op2 As Integer) As Integersomme = op1 + op2 + op3
End Function
![Page 10: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/10.jpg)
Conversion de type
Utilisation d'une variable dans un autre context
Une variable définie comme String contient un nombre -> Cint("expression")
Souvent implicite
CBool(expression) CByte(expression) CCur(expression) CDate(expression) CDbl(expression) CDec(expression) CInt(expression) CLng(expression) CSng(expression) CStr(expression) CVar(expression)
![Page 11: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/11.jpg)
Exemple de conversion
Public Sub prog1()Dim special As String, age As Integer, d As Date, val As Double special = "234"age = CInt(special)d = CDate("12.04.2003")val = CDbl("324.1245454")
End Sub
![Page 12: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/12.jpg)
Gestion des erreurs (1)
En cas d'erreur soupçonnée, on peut préparer Visual Basic à entreprendre une action
2 types de gestion:1. On Error Resume Next
– Permet de sauter la ligne qui crée le problème
2. On Error Goto qqpart– Permet de sauter à un endroit spécifique du programme
• On doit arrêter la détection des erreurs par• On Error Goto 0
![Page 13: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/13.jpg)
Gestion des erreurs (2)
Gestion des erreurs importantes quand interraction avec utilisateur
A utiliser le moins possible Ralentit beaucoup le programme A insérer uniquement quand tout le reste
fonctionne
![Page 14: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/14.jpg)
Gestion des erreurs (3)
ExemplePublic Sub prog1()
Dim v1 As Integer, v2 As IntegerOn Error Goto gesterr1v1 = InputBox("Enter votre âge:")v2 = v1 + 15On Error Goto 0
Exit Subgesterr1:
MsgBox "L'âge n'est pas correct.", vbCritical + vbOKOnlyEnd Sub
Exemple
![Page 15: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/15.jpg)
Identation des programmes
Public Sub prog1()Dim i As Integer, j As IntegerFor i = 0 To 9
For j = 0 To 10MsgBox i
Next jNext i
End Sub
Non obligatoire Rend lisible le programme Identer après:
– If– While, For– Function– Sub– Select Case
![Page 16: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/16.jpg)
Commentaires
Ajouter le plus de commentaires possibles dans un programme
Si possible, petit commentaire à côté de chaque variable déclarée
Commenter chaque nouvelle fonction 1 commentaire un moins toutes les 10 lignes Syntaxe:
– Rem commentaire commentaire, …..– ' commentaire commentaire, …..
![Page 17: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/17.jpg)
Utilisation de l'aide de MS Excel
Toutes les fonctions sont bien documentées dans l'aide Visual Basic pour Excel
Dans Office 97, s'assurer que l'aide est bien installée. Pas fait pas défaut. Nécessite le CD d'installation
On presse sur F1 en ayant sélectionner la fonction qui pose problème
![Page 18: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/18.jpg)
Débogage
En déhors des erreurs de syntaxe, il y a les erreurs de programmation plus subtiles
Index de tableau Variables non initialisées Comment s'y prendre ?
– Utiliser le mode pas à pas (Touche F8)– Mettre beaucoup de messages (MsgBox) dans le programme,
afin de bien vérifier le contenu des variables– L'expérience est constructive…– Utiliser des points d'arrêt (Touche F9 pour ajouter et enlever)
![Page 19: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/19.jpg)
Démarrage d'un programme après une touche
Dans certain cas, il est utile s'associer des programmes à des touches du clavier.
On appuie sur la touche 8 et un programme est lancé. Application.OnKey "1", "test2"
– Démarre le programme test2 lorsque la touche 1 est frappé
Application.OnKey "1", ""– Ne fait rien lorsqu'on appuie sur la touche 1
Application.OnKey "1"– Rend à la touche sa fonction de base
![Page 20: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/20.jpg)
Démarrage d'un programme à l'ouverture du fichier Excel (1)
Dans certains cas, il est nécessaire de démarrer un programme quand certaines actions se passent.– Ouverture du classeur Excel– Changement de feuille de calculs– Fermeture du classeur
![Page 21: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/21.jpg)
Démarrage d'un programme à l'ouverture du fichier Excel (2)
Double-clique
![Page 22: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/22.jpg)
Démarrage d'un programme à l'ouverture du fichier Excel (3)
![Page 23: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/23.jpg)
Accès au système de fichiers (1)
Nous verrons:– Lecture et écriture de fichiers texte
Autre possibilités: (un peu compliqué !)– Lecture et écriture de fichiers binaires
En Visual Basic, on peut:– Créer des fichiers– Compléter des fichiers– Effacer des fichiers– Lire des fichiers– Créer et supprimer des répertoires
![Page 24: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/24.jpg)
Accès au système de fichiers (2)
Syntaxe pour la lecture d'un fichier:
Dim TextLine as String
Open "fichier.txt" For Input As #1 Do While Not EOF(1) Line Input #1, TextLine
MsgBox TextLine Loop
Close #1
Ouverture du fichier
Fermeture du fichier
Lecture d'une ligne du fichier
Détection de la fin du fichier
No du fichierEn lecture
![Page 25: VBA et Excel Par Fabrice Pasquier Cours III. Rappels: écriture dans une cellule Plusieurs raccourcis possibles: – Sheets(1).Range("A1").Value = 12 – Sheets("Feuil1").Range("A1").Value](https://reader036.vdocuments.pub/reader036/viewer/2022062511/551d9d94497959293b8cb158/html5/thumbnails/25.jpg)
Accès au système de fichiers (3)
Syntaxe pour l'écriture d'un fichier:
Public Sub ecrirefichier()
Dim liste As Integerliste = 0Open "cible.txt" For Output As #1Do While liste < 100
liste = liste + 1Print #1, liste
LoopClose #1
End Sub
En écriture
Ecrit une ligne dans le fichier