Comment utiliser les structures de VBA? L’utilisateur Defined Types de données
Disons que vous essayez de créer un système de gestion scolaire. Ici, vous aurez différents types de variables comme le nom de l’élève, le numéro de liste de l’élève, la classe, etc. , bibliothécaire, classes, principe etc. Maintenant, avoir des variables différentes pour chaque entité à l’école sera un travail compliqué. Que diriez-vous de créer un type de données d’élève, d’enseignant, de classes, etc. qui stocke les valeurs qui leur sont associées. Pour cela, nous pouvons utiliser des types de données définis de VBA.
Dans cet article, nous allons apprendre comment créer votre propre type de données dans VBA. Ils sont appelés UDT de VBA. === Définition d’un type de données défini par l’utilisateur Pour définir une structure ou des UDT dans VBA, nous utilisons le bloc Type___End Type.
Voici la syntaxe d’un UDT.
Type Tname_Of_Data_Type var1 as datatype 'datatype can be anything, int, array,or even UDT var2 as datatype Var3() as datatype --- VarN() as datatype End Type
Donc, pour définir un type de données personnalisé dans VBA, nous commençons par Type Keyword. Ensuite, nous écrivons le nom de notre type de données personnalisé. Il est conventionnel d’utiliser T avant le nom du type de données afin que vous puissiez faire la différence entre link: / excel-macros-et-vba-how-to-use-vba-collections-in-excel [vba collections]
et les UDT . Les DataTypes peuvent être n’importe quoi. Et Integer, String, Variant, un autre UDT, des tableaux, des collections, n’importe quoi.
Pour utiliser votre UDT dans le programme, déclarez sa variable comme n’importe quelle autre variable.
Sub UseUDT 'Declaring variable of user defined data type Dim myVar1 as Tname_Of_Data_Type Dim myVar2 as Tname_Of_Data_Type End Sub
Facile. Maintenant, pour utiliser les variables dans cet UDT, nous utilisons l’opérateur point.
Utilisez le nom du type de données suivi d’un point et du nom de la variable à l’intérieur.
Sub UseUDT 'Declaring variable of user defined data type Dim myVar1 as Tname_Of_Data_Type Dim myVar2 as Tname_Of_Data_Type myVar1.var1="Abcd" myVar2.Var2="xyvz" End Sub
Assez de théorie, passons à un exemple pour voir comment cela fonctionne.
Créer une variable d’étudiant qui stocke les informations relatives à l’étudiant Nous avons donc une tâche pour créer un type de données défini par l’utilisateur qui stocke les informations relatives aux étudiants.
Un élève a un prénom, un nom, un numéro de rôle, une date de naissance, une classe, une section, des matières.
Alors créons-le.
'Created a Public Student Data Type Public Type Tstudent fName As String 'For First Name lName As String 'For Last Name rNo As Integer 'For Roll Number clss As string 'For Class section As String 'For Section Name subjects() As String 'For Subjects of student End Type 'Use this Tstudent type in subroutine Sub StudentsInfo() 'Creating and initializing student type variable Dim student1 As Tstudent student1.fName = "Manish" student1.lName = "Singh" student1.rNo = 12334 student1.clss = 10 student1.section = "A" ReDim student1.subjects(2) student1.subjects(0) = "physics" student1.subjects(1) = "Math" 'Printing student details. Debug.Print (student1.fName) Debug.Print (student1.lName) Debug.Print (student1.rNo) Debug.Print (student1.clss) Debug.Print (student1.section) Debug.Print (student1.subjects(0)) Debug.Print (student1.subjects(1)) End Sub
Lorsque vous exécutez le sous-marin ci-dessus, il imprimera le résultat comme indiqué ci-dessous:
Manish Singh 12334 10 A physics Math |
Création d’un tableau d’UDT et éléments d’accès
De même, vous pouvez créer autant de variables de type Tstudent dont vous avez besoin.
Vous pouvez même créer un tableau de type Tstudent comme tout autre type de données.
Public Type Tstudent fName As String 'For First Name lName As String 'For Last Name rNo As Integer 'For Roll Number clss As string 'For Class section As String 'For Section Name subjects() As String 'For Subjects of student End Type 'Creating an arrays of Tstudents type Sub SchoolInfo() Dim schoolName As String Dim students() As Tstudent schoolName = "Senior School" ReDim students(10) For i = 0 To 9 students(i).fName = "name" & Str(i + 1) students(i).rNo = i + 1 Next i Debug.Print ("Name : Roll No") For i = 0 To 9 Debug.Print (students(i).fName & " : " & students(i).rNo) Next i End Sub
Lorsque vous exécutez ce code, il sera imprimé dans la fenêtre immédiate.
Name : Roll No name 1 : 1 name 2 : 2 name 3 : 3 name 4 : 4 name 5 : 5 name 6 : 6 name 7 : 7 name 8 : 8 name 9 : 9 name 10 : 10 |
Dans le code ci-dessus, nous avons d’abord défini la structure UDT avant et le sous (j’expliquerai plus tard pourquoi). Le nous venons de créer un tableau en utilisant un mot-clé dim comme nous le faisons pour n’importe quelle variable dans VBA. Ensuite, nous avons utilisé Redim pour définir la taille des tableaux. Ensuite, nous utilisons une boucle for pour initialiser le tableau.
Pour accéder aux éléments de la structure, nous utilisons une autre boucle for. C’est ça.
Pourquoi avons-nous déclaré UDT en haut du module?
Si nous déclarons d’abord un UDT dans un module, en dehors de tout sous-programme ou fonction, il est disponible pour tous les modules du classeur. Cela signifie que si vous avez une centaine de sous-marins et de fonctions dans un module, tous peuvent déclarer des variables de type Student dans leur corps. Si l’UDT n’est pas privé, il sera disponible pour tous les modules du classeur. Si vous souhaitez qu’une structure (UDT) soit disponible uniquement pour un module conteneur, déclarez-la privée.
Private Type Tstudent fName As String lName As String rNo As Integer clss As Integer section As String subjects() As String End Type
Vous ne pouvez pas avoir UDT au niveau de la procédure. Cela signifie que vous ne pouvez pas définir un type de données défini par l’utilisateur dans un sous-programme ou une fonction.
Types définis par l’utilisateur imbriqués Supposons que vous ayez UDT appelé une voiture. La voiture a ses propres éléments. De même, vous avez un UDT appelé vélo qui peut avoir ses propres propriétés.
Disons maintenant que vous avez besoin d’un type de données appelé véhicule. Le véhicule peut avoir une voiture et un vélo comme éléments. Pouvons-nous faire cela? Oui, nous pouvons le faire. Voir le code ci-dessous
Private Type Tcar seats As Integer ac As Boolean typ As String color As String manufacturer As String Dop As Date rc_no As String End Type Private Type Tbike seats As Integer typ As String color As String manufacturer As String Dop As Date rc_no As String End Type Private Type Tvehicle number_of_Vehicle As Integer bike As Tbike car As Tcar End Type Sub vehicleVarification() Dim myVehicles As Tvehicle myVehicles.number_of_Vehicle = 2 myVehicles.bike.seats = 1 myVehicles.bike.typ = "Racing" myVehicles.car.seats = "4" myVehicles.car.ac = True Debug.Print myVehicles.number_of_Vehicle Debug.Print myVehicles.bike.typ Debug.Print myVehicles.car.ac End Sub
Ici, nous avons défini trois types de données définis par l’utilisateur. Le premier est Tcar qui contient des informations relatives aux voitures. Le deuxième est le vélo, il contient également des informations sur le vélo.
Le troisième UDT est Tvehicle. Il contient une variable pour stocker le nombre de véhicules et deux variables de type Tcar et Tbike.
Type privé Tvehicle
number_of_Vehicle As Integer
vélo comme Tbike
voiture comme Tcar
Type de fin
Pour accéder aux variables de Tcar et Tbike, nous pouvons utiliser le type de données Tvehicle. Dans le sous, nous avons défini une seule variable de type Tvehicle comme myVehicles. Lorsque nous créons cette variable, VBA crée également des variables de Tcar et Tbike.
Pour initialiser et accéder aux variables de Tcar et Tcar, nous pouvons utiliser la variable myVehicle. Comme vous pouvez le voir dans le code.
myVehicles.number_of_Vehicle = 2
myVehicles.bike.seats = 1
myVehicles.bike.typ = « Courses »
myVehicles.car.seats = « 4 »
myVehicles.car.ac = True
Lorsque nous exécutons le sous, voici comment le résultat se produit.
Cette fonctionnalité augmente vraiment la puissance de la programmation VBA de manière exponentielle. Vous pouvez structurer votre type de données comme des entités du monde réel. Vous pouvez créer des relations entre les types de données qui peuvent être utiles dans un grand projet.
Alors oui les gars, voici comment vous pouvez créer et utiliser un type de données ou une structure défini par l’utilisateur dans VBA. J’espère avoir pu l’expliquer. Si vous avez des questions concernant cet article ou toute autre question liée à VBA, posez-les moi dans la section commentaires ci-dessous. Je serai très heureux de vous entendre.
Articles liés:
lien: / general-topics-in-vba-vba-variables-in-excel [Variables VBA dans Excel]
| * VBA signifie Visual Basic pour Applications.
C’est un langage de programmation de Microsoft. Il est utilisé avec les applications Microsoft Office telles que MSExcel, MS-Word et MS-Access, tandis que les variables VBA sont des mots-clés spécifiques.
link: / general-topics-in-vba-excel-vba-variable-scope [Excel VBA Variable Scope]
| * Dans tous les langages de programmation, nous avons des spécificateurs d’accès aux variables qui définissent d’où une variable définie peut être accédée. Excel VBA n’est pas une exception. VBA a également des spécificateurs de portée.
lien: / cells-ranges-rows-and-columns-in-vba-quelle-est-la-difference-entre-byref-and-byval-arguments-vba-interview-question [Arguments ByRef et ByVal]
| Lorsqu’un argument est passé en tant qu’argument ByRef à un autre sous ou fonction, la référence de la variable réelle est envoyée. Toutes les modifications apportées à la copie de la variable seront reflétées dans l’argument d’origine.
lien: / files-workbook-and-worksheets-in-vba-delete-sheets-sans-confirmation-invites-using-vba-in-microsoft-excel [Supprimer les feuilles sans invites de confirmation en utilisant VBA dans Microsoft Excel]
| Puisque vous supprimez des feuilles à l’aide de VBA, vous savez ce que vous faites.
Vous voudriez dire à Excel de ne pas afficher cet avertissement et de supprimer la fichue feuille.
link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Ajouter et enregistrer un nouveau classeur à l’aide de VBA dans Microsoft Excel 2016]
| Dans ce code, nous avons d’abord créé une référence à un objet de classeur. Et puis nous l’avons initialisé avec un nouvel objet classeur. L’avantage de cette approche est que vous pouvez effectuer facilement des opérations sur ce nouveau classeur. Comme enregistrer, fermer, supprimer, etc `link: / menus-toolbars-status-bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [Afficher un message sur La barre d’état Excel VBA *] `| La barre d’état dans Excel peut être utilisée comme moniteur de code. Lorsque votre code VBA est long et que vous effectuez plusieurs tâches à l’aide de VBA, vous désactivez souvent la mise à jour de l’écran pour ne pas voir cet écran scintiller.
lien: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Désactiver les messages d’avertissement à l’aide de VBA dans Microsoft Excel 2016]
| * Ce code désactive non seulement VBA alertes mais augmente également l’efficacité temporelle du code. Voyons comment.
Articles populaires:
lien: / clavier-formule-raccourcis-50-excel-raccourcis-pour-augmenter-votre-productivité [50 raccourcis Excel pour augmenter votre productivité]
| Accélérez votre tâche. Ces 50 raccourcis vous permettront de travailler encore plus rapidement sur Excel.
lien: / formules-et-fonctions-introduction-de-vlookup-function [La fonction RECHERCHEV dans Excel]
| C’est l’une des fonctions les plus utilisées et les plus populaires d’Excel qui est utilisée pour rechercher la valeur de différentes plages et feuilles. lien: / tips-countif-in-microsoft-excel [COUNTIF dans Excel 2016]
| Comptez les valeurs avec des conditions en utilisant cette fonction étonnante. Vous n’avez pas besoin de filtrer vos données pour compter des valeurs spécifiques.
La fonction Countif est indispensable pour préparer votre tableau de bord.
lien: / excel-formule-et-fonction-excel-sumif-function [Comment utiliser la fonction SUMIF dans Excel]
| C’est une autre fonction essentielle du tableau de bord. Cela vous aide à résumer les valeurs sur des conditions spécifiques.