Bonjour à tous,
j'ai créé un module de classe cAffaire, voici le code:
pour l'utiliser je fais ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Private mNuméro As String Private mCtp As String Private mAvancement As Long Private Enum col_cm006 colCtp = 7 aff = 11 avt = 30 End Enum Property Let Numéro(Numéro As String) mNuméro = Numéro End Property Property Get Ctp() Ctp = mCtp End Property Property Get Avancement() Avancement = mAvancement End Property Private Sub ChercheAffaire(fichier As Workbook) Dim recherche As Range If mNuméro <> Empty Then With fichier.Sheets(1) Set recherche = .Range(.Cells(2, col_cm006.aff), .Cells(.UsedRange.Rows.Count, col_cm006.aff)) _ .Find(mNuméro, LookIn:=xlValues) If Not recherche Is Nothing Then mCtp = .Cells(recherche.Row, col_cm006.colCtp).Value If mCtp = Empty Then mCtp = "SANSCTP" End If mAvancement = .Cells(recherche.Row, col_cm006.avt) Else mNuméro = Empty mCtp = "SANSCTP" mAvancement = Empty End If End With End If Set fichier = Nothing Set recherche = Nothing End Sub
Première chose est-ce la bonne façon de faire, je débute en POO, il bien se faire un peu les dents
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub testCAffaire() Dim affaire1 As cAffaire Dim message As Integer Dim fichier_cm006 As Workbook Set feuille_debut = ThisWorkbook.Sheets("Début") On Error Resume Next Set fichier_cm006 = Workbooks.Open(Filename:=feuille_debut.Range("b4")) If Err.Number <> 0 Then message = MsgBox(Err.Description, vbCritical) Exit Sub End If Set affaire1 = New cAffaire affaire1.Numéro = "C209ADW007" affaire1.ChercheAffaire fichier_cm006 Debug.Print affaire1.Avancement Debug.Print affaire1.Ctp End Sub
Deuxième chose, j'aurais préféré pouvoir utiliser mes propriétés Avancement et Ctp dès que l'objet est instancié, en gros écrire:
et ensuite
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set affaire1 = New cAffaire "C209ADW007" fichier_cm006
à priori ce n'est pas possible, ligne new en rouge et je n'ai pas trouvé de tuto écris de cette manière.
Code : Sélectionner tout - Visualiser dans une fenêtre à part class_initialize(Numéro as string, fichier as workbook)
Est-ce cette notion de constructeur personalisé qui manque à VBA ?
Merci d'avance pour vos réponses.
PS: la POO ici n'as certes pas beaucoup d’intérêt, mais je n'ai pas d'autre os à ronger
Partager