Tableur Visual Basic pour les Applications VBA : Visual Basic for Application e
Tableur Visual Basic pour les Applications VBA : Visual Basic for Application est le langage de programmation intégré à la suite bureautique Microsoft Office. Il offre toutes les structures de contrôle d’un langage de Troisième génération et permet de ne pas déclarer les types de variables. C’est un langage qui manipule des objets propres à chaque type d’application. Avec le tableur, il va falloir être capable de sélectionner un objet « feuille de calcul », une cellule ou un groupe de cellule, voire une ligne ou une colonne et définir la cellule active. Déclaration des variables et de leur type Si l’utilisateur ne définit pas explicitement une variables, Visual Basic lui affecte automatiquement le type Variant. Il est toutefois préférable de déclarer les variables pour les raisons suivantes : • rapidité des calculs : La taille du type Variant dépend des données stockées par la variable. Il gère les valeurs allant jusqu'au Double et aux chaînes de 65 535 caractères. Les conversions requises par des données aussi différentes sont effectuées en interne, ce qui est agréable pour le développeur mais prend du temps de calcul est ralentit l'exécution du programme. • moindre encombrement de la mémoire: • Compatibilité : à l'exception de VB, aucun dialecte Basic ne connaît le type Variant. Si vous envisagez d'exporter une application VB vers un autre Basic, renoncez à l'usage de Variant. Les types de variables Les types de variables Attribuer un type à une variable consiste à lui associer une taille mémoire et surtout une plage de valeurs. Type de donnée Taille d'enregistrement Plage Byte 1 octet 0 à255 Boolean 2 octets Vrai ou Faux. Integer 2 octets -32 768 à 32 767. Long (entier long) 4 octets -2 147 483 648 à 2 147 483 647 Single (valeur à virgule flottante en simple précision) 4 octets -3,402823E38 à -1,401298E-45 pour les valeurs négatives; 1,401298E-45 à 3,402823E38 pour les valeurs positives. Double (valeur à virgule flottante en double précision) 8 octets -1,79769313486232E308 à -4,94065645841247E-324 pour les valeurs négatives; 4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives. Currency 8 octets -922 337 203 685 477,5808 à 922 337 203 685 477,5807. Date 8 octets 1er janvier 100 au 31 décembre 9999. Object 4 octets Toute référence à des données de type Objet. String 1 octet par caractère 0 à environ 2 milliards (environ 65 535 pour Microsoft Windows versions 3.1 et antérieures). Variant 16 octets + 1 octet pour chaque caractère N'importe quelle valeur numérique dans la plage d'une valeur de type Double ou n'importe quel texte de caractères. Jacques Chambon 1/9 Tableur Déclaration de variables Déclaration de variables C’est le mot-clé Dim qui permet de déclarer les variables. Dim Adresse As String ..................................déclare une variable de texte de longueur variable Dim Adresse As String *50.............................la chaîne compte toujours 50 caractères Dim Nombre As Integer.................................déclare explicitement une variable de type Entier. Dim AutreVar;Choix As Boolean;DateNaissance As Date déclarations multiples sur une même ligne. La variable AutreVar est de type Variant puisque son type n'est pas spécifié. Attention !!! Dans une liste de variables de même type, il faut répéter le type pour chaque variable. Exemple : Dim Lig , Col As Integer Dim Alig, ACol As Integer Dim numéro As Integer Dim Ordre, reste As Integer Dim Msg, Title, Default As String Les Opérateurs Opérateurs arithmétiques Opérateur Basic Description Ordre de priorité ^ * / \ Mod + - élévation à la puissance 2^3 =2*2*2=8 multiplication division division entière 38\5 = 7 Reste de la division entière 38 Mod 5 = 3 addition soustraction 1 2 2 3 4 5 5 Opérateurs de comparaison < Inférieur à <= Inférieur ou égal à > Supérieur à >= Supérieur ou égal à = Egal à <> Différent de Opérateurs de concaténation & Concaténation de chaînes Opérateurs logiques And Conjonction Eqv Equivalence Imp Implication Not Négation Or Disjonction (Ou inclusif) Xor Exclusion (Ou exclusif) Jacques Chambon 2/9 Tableur Introduire une valeur dans une boite de dialogue Titre de la boite Message destiné à l’utilisateur Valeur par défaut Pour afficher cette boite de dialogue, il faut écrire les instructions suivantes : prompt = "Entrer un nombre impair" ' Définit le message. Title = "Ordre du Carré" ' Définit le titre de la boite. Default = "3" ‘ Définit la valeur par défaut. xpos = 4000 ypos = 4000 Ordre = InputBox(prompt, Title, Default,xpos,ypos) ' Affiche le message, le titre et la valeur par défaut. On pourrait également tout concentrer en une seule instruction, mais ce serait au détriment de la lisibilité. Ordre = InputBox( "Entrer un nombre impair", "Ordre du Carré", "3",4000,4000) Pour connaître la syntaxe des instructions ou fonctions de Visual Basic, il faut appeler l’aide à partir de l’éditeur de Code. Appuyez sur les touches Alt + F11 puis sur le point d’interrogation. Jacques Chambon 3/9 Tableur Répétitive REPETER…JUSQU’A Répétitive REPETER…JUSQU’A prompt = "Entrer un nombre impair". Dans le message affiché précédemment, il faut vérifier que l’utilisateur entre bien un nombre impair. Si tel n’est pas le cas, il faut afficher à nouveau la boite de dialogue. L’affichage du message doit être répétitif tant que le nombre introduit n’est pas impair. Tel que nous venons de le formuler, une boucle « tant Que » semble s’imposer ! Mais en recherchant les cardinalités d’affichage du message, on s’aperçoit qu’il doit au moins être affiché une fois et réaffiché plusieurs fois selon le comportement de l’utilisateur. La cardinalité est 1,n. La boucle Répéter… Jusqu’à s’impose donc. Le raisonnement devient : Répéter Afficher la boite de dialogue Jusqu’à ce que le nombre frappé par l’utilisateur soit impair Syntaxe Exemple Do [instruction] [Exit Do] [instruction] Loop [Until condition] Do Ordre = InputBox(prompt, Title, Default, xpos, ypos) reste = Ordre Mod 2 Loop Until reste = 1 Un nombre impair est un nombre dont le reste de la division entière par 2 est 1. L’opérateur « division entière » dite aussi « division Euclidienne » est MOD, abréviation de MODULO. Si l’utilisateur frappe le nombre 6, la variable Ordre contiendra la valeur 6. Ordre 6 2 Reste 0 3 Reste vaudra 0. Le programme remontera jusqu’à l’ordre Do et réaffichera la boite de dialogue. Dans le calcul d’un carré magique, il faut après avoir introduit l’ordre qui nous donne la taille du carré, remplir toute les cellules de 0 Nous allons donc balayer toutes les lignes et toutes les colonnes concernées et affecter un 0 à chaque cellule. Si l’utilisateur frappe la valeur 5, l’Ordre du carré sera de 5, c’est à dire que ce carré possèdera Ordre * Ordre cellules. Il faudra balayer ordre colonnes sur ordre lignes. La cardinalité, c’est à dire le nombre d’itérations (ou d’opérations) est connu à l’avance. La boucle POUR s’impose ! Répétitive POUR Répétitive POUR Syntaxe Exemple For MonIndice = 15 to 75 Step 5 Instructions [Exit For] Instructions Next MonIndice For Lig = 1 To Ordre For Col = 1 To Ordre Cells(Lig, Col).Select ActiveCell.FormulaR1C1 = 0 Next Col Next Lig Step est le pas, on dit l’incrément. La première valeur de MonIndice sera 15, la suivante 15 + 5, soit20, puis 25, 30…jusqu’à 75. Si la valeur Step n’est pas précisée , elle est implicitement égale à 1. Exit For , permet de sortir de la boucle avant la dernière valeur atteinte. Exit for est généralement mentionnée dans une condition. La boucle extérieur, joue sur les numéros de ligne, alors que la boucle interne, passe en revue toutes les cellules d’une ligne. La ligne Cells(Lig, Col).Select, rend active la cellule de coordonnée lig, col. La ligne ActiveCell.FormulaR1C1 = 0, affecte la valeur 0 à la cellule active. Après avoir initialisé le carré, il faut écrire la valeur 1 dans la case médiane de la première ligne. Jacques Chambon 4/9 Tableur Lig = 1 ' position de la ligne Col = Fix(Ordre / 2) + 1 ' position de la colonne numero = 1 ‘ numero de la case Cells(Lig, Col).Select ' position du pointeur de cellule ActiveCell.FormulaR1C1 = numero ' numerotation de la cellule Col = Fix(Ordre / 2) + 1, la fonction Fix correspond à la valeur entière. Ainsi si Ordre vaut 3, Col prendra la valeur partie entière (3 / 2) soit partie entière (1,5) donne 1. Donc 1+1 donne 2. C’est bien la case médiane de la première ligne d’un carré d’ordre 3. Ce premier calcul correspond à l’amorce de la boucle suivante qui peut éventuellement ne pas être exécutée si l’utilisateur demande un carré d’ordre 1. La cardinalité de la boucle est 0, N. La boucle Tant Que s’impose. On l’utilisera tant que le numéro de la cellule à numéroter est inférieure au carré de l’ordre. Tant que numero < ordre2 Numéroter la case suivante Fin tant Que Répétitive TANT…QUE Répétitive TANT…QUE Compteur = 0 ' Initialise la variable. Do While Compteur < 20 ' Vérifie la valeur de Compteur. Compteur = Compteur + 1 ' Incrémente Compteur. Loop ‘ plancher de boucle Exemple Vérifier = Vrai Compteur = 0 ' Initialise les variables. Do. ' Boucle externe. Do While uploads/Litterature/ www-cours-gratuit-com-coursvba-id3841.pdf
Documents similaires
-
19
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Apv 22, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.2363MB