Bonjour,

J'ai une erreur que je ne comprends pas :
Erreur de compilation : un module n'est pas un type valide
J'ai un module dans lequel je mets ça :

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
45
46
47
48
49
50
51
52
Option Explicit
 
Public Type equipe
numEquipe As Integer
idEleves() As Integer
End Type
 
Public Sub constructionGrossiereEquipe(ByVal nbEquipes As Integer, ByVal nbTheoriqueEleveParEquipe As Double, ByVal statsGlobales As stats)
 
    'Première création des équipes : allocation dynamique
    Dim mesEquipes(nbEquipes) As equipe
    Dim i, j As Integer
    For i = 0 To UBound(mesEquipes)
        mesEquipes(i).numEquipe = i
        ReDim mesEquipes(i).idEleves(Int(nbTheoriqueEleveParEquipe))
 
        'Remplissage des Id par des 0
        For j = 0 To UBound(mesEquipes(i).idEleves)
            mesEquipes(i).idEleves(j) = 0
        Next j
    Next i
 
    'Dim statsSub As mesStats
    'statsSub = copierStats(statsGlobales)
 
    'Création des stats pour les équipes
    Dim statsEquipe As mesStats
    ReDim statsEquipe.ecole(UBound(statsGlobales.ecole))
 
    Dim k, m As Integer
    For k = 0 To UBound(statsEquipe.ecole)
    statsEquipe.ecole(k).nomEcole = statsGlobales.ecole(k).nomEcole
        For m = 0 To UBound(statsGlobales.ecole(k).niveau)
            ReDim statsEquipe.ecole(k).niveau(statsGlobales.ecole(k).niveau(m))
            statsEquipe.ecole(k).niveau(m).nomNiveau = statsGlobales.ecole(k).niveau(m).nomNiveau
            statsEquipe.ecole(k).niveau(m).nbFilles = 0
            statsEquipe.ecole(k).niveau(m).nbGars = 0
        Next m
    Next k
 
    'Remplissage des équipes
    Dim nbTypeEleve As Integer
    nbTypeEleve = 0
 
    While nbTypeEleve <= fStats.Range("E10")
         monEquipe.idEleves(indiceDuDernierElementEnConstruction(monEquipe)) = chercherEleveAvecCriteres()
         nbTypeEleve = nbTypeEleve + 1
         statsEquipe.ecole(0).niveau(0).nbGars = statsEquipe.ecole(0).niveau(0).nbGars + 1
    Wend
 
    afficherEquipe (monEquipe(0))
End Sub
Et voici l'appel de la fonction dans une feuille :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
Sub creerEquipes(ByVal nbEquipes, ByVal nbTheoriqueEleveParEquipe As Double, ByVal nbEleves As Integer)
 
    Dim statsGlobales As mesStats
    statsGlobales = calculProrata("Eleves", "Ja", "Pa", "Rc", "CE2", "CM1", "CM2", nbEleves)
 
constructionGrossiereEquipe nbEquipes, nbTheoriqueEleveParEquipe, statsGlobales
 
End Sub
Pour info, voici les autres types que je déclare dans un autre module :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Type statsNiveau
nomNiveau As String
nbGars As Integer
nbFilles As Integer
End Type
 
Public Type statsEcole
nomEcole As String
niveau() As statsNiveau
End Type
 
Public Type mesStats
ecole() As statsEcole
End Type
D'où cela vient-il ?

L'aide d'office dit :
Un module standard ne représente pas une classe et ne peut être instancié sous la forme d'une variable. Cause et solution de cette erreur :

Vous avez utilisé le nom d'un module standard dans une déclaration Dim ou Set.
Vérifiez l'orthographe du nom du module et assurez-vous qu'elle correspond à une feuille, une feuille MDI ou un module de classe.
Je ne comprends quand même pas où je fais l'erreur...