L ’événement CHANGE est détecté par Vba dès qu ’un caractère est saisi ( ou tapé) dans l ’objet TextBox. Par contre l ’événement AFTERUPDATE laisse le.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Introduction a L’algorithme
INITIATION A LA PROGRAMMATION STRUCTUREE
Portée des variables VBA & Excel
Eléments visuels. 2009/2010L3-Eco - Université de Bordeaux2 Les feuilles La feuille : cest le cadre dans lequel tous les autres éléments (visuels) dune.
DECLARATION DE VARIABLES
Algorithmique Résume.
Vocabulaire pour la passage du modèle conceptuel des données au modèle relationnel des données. MCDMRD EntitéTable PropriétésChamps, attribut IdentifiantClé
Visual Basic for Applications
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Excel.
Excel. Utilisation possible d un tableur Tenir ses comptes personnels : salaires, impôts, dépenses et recettes diverses... Tenir les comptes d'une (petite)
C.
TP 8 : parcours de liste et cas pratique
TP 2 : Nos premières macros
Variables et compagnie
INITIATION à la PROGRAMMATION STRUCTUREE
La fonction Val renvoie la conversion numérique du nombre éventuellement contenu dans une chaîne, sans modifier la chaîne d’origine. nb1 = Val("2457")
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Tableaux Certains problèmes nécessitent beaucoup de variables du même type. Exemple : relevé de températures matin et soir dans 10 villes pour 10 jours.
Retour au menu principal. Généralités Lenvironnement Laffichage de la fenêtre Déplacement / sélection dans une feuille Classeurs La gestion des classeurs.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Les bases de l’Algorithmique
Par Fabrice Pasquier Cours III
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
CPI/BTS 2 Programmation Web Introduction au PHP
Cours de programmation
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
Plan À faire Retour sur les exercices Gestion d’erreur
Par Fabrice Pasquier Cours IV
Ce bouton vous donne accès à la plupart des commandes qui étaient auparavant sous le menu Fichier en plus des options de l'application.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Programmation VISUAL BASIC
Programmation en VBA Introduction au language Visual Basic for Applications dans le monde Excel.
Programmation en VBA Introduction au language Visual Basic for Applications dans le monde Excel.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Programmation multimédia 3
Introduction à la programmation (Java)
Master 1 Sciences du Sport et du Mouvement Humain
Les structure d’un programme :
Support d’accompagnement de l’atelier Excel – les bases
Manipulation de formulaires en Javascript
Semaine #1 INF130 par Frédérick Henri.
Principes de programmation
I&G- chapitre 11-La logique Logarithmique -Mme Roulaud
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Initiation aux bases de données et à la programmation événementielle
Animateur : Med HAIJOUBI
Université Ibn Zohr Faculté des Sciences Economiques et Sociales Notes de cours VBA E. Belahmidi 2007/2008.
Tableaux, chaînes VBA et Excel
Algorithmes sur Open Office
Informatique de gestion – IO MER L3 – Pierre SOURNAC Informatique de Gestion part III – the macro rises L3 – IO MER
La fonction RECHERCHEV
Algorithmes de tri et de recherche
Un survol du language C.
Macros Visual Basic sur Excel
Cours LCS N°4 Présenté par Mr: LALLALI
Informatique de Gestion part I – Macro begins
Informatique de Gestion part II – the dark macro
Une proposition de résolution du pb1 AEP PACD VB Pb11.
Une aide pour débutant éclairé
QCM VBA.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Initiation aux bases de données et à la programmation événementielle
Utilisation des formules de base
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Algorithmes sur Open Office. 1. Ouvrir Visual Basic de Open Office.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 1 Support de cours rédigé par Bernard COFFIN Université.
Transcription de la présentation:

L ’événement CHANGE est détecté par Vba dès qu ’un caractère est saisi ( ou tapé) dans l ’objet TextBox. Par contre l ’événement AFTERUPDATE laisse le temps à l ’utilisateur de taper plusieurs dans la boite, et détecte qu ’il a fini quand il appuie sur : la touche Entrée ou la touche Tab ou la souris

On a souvent besoin de faire faire à notre programme un traitement d ’initialisation de variables, ou de plages de cellules d ’une feuille d ’Excel, qu ’on ne peut pas simplement réaliser en modifiant les propriétés de certains objets. Dans ce cas on écrit le traitement nécessaire dans une procédure intitulée : Private Sub Userform_Initialize() Elle sera déclenchée automatiquement au démarrage du programme, et ne fonctionnera qu ’une seule fois

Syntaxe d’écriture du code Pour faire appel à une méthode sans paramètre Objet. Méthode Exemple : Saisie.SetFocus Pour faire appel à une méthode qui a des paramètres Objet. Méthode nom_du_paramètre :=valeur, nom_du_paramètre :=valeur… en donnant les paramètres sans ordre prédéfini, mais en les nommant Objet. Méthode (valeur,valeur,,valeur) en donnant les valeurs des paramètres en fonction de leur position dans la liste des paramètres attendus

expression. Replace(What, Replacement, LookAt, expression.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte) Cet exemple montre comment remplacer chaque occurrence de la fonction SIN par la fonction COS. La plage de remplacement est la colonne A de Feuil2. En nommant les paramètres : Worksheets("Feuil2").Columns("A").Replace _ What:="SIN", Replacement:="COS", _ MatchCase:=True Sans nommer les paramètres : ("SIN","COS", , ,True)

Syntaxe d’écriture du code Pour attribuer une valeur à une propriété Objet.Propriété = valeur Exemple : OK.Visible = true Pour mémoriser la valeur d’une propriété dans une variable Nom_de_variable = Objet.Propriété Exemple : nom = Saisie.Value Pour écrire une ligne de code sur plusieurs lignes de l’éditeur : il faut indiquer qu’il y a une suite en tapant en fin de ligne le caractère souligné _ Pour mettre des commentaires Commencer la ligne de code par une apostrophe

Différents cas de construction de IF THEN ….. IF a >0 THEN instruction 1 IF b > 12 THEN instruction 2 ELSEIF b<8 THEN instruction 3 ELSE instruction 4 END IF ELSE instruction 5

IF a >0 THEN instruction 1 ELSEIF a = 0 THEN instruction 2 ELSEIF a<-10 THEN instruction 3 ELSEIF a < -5 THEN instruction 4 ELSE instruction 5 END IF

IF a > 0 THEN IF b > 12 THEN instruction1 END IF IF c > 8 THEN instruction 2 ELSE instruction 3 instruction 4 ELSE instruction 5

Nous allons étudier un programme qui permet de faire répéter plusieurs fois un même enchaînement de procédures et événements. On ne peut pas matérialiser un traitement répétitif par une boucle classique ( Pour, Jusqu ’à, ou Tant Que) lorsqu ’un événement, déclenché par l ’utilisateur, intervient au cours de ce traitement. Dans ce programme on trouvera aussi des procédures qui ne dépendent pas directement d ’un événement

Dim nb1, nb2, err, nbfois As Integer Private Sub UserForm_Initialize() Randomize err = 0 Genere nbfois = 0 End Sub Sub Genere() nombre1.Caption = Int(Rnd * 8) + 2 nombre2.Caption = Int(Rnd * 8) + 2 nb1 = nombre1.Caption nb2 = nombre2.Caption

Sub AfficheBilan() Dim rep As Integer rep = Val(reponse.Value) If rep = (nb1 * nb2) Then MsgBox "Bien" Else: MsgBox "faux" err = err + 1 End If End Sub AfficheBilan et Genere sont des procédures qui sont déclenchées par d ’autres procédures et non pas par des événements

Sub validez_Click() nbfois = nbfois + 1 If nbfois < 4 Then AfficheBilan If nbfois = 3 Then validez.Caption = "FIN" MsgBox "vous avez fait " & err & " erreurs" reponse.Locked = True Else: reponse.SetFocus Genere reponse.Value = "" End If Else End End Sub

Les boites de dialogue MSGBOX Pour afficher simplement un message et le bouton OK : MSGBOX (’’ vous avez fait’’  & erreurs & ’’erreurs ’’)

Réponse = MSGBOX (’’ texte ’’ ,1, ’’titre ’’) Pour afficher un texte et les boutons OK et ANNULER : Réponse = MSGBOX (’’ texte ’’ ,1, ’’titre ’’) Le 2° paramètre, qui vaut ici 1, provoque l’apparition des 2 boutons OK et ANNULER Le 3° paramètre apparaîtra en titre en haut de la boîte de dialogue La variable Réponse contiendra : 1 si l’utilisateur a cliqué sur OK, ou 2 s’il a cliqué sur ANNULER. On peut ensuite tester cette variable pour continuer le traitement selon le choix de l’utilisateur

Ainsi la ligne suivante affichera la boite ci-dessous Choix = MSGBOX (’’erreur d’écriture ’’,1, ’’vérification LO10’’)

Autres valeurs possibles du 2° paramètre de MSGBOX 2 : pour afficher les boutons Abandonner, Répéter et Ignorer 3 : pour afficher les boutons Oui, Non, et Annuler 4 : pour afficher les boutons Oui et Non 5 : pour afficher les boutons Répéter et Annuler

Valeurs possibles de la réponse en fonction du choix de l’utilisateur dans MSGBOX 1 s’il a cliqué sur OK 2 s’il a cliqué sur Annuler 3 s’il a cliqué sur Abandonner 4 s’il a cliqué sur Répéter 5 s’il a cliqué sur Ignorer 6 s’il a cliqué sur Oui 7 s’il a cliqué sur Non

Définitions Une VARIABLE C ’est une zone précise de la mémoire centrale, allouée temporairement à un programme pour gérer les valeurs successives d ’une information. Une VARIABLE Une variable est définie par : son nom et son type

Construction d’un nom de variable Un nom de variable doit commencer par une lettre avoir moins de 255 caractère, et au moins 1 ne contenir que des lettres et des chiffres (facultatifs) et traits de soulignement _ (facultatifs) les espaces sont interdits ainsi que les autres signes de ponctuation former un mot quelconque, sauf un mot réservé du langage Basic, comme End ou Sub, etc.

variable (suite) Définitions Une variable n ’a toujours qu ’une seule valeur à un instant donné. Une valeur ne peut être mémorisée dans une variable que si leurs types respectifs sont compatibles. Exemple : un nombre entier peut-être mémorisé dans une variable de type réel, mais il perdra sa nature d ’entier.

Définitions Une variable peut être renseignée variable (suite) Définitions Une variable peut être renseignée par une donnée utilisateur lors d ’une ACQUISITION ou directement par programme, suite à un calcul, un test, une lecture dans un fichier, un appel de procédure ou de fonction, lors d ’une AFFECTATION

Définitions Un TYPE de variable La désignation du type de la variable permettra à l ’ordinateur : de dimensionner au mieux l ’espace alloué en mémoire centrale de filtrer des valeurs cohérentes de savoir quels procédés de codage et décodage il doit appliquer

type de variable (suite) Définitions Voici quelques types de variables courants : Boolean : vrai ou faux (true/false, 1/0) Date : de 1/1/100 à 31/12/9999 Byte : entiers de 0 à 255 Integer : entiers de -32768 à +32767 Currency : entiers de ± 1015

type de variable (suite) Définitions single : réels avec une précision de 7 décimales : de ±1.4 E-45 à ±3.04 E+38 double : réels avec une précision de 15 décimales : de ±4.94 E-324 à ±1.79 E+308 string : chaîne de caractères (65 535 octets maximum) string*10 : chaîne de 10 caractères

Déclaration de Variables Définitions Les déclarations de variables facilitent la compréhension des programmes et participent à leur optimisation : nous déclarerons donc TOUTES les variables que nous utiliserons. Déclaration de Variables En Visual Basic on déclare généralement les variables ainsi : Dim NB As Integer Dim Trouve As Boolean

Outils de traitement des variables de type chaînes de caractères La fonction LEN indique le nombre de caractères contenus dans la variable : LONG = LEN(Saisie.Value) La procédure LCASE transforme tous les caractères de la variable en minuscules : LCASE (prénom) La procédure UCASE transforme tous les caractères de la variable en majuscules : UCASE (nom)

chaînes de caractères (suite) La fonction Left recopie des caractères à partir du premier caractère. Exemple : soit la variable NomComplet = ’’DUPONT Jean’’ La commande NomDeFamille = Left (Nomcomplet, 6) permettra de mettre ’’DUPONT ’’ dans la variable NomDeFamille

chaînes de caractères (suite) La fonction Right recopie des caractères à partir du dernier caractère. Exemple : soit la variable NomComplet = ’’DUPONT Jean’’ la commande Prénom = Right (Nomcomplet, 4) permettra de mettre ’’Jean’’ dans la variable Prénom

chaînes de caractères (suite) NomComplet = ’’DUPONT Jean’’ La fonction Mid permet de recopier un certain nombre de caractères (3° paramètre), d’une variable Chaîne de caractères (1° paramètre), à partir du n° caractère (2° paramètre) La commande Prénom = Mid(NomComplet,8,4) permet d’obtenir ’’Jean’’ dans la variable Prénom

chaînes de caractères (suite) La fonction InStr permet de savoir si une sous-chaîne se trouve dans une chaîne et à partir de quel endroit (attention aux minuscules, majuscules) NomComplet = ’’DUPONT JEAN’’ Position = InStr(NomComplet,’’ON’’)  Position = 4 Position = InStr(NomComplet,’’on’’)  Position = 0 Position = InStr(NomComplet,’’N’’)  Position = 5 et c’est tout Position = InStr(NomComplet,’’I’’)  Position = 0

chaînes de caractères (suite) Pour remplacer une sous-chaîne, par une autre sous-chaîne, dans une chaîne, on utilise la méthode Replace Dans la commande suivante : trouvé = formule.Replace(’’x’’,’’RCM’’) trouvé est une variable booléenne qui vaudra Vrai si on a trouvé, au moins une fois, la lettre ’’x’’, à remplacer par la chaîne ’’RCM’’, dans la variable formule

chaînes de caractères (suite) trouvé = formule.Replace(’’x’’,’’RCM’’) dans cette commande nous n’avons pas précisé s ’il fallait différencier ‘ x ’ et ‘ X ’ donc par défaut ils ne sont pas différenciés, et tous les ‘ x ’ et ‘ X ’ sont remplacés. Si on ne veut faire remplacer que les ‘ x ’ minuscules, il faut préciser le 5° paramètre de Replace et le mettre à False trouvé = formule.Replace(’’x’’,’’RCM’’, , , False)

chaînes de caractères (suite et fin) Exercice : soit NomComplet = ’’DUPONT JEAN’’ Que trouvera-t-on dans la variable X après la commande : X=Mid (NomComplet, 1 , InStr (NomComplet ,’’ ’’) -1) ?

Voici différents moyens pour désigner en Visual-Basic une cellule d ’une feuille d ’Excel et y mettre la valeur 12 Range( ’ ’A1 ’ ’) = 12 Set x =Range( ’ ’A1 ’ ’) x = 12 Range( ’ ’A1 ’ ’) .Name = ’ ’age  ’ ’ Range(’ ’age ’ ’) = 12

Pour mettre en Visual-Basic une formule dans une cellule d ’une feuille d ’Excel Range( ’ ’B1 ’ ’) =   ’ ’= sin(RC[-1] ) ’ ’ le R vient du mot Row (niveau de ligne) et le C vient de Column Dans la cellule B1 on aura le sinus de la valeur située dans la cellule A1 ( même ligne et colonne précédente par rapport à B1)

Voici différents moyens pour désigner en Visual-Basic une plage de cellules d ’une feuille d ’Excel Range( ’ ’A1:B10 ’ ’) = 12 la valeur 12 est recopiée dans toutes les cellules de la plage  ’ ’A1:B10 ’ ’ attention : ceci ne permet pas la recopie automatique d ’une formule

une plage de cellules d ’Excel en Visual-Basic (suite) Range (’ ’C2:D10 ’ ’).Name = ’ ’prénoms ’ ’ Range( ’ ’prénoms ’ ’) =  ’ ’sophie ’ ’ la valeur  ’ ’sophie ’ ’ est recopiée dans toutes les cellules de la plage  ’ ’prénoms’ ’ Avec la propriété Name, on nomme une plage de cellules. Le nom est visible dans la liste des cellules nommées de la feuille Excel.

une plage de cellules d ’Excel en Visual-Basic (suite) set PR = Range (’ ’C2:D10 ’ ’) La variable n ’est pas visible dans la liste des cellules nommées de la feuille Excel. PR  =  ’ ’sophie ’ ’ impossible la valeur  ’ ’sophie ’ ’ n ’ est pas recopiée dans toutes les cellules de la variable PR

une plage de cellules d ’Excel en Visual-Basic (suite) set PR = Range (’ ’C2:D10 ’ ’) PR.Cells(5,2) désigne la cellule de la 5° ligne , 2° colonne de la plage référencée par PR (c ’est la cellule D6 de la feuille) PR.Cells(10) désigne la même cellule (les cellules sont implicitement numérotées dans PR ligne par ligne)

une plage de cellules d ’Excel en Visual-Basic (suite) set PR = Range (’ ’C2:D10 ’ ’) PR.Columns(2) désigne toutes les cellules de la 2° colonne de la plage référencée par PR (ce sont les cellules D2 à D10 de la feuille) La commande PR.Columns(2) = ’ ’oui ’ ’ remplit toutes les cellules de la 2° colonne de PR avec  ’ ’oui ’ ’

une plage de cellules d ’Excel en Visual-Basic (suite) set PR = Range (’ ’C2:D10 ’ ’) PR.Rows(7) désigne toutes les cellules de la 7° ligne de la plage référencée par PR (ce sont les cellules C8 et D8 de la feuille) La commande PR.Rows(7) = 0 remplit toutes les cellules de la 7° colonne de PR avec  0

une plage de cellules d ’Excel en Visual-Basic (suite) set PR = Range (’ ’C2:D10 ’ ’) PR.Cells.Count indique le nombre total de cellules de la plage PR PR.Columns.Count indique le nombre total de colonnes de la plage PR PR.Rows.Count indique le nombre total de lignes de la plage PR Range(’ ’A1 ’ ’ ) = PR.Cells.Count ??

une plage de cellules d ’Excel en Visual-Basic (suite) set PR = Range (’ ’C2:D10 ’ ’) PR.Cells(PR.Cells.Count) désigne la dernière cellule de la plage référencée par PR (c ’est la cellule D10 de la feuille) PR.Cells(9,2) et PR.Cells(18) et PR.Cells(PR.Rows.Count,PR.Columns.Count) désignent aussi la même cellule, D10 de la feuille d ’Excel

Private Sub UserForm_Initialize() Dim i As Integer For i = 1 To Range("noms").Cells.Count Range("noms").Cells(i).Interior.ColorIndex = 3 Next i End Sub

Private Sub UserForm_Initialize() Dim i As Integer i = 1 Do Range("noms").Cells(i).Interior.ColorIndex = 3 Loop Until i = Range("noms").Cells.Count End Sub

Private Sub UserForm_Initialize() Dim i As Integer i = 1 Do Range("noms").Cells(i).Interior.ColorIndex = 3 i = i + 1 Loop Until i = Range("noms").Cells.Count End Sub

Private Sub UserForm_Initialize() Dim i As Integer i = 1 Do While i < > Range("noms").Cells.Count i = i + 1 Range("noms").Cells(i).Interior.ColorIndex = 3 Loop End Sub

Private Sub Choix_AfterUpdate() L = UCase(Choix.Text) If L < > "O" or L < > "N " Then MsgBox ("erreur ") Else Range("corrigé!G2") = L End If End Sub