Erreur de compilation : un module n'est pas un type valide
Bonjour,
J'ai une erreur que je ne comprends pas :
Citation:
Erreur de compilation : un module n'est pas un type valide
J'ai un module dans lequel je mets ça :
Code:
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:
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:
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 :
Citation:
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...