1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| Option Explicit
Option Base 1
'Module de classe
'On définit une série de contrôles comme faisant partie _
d'une classe d'objets personnelle appelée Class_Txt_Journal _
Class_Txt_Journal est le nom du module de classe
Dim Postes() As New Class_Txt_Journal
Private Sub UserForm_Initialize()
Dim wsj As Worksheet
Dim dernl As Integer
Dim n As Byte
Dim Liste_Postes As Variant, Liste_col As Variant
Dim post
'Variable wsj affectée à la feuille "Journal"
Set wsj = ThisWorkbook.Worksheets("Journal")
'Recherche de la première ligne vide à informer
With wsj
dernl = .Cells(.Rows.Count, 4).End(xlUp).Offset(1, 0).Row
End With
'Tableau des contrôles alimentant la classe d'objets personnelle, sauf le dernier
Liste_Postes = Array("Recette", "Dépense", "Chorale", "Informatique", "Photo", "Théatre", "CpteACpte", "Contrôle")
'Tableau des colonnes auxquelles appartiennent les cellules nommées
Liste_col = Array(6, 8, 10, 11, 12, 13, 14, 15)
'Compteur
n = 0
For Each post In Liste_Postes
n = n + 1
ThisWorkbook.Names.Add Name:="j_" & post, RefersTo:=wsj.Cells(dernl, Liste_col(n))
'Tous les conrôles du tableau alimentant la classe d'objets personnelle, sauf le dernier
If n < UBound(Liste_Postes) Then
ReDim Preserve Postes(1 To n)
Set Postes(n).Cl_Txt = Controls("Txt_" & post)
End If
Next post
'Variable libérée
Set wsj = Nothing
End Sub
Private Sub Btn_Valider_Click()
Me.Hide
Unload Me
End Sub |
Partager