IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur de compilation : un module n'est pas un type valide [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut Erreur de compilation : un module n'est pas un type valide
    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...
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  2. #2
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    J'ai trouvé !

    J'annonce en argument un type stats au lieu de mesStats...

    Merci à moi
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/01/2012, 08h46
  2. erreur 404 -- la ressource demandée n'est pas dispo
    Par dev7 dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 11/03/2007, 02h06
  3. [Firebird]Erreur:la reference d'objet n'est pas definie
    Par monmien dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/02/2006, 09h20
  4. erreur d'execution 3704, ...:objet n'est pas ouvert
    Par cari dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 29/11/2005, 15h44
  5. erreur 1722 le serveur RPC n'est pas disponible
    Par StyleXP dans le forum Windows XP
    Réponses: 1
    Dernier message: 13/11/2005, 20h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo