Bonjour le Forum,

Ca fait plusieurs fois que je m'attaque au pavé des modules de classe, mais en vain je n'y arrive pas.

Pour faire simple j'ai développé un petit prog qui recherche le terme renseigné par l'opérateur et en fonction de l'endroit où il l'a trouvé :

Ouvre un userform qui compile dans une listbox toutes les lignes qu'il a trouvé dans un tableau ("Catalogue") contenant ce terme.

Compile des données (dans X colonnes de la listbox) provenant de différents tableaux.

Mon premier problème c'est que je dois définir plusieurs tableaux annexes en démultipliant les déclarations

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
 
 
Public Catalogue As Workbook, Wprint As Workbook, Marche As Workbook, Procedure As Workbook, Attendus As Workbook …
 
Public CatSheet As Worksheet, Sprint As Worksheet, MarSheet As Worksheet, Prosheet As Worksheet, Attsheet As Worksheet …
 
Public LastCatRow As Integer, LastMarRow As Integer, LastProRow As Integer, LastAttRow As Integer ...
 
Public Sub init_var()
 
Set Catalogue = GetObject("O:\03 DF\35 BR\353 SSP\02.section SSP\30K\archives\MARINE archives 2009-2012\catalogue habillement allégé avec substitution V0.xlsm")
 
Set CatSheet = Catalogue.Sheets("Catalogue articles SH")
 
LastCatRow = CatSheet.Cells(8, 1).End(xlDown).Row
 
Set Marche = GetObject("O:\03 DF\35 BR\354 SEP\OUTIL EXECUTION\LISTE MARCHES A BDC HAB.xlsm")
 
Set MarSheet = Marche.Sheets("Mini Maxi Global")
 
LastMarRow = MarSheet.Cells(11, 1).End(xlDown).Row
 
Set Procedure = GetObject("O:\08 DOCUMENTS DE TRAVAIL\COMMUN\DAF_planif\_Archives\3- Portefeuille\PORTEFEUILLE DES PROCEDURES.xlsx")
 
Set Prosheet = Procedure.Sheets("PORTEFEUILLE")
 
LastProRow = Prosheet.Cells(4, 2).End(xlDown).Row
 
Set Attendus = GetObject("O:\08 DOCUMENTS DE TRAVAIL\COMMUN\SECTION_RESSOURCES_PRESTATIONS\ATT HAB\Suivi Attendus HAB (en ligne).xlsb")
 
Set Attsheet = Attendus.Sheets(" Attendus ARES")
 
LastAttRow = Attsheet.Cells(5, 1).End(xlDown).Row
…
 
End Sub
Et j'aimerais pouvoir (à l'aide d'un module de classe?) simplifier l'ensemble :

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
 
 
'Dans le module de classe cFile
 
Public Classeur As Workbook
Public NomWB as String
Public Chemin as String
Public NomFeuil as String
Public Feuille As Worksheet
Public DerLigne As Integer
 
Public Sub init_var()
 
Set Fichier = GetObject(Chemin & NomWB)
Set Feuille = Fichier.Sheets(NomFeuil)
DerLigne = Feuille.Cells(8, 1).End(xlDown).Row
 
End Sub


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
 
' dans module
 
Dim Catalogue As cFile, Procedure As cFile
Set Catalogue = New cFile
With Catalogue
                .Nom="…"
                .Chemin="\..."End With
 
Set Procedure = New cFile
With Procedure
                .Nom="…"
                .Chemin="\..."End With
 
For Each Object in cFile
Init_var.Object
Next
 
End Sub
Mais je n'arrive pas à construire ce code correctement. J'ai lu pleins de tuto sur les modules de classe mais en vain.

Quelqu'un pourrait me donner une piste ?

Merci