Bonjour à toutes et tous et merci de votre temps et de votre aide.

Je suis en train de développer un classeur ou je vais avoir des feuilles identiques (seules les données affichées diffèrent et c'est une demande explicite de mon client donc non négociable).

J'ai pas mal de code VBA associé dans mes feuilles.

Actuellement je fais les modifs dans une page, puis je recopie le code de la feuille dans sa sœur jumelle mais sincèrement je n'aime pas cela.
Mon code comporte des procédures et des propriétés, notamment des propriétés pour accéder aux zones nommées.
Cela à l'avantage de me permettre d'utiliser IntelliSense au lieu de devoir me souvenir de l'orthographe exact des noms.

Ici un exemple pour accéder à une zone nommée.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Public Property Get Colonne_LigneACacher() As Range
    Set Colonne_LigneACacher = Me.Range("Colonne_LigneACacher")
End Property
et de code adapté à ma page

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
 
Private Sub Test_HideTechnicalInformation()
    Call HideTechnicalInformation("")
    MsgBox "Fini !"
End Sub
 
Public Sub HideTechnicalInformation(prmDummy As String) 'prmDummy sert juste à cacher la procédure à l'utilisateur
    'Cache les lignes et colonnes techniques et fige les volets
    Call mdlVBAFunction.HideUnhide_TechnicalInformation(True, Me.Colonne_LigneACacher, Me.Ligne_ColonneACacher) 'Cette ligne varie avec chaque feuille.
 
    If Not wsInfo.EstModeImpression Then
            Call mdlVBAFunction.CustomFreezePan(Me.FigeageVolet) 'Cette ligne varie avec chaque feuille.
        Else
            Call mdlVBAFunction.CustomUnFreezePan(Me)
    End If
 
End Sub
Quand je dois traiter mes feuilles, il me faut une ligne par feuille.
J'aimerai plutôt avoir une liste des feuilles et les appeler en rafale via une boucle du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
dim listeFeuille as new collection
 
call listeFeuille.add(Feuille1)
call listeFeuille.add(Feuille2)
call listeFeuille.add(Feuille3)
 
dim feuille as'ici est le problème
 
for each feuille in listeFeuille
   call feuile.UneMethodePerso()
next feuille
sur la ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
dim feuille as'ici est le problème
Je peux mettre as Object ce qui fait que ma rafale fonctionne mais que je perd l'IntelliSense mais surtout les vérifs du compilateur … pas cool.
Si je mets As Worksheet, là c'est la rafale qui ne marche pas puisque que une worksheet n'ont pas de méthode UneMethodePerso.

Donc j'ai pensé à créer un module de classe clsMaFeuillePerso qui aurait un objet Worksheet et toutes mes méthodes et propriétés personnelles définies là.

Ce qui donnerai un code du genre :

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
 
dim listeFeuille as new collection
 
dim feuille as clsFeuille
 
set feuille=new clsFeuille:call feuille.Assigner(feuille1) 'feuille1 est une Worksheet
call listeFeuille.add(feuille):set feuille=nothing
 
set feuille=new clsFeuille:call feuille.Assigner(feuille2) 'feuille2 est une Worksheet
call listeFeuille.add(feuille):set feuille=nothing
 
set feuille=new clsFeuille:call feuille.Assigner(feuille3) 'feuille2 est une Worksheet
call listeFeuille.add(feuille):set feuille=nothing
 
for each feuille in listeFeuille
   call feuille.UneMethodePerso()
next feuille
Quelqu'un a-t'il déjà fait cela et en a-t'il été statisfait ?

A+