Affichage des articles dont le libellé est VBA Access. Afficher tous les articles
Affichage des articles dont le libellé est VBA Access. Afficher tous les articles

19 sept. 2019

Les Procédures et les Fonctions VBA

Lorsqu'on commence à écrire des programmes compliqués, il devient difficile d’avoir une vision globale sur son fonctionnement, et ça sera difficile de trouver et détecter les erreurs.
Pour résoudre ce problème nous avons besoin d’écrire des procèdes et des fonctions pour décomposer le programme en sous-programme et trouver une solution à chacun.
⤿  Définition :
Une fonction ou procédure est un sous-programme qui exécute une tâche ou retourne une valeur , donc les fonctions et procédures sont parmi les principes de le programmation modulaire qui consiste à séparer le programme en modules séparés   (les fonctions et les procédures)
⤿ Une fonction est un sous-programme qui :
  • A un nom
  • Peut avoir des paramètres
  • Qui retourne une valeur d’un certain type
  • Qui peut avoir besoin de variables
  • Qui est composé d’instructions
⤿ Une procédure est un sous-programme qui ne retourne pas de valeur
  • C’est donc un type particulier de fonction
  • En général, une procédure modifie la valeur de ses paramètres
🔗 Télécharger le Code Source 


👉 Regarder la vidéo de ce Cours 


13 sept. 2019

Mon Premier Programme VB Access


Mon Premier Programme consiste consiste à créer un formulaire qui permet de faire l'addition de deux variables (deux nombres) puis affiche la somme de ses deux nombres et avec la possibilité d'enregistrer les opérations effectuées dans la liste à droite de cet formulaire, ce formulaire contient deux boutons , le bouton Calculer qui permet d'exécuter le code qui va faire la somme , le bouton RAZ pour initialiser les valeurs dans les trois(3) zones de texte.
l'interface contient aussi une zone de texte qui nous permet d'afficher les erreurs d'exécution de ce programme.

⤿ Sur chargement du formulaire je vais exécuter le code suivant:
Private Sub Form_Load()
    Me.txtN1 = Null
    Me.txtN2 = Null
    Me.txtSomme = Null
    Me.txtSomme.Enabled = False
End Sub
⤿ Le bouton Calculer je le nomme "btnCalculer" sur l'événement clic de ce bouton je vais  vais exécuter le code code suivant qui permet de faire la somme des nombres
Private Sub btnCalculer_Click()
Dim somme As Double
Dim str As String
If Not IsNull(Me.txtN1) And Not IsNull(Me.txtN2) Then
    If IsNumeric(Me.txtN1) And IsNumeric(Me.txtN2) Then
        somme = CDbl(Me.txtN1) + CDbl(Me.txtN2)
        Me.txtSomme = somme
        str = Me.txtN1 & " +  " & Me.txtN2 & " = " & somme
        Me.txtList.AddItem str
        Me.txtMsgErreur = Null
    Else
      MsgBox "Essayer de saisir des valeurs numériques ", vbCritical, "Erreur de sasie"
    End If
Else
MsgBox "essayer svp de saisir des valeurs correctes", vbCritical, "Erreur de saisie"
End If
End Sub

⤿ Ajouter le code VBA suivant  Sur l'événement Clic du bouton RAZ  (comme nom  de la variable pour cette bouton :btnRaz )  pour initialiser les valeurs des champs :
Private Sub btnRaz_Click()
    Me.txtN1 = Null
    Me.txtN2 = Null
    Me.txtSomme = Null
End Sub

⤿ Pour Contrôler les données saisies dans les  zones de textes txtN1 et txtN2, on va utiliser l’événement BeforeUpdate pour ces deux champs: donc directement  après l’instruction  Option Compare Database on déclare une variable globale "erreur" (Dim erreur As String) où va enregistrer les erreurs commises et on va écrire le code suivant pour ces deux champs .
Le code VBA pour le champs txtN1 :
Private Sub txtN1_BeforeUpdate(Cancel As Integer)
    If Not IsNumeric(Me.txtN1) Then
       Cancel = True
       erreur = erreur & vbCrLf & " - La valeur du champs txtN1 non numérique! "
       Me.txtMsgErreur = erreur
    End If
    If IsNull(Me.txtN1) Then
      Cancel = True
      erreur = erreur & vbCrLf & " - la valeur saisie est nulle !!"
      Me.txtMsgErreur = erreur
    End If
End Sub


Le code VBA pour le champs txtN2 :
Private Sub txtN2_BeforeUpdate(Cancel As Integer)
    If Not IsNumeric(Me.txtN2) Then
        Cancel = True
        erreur = erreur & vbCrLf & " - la valeur de txtN2  est non numérique"
        Me.txtMsgErreur = erreur
    End If
    If IsNull(Me.txtN2) Then
        Cancel = True
        erreur = erreur & vbCrLf & " - le valeur de txtN2 est nulle"
    End If
End Sub

⤿ Pour Supprimer les éléments enregistrées dans la zone de liste (txtList comme le nom de variable), ajouter l'événement DblClick (double clic sur la zone de liste)
Private Sub txtList_DblClick(Cancel As Integer)
    If Me.txtList.ListIndex > -1 Then
        Me.txtList.RemoveItem Me.txtList.ListIndex
    Else
        MsgBox "Essayer de selectionner un élément de la liste ", vbInformation, "Erreur de suppression"
    End If
End Sub


🔗 Télécharger le Code Source   : Mon Premier Programme VBA


👉Pour plus de détail , Regarder la vidéo de ce Cours  (Partie  01)

👉Pour plus de détail , Regarder la vidéo de ce Cours  (Partie  02)

Visual Basic for Applications (VBA)


VBA Access : Visual Basic for Applications (VBA) est la composante  programmation de Microsoft Access, VBA Access vous permet d'ajouter des fonctionnalités puissantes et avancées , enrichir aussi vos projet et gérer complètement votre base de données Access.

Grâce au VBA vous pouvez :
⤿  Gérer complètement votre base de données MS Access : créer des tables, exécuter des Macros, exécuter des requête SQL

⤿ Implémenter le programmation modulaire : Créer des fonctions et Procédures , Ajouter les Modules et les Modules de classe , séparation de code ...

⤿ Ajouter l'interactivité de votre interface utilisateur à l'aide des événements : click, db_click, load, Before_Update , After_Update ....

⤿ Utiliser des composantes d'accès à des sources de données locales (la base de données courante) ou distantes (Exp : Utiliser la composante ADODB pour accéder à une base de données SQL SERVER...)  

⤿ VBA présente un environnement de programmation Orienté Objet, la plupart des objets visuels ont la possibilité de réagir à des Evénements (sur ouverture , après mise à jour , click , dbclick....) , vba permet aussi de créer des objets et classe utilisateurs en passant par la composant "Module de Classe"