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

VBA Access Discussion :

Erreur : ce code n'est pas connu


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut Erreur : ce code n'est pas connu
    Bonjour,

    Je ne parviens pas à me débarasser proprement d'un problème. Je code en vba dans Access et j'utilise les modules de classe.

    Au sein de d'un module de classe d'un formulaire j'ai créé une fonction privée. Le problème c'est qu'à son premier appel el message suivant s'affiche :
    Ce code n'est pas connu. Vérifiez que vous n'avez pas fait d'erreur de saisie, mettez la liste des codes à jour ou saisissez manuellement le code.

    Code de la procédure sur clic appellant la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Doc_Click()
        Call DocColor
    End Sub
    Code de la fonction DocColor dans le même module de classe :
    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
    Private Function DocColor()
        ' Fonction d'activation ou de désactivation de la zone de saisie des données de document
        If Me!Doc = True Then
            Me![LanceDoc Étiquette].ForeColor = 10092543
            Me!LanceDoc.Locked = False
            Me!LanceDoc.TabStop = True
            Me![ValidDoc Étiquette].ForeColor = 10092543
            Me!ValidDoc.Locked = False
            Me!ValidDoc.TabStop = True
        Else
            Me![LanceDoc Étiquette].ForeColor = 12632256
            Me!LanceDoc.Locked = True
            Me!LanceDoc.TabStop = False
            Me![ValidDoc Étiquette].ForeColor = 12632256
            Me!ValidDoc.Locked = True
            Me!ValidDoc.TabStop = False
        End If
    End Function
    Mais après validation, tout fonctionne correctement jusqu'à l'ouverture suivante du formulaire.

    Que puis-je faire pour ne pas avoir ce message?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 419
    Points : 508
    Points
    508
    Par défaut
    Salut

    Sans le code ça va etre dur de t'aider...

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    Message original édité.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 419
    Points : 508
    Points
    508
    Par défaut
    Tu as essayé de déclarer la fonction en public ?

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    OUi, qu'elle soit Public ou Private, le résultat est le même. Par contre si je met cette fonction dans un module hors du formulaire je n'ai plus de message d'erreur... mais c'est moins propre vu qu'elle ne sera utilisé que pour ce formulaire.

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    1/ Il est possible que tu aies une erreur de compilation ailleurs...
    As-tu essayé de compiler ton projet ?

    2/ Si tu veux rendre générique ton appel:
    a) Nomme correctement tes contrôles (une case à cocher ne s'appelle pas Doc mais chkDoc ou cocherDoc)
    b) Evite les espaces dans les noms, ça t'évite les crochets

    Essaye aussi ce code:
    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
    Option Compare Database
    Option Explicit
     
    Const COULEURINACTIVE As Long = 12632256
    Const COULEURACTIVE As Long = 10092543
     
    Private Sub chkDoc_Click()
        If Me!chkDoc Then
          DocColor COULEURACTIVE, True, LanceDoc_Étiquette, LanceDoc
          DocColor COULEURACTIVE, True, ValidDoc_Étiquette, ValidDoc
        Else
          DocColor COULEURINACTIVE, False, LanceDoc_Étiquette, LanceDoc
          DocColor COULEURINACTIVE, False, ValidDoc_Étiquette, ValidDoc
        End If
    End Sub
     
    Private Sub DocColor(Couleur As Long, Verrouille As Boolean, Etiquette As Label, Texte As TextBox)
        Etiquette.ForeColor = Couleur
        Texte.Locked = Not Verrouille
        Texte.TabStop = Verrouille
    End Sub
    Argy

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    Merci pour tes propositions,

    1/ J'ai compilé sans erreurs tous les modules.

    2/Les espaces dans les noms sont attribués automatiquement et je ne les ai pas remplacé. D'ailleurs si j'essai des les remplacer par des _ ce dernier disparait pour redevenit un espace.
    Du point de vue du nomage du contrôle, effectivement ce n'est pas forcément le plus adapté mais cela ne doit pas poser de problème, je pense.

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par ruman
    D'ailleurs si j'essai des les remplacer par des _ ce dernier disparait pour redevenit un espace.

    Il est impossible que tu ne puisses pas reniommer un Label ni tout autre Contrôle d'ailleurs...

    Bon, et tu as essayer cette procédure (celle que je t'ai envoyé) dans un nouveau formulaire doté d'une simple case à cocher, et deux Textbox labelisés comme il se doit ?
    Parce que chez moi, même ton code fonctionne, donc ce n'est pas là le problème mais plutôt dans l'objet qui constitue le tout...

    Argy

  9. #9
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut Re: Erreur : ce code n'est pas connu
    Slt,

    Citation Envoyé par ruman
    Le problème c'est qu'à son premier appel el message suivant s'affiche :
    Ce code n'est pas connu. Vérifiez que vous n'avez pas fait d'erreur de saisie, mettez la liste des codes à jour ou saisissez manuellement le code.
    c'est un message standard ça??

    j'ai pas souvenir de l'avoir vu quelque part.

    t'as pas une procédure spécifique de validation des données?

    Par contre si je met cette fonction dans un module hors du formulaire je n'ai plus de message d'erreur...
    si tu sors le code du module de classe du formulaire ça ne peut plus marcher, tu n'as plus accès au ME

  10. #10
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    salut
    Ne s'agirait il pas ici des codes de couleur; à ne pas faire quiproquo avec le code VBA; sinon:
    Arkham46 à ecrit:

    c'est un message standard ça??

    j'ai pas souvenir de l'avoir vu quelque part.

    t'as pas une procédure spécifique de validation des données?

    Citation:
    Par contre si je met cette fonction dans un module hors du formulaire je n'ai plus de message d'erreur...
    si tu sors le code du module de classe du formulaire ça ne peut plus marcher, tu n'as plus accès au ME
    Tout à fait d'accord avec ça.
    Pourquoi ne pas essayer avec les fonctions standards de couleur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me![LanceDoc Étiquette].ForeColor = RVB(int, int, int)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me![LanceDoc Étiquette].ForeColor = QBColor(Byte entre 1 et 15)
    ou ce que propose argyronet qui fait plus pro.
    @+

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    Merci de votre aide.

    Citation Envoyé par argyronet
    Il est impossible que tu ne puisses pas reniommer un Label ni tout autre Contrôle d'ailleurs...
    Je peux effectivement le renommer mais pas ajouter simplement un _. En remplaçant "Étiquette" par "Et" par contre cela fonctionne. Je pense donc que c'est lié au nommage automatique d'access.

    Citation Envoyé par Arkham46
    si tu sors le code du module de classe du formulaire ça ne peut plus marcher, tu n'as plus accès au ME
    Bien sûr que pour le faire fonctionner je remplace les Me! par Form!NomForm.

    Citation Envoyé par argyronet
    Bon, et tu as essayer cette procédure (celle que je t'ai envoyé) dans un nouveau formulaire doté d'une simple case à cocher, et deux Textbox labelisés comme il se doit ?
    J'ai essayé ce matin d'une part d'utiliser ton code dans un nouveau formulaire => pas de message, d'autre part d'utiliser ton code dans mon formulaire => là j'ai le message.

    J'ai beau comparer les deux formulaires (celui qréé pour le test et l'ancien) je ne vois pas de différence pouvant expliquer cet écart de fonctionnement.

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Arkham46
    c'est un message standard ça??

    j'ai pas souvenir de l'avoir vu quelque part.
    C'est bien mon problème, je ne trouve aucune référence sur le net pour ce type de message.

  13. #13
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Re,

    Si tu veux résoudre ton problème, j'aimerais que tu me dises si dans une BDD Vide que tu créés, tu y mets un Formulaire vierge appelé Formulaire1 (puisque tu apprécies particulièrement les noms délivrés par défaut par Access ) doté de 2 Textboxes nommées LanceDoc et ValidDoc avec leurs étiquettes LanceDoc_Etiquette et ValidDoc_Etiquette et un case à cocher nommée chkDoc ça fonctionne.

    Je soupçonne fortement que tu as un conflit de noms quelque part...
    Chez moi, dans "Les Comptoirs", ton code fonctionne.
    Bien entendu, je me suis permis de te proposer une version générique mieux maléable mais cela ne change rien en fait...

    Argy

  14. #14
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    Argh, Je viens de faire exactement ce que tu me demandes ci-dessus Argy.
    Et bien maintenant j'ai une "erreur 13 : Type incompatible" sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DocColor COULEURACTIVE, True, LanceDoc_Etiquette, LanceDoc
    En mode déboguage, LanceDoc a une valeur (Null, 0 ou -1) et pas LanceDoc_Etiquette (c'est normal puisque c'est une étiquette).

    Je travailles sur Access 97. J'ai également essayé sur Access 2000 avec le même résultat.

    Je ne comprends pas à quoi c'est dû.

  15. #15
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Mouais, ben c'est génial car une erreur 13 c'est une vraie erreur...
    En fait le type incompatible vient du fait qu'on exploite un contrôle comme paramètre...

    Bon j'ai retrouvé un VMWare avec 97 et j'ai testé:
    Ca marche très bien:
    Clique ici...

    Je pense que tu as un schmilblick dans ton projet...

    Argy

  16. #16
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    Merci,

    Je vais voir cela lundi quand je serrais de retour au boulot. ;-)

    Que veut dire VMWare?

  17. #17
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par ruman
    Que veut dire VMWare?
    VMWare est un logiciel d'environnement virtuel de Windows.
    Je les utilise pour tester les différentes configurations d'un système et d'une version à l'autre.
    J'en ai plusieurs dont un avec Windows XP et Office 97 ce qui permet en quelques secondes de connaître un dysfonctionnement ou une compatibilité...

    Argy

  18. #18
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    Merci Argy, je vais m'y intéresser. Ca a l'air pratique.

    Depuis ce matin je bidouille dans tous les sens en reprenant ton code et les miens.

    J'ai trouvé d'où venait l'erreur 13, c'est que je faisais le test avec des checkbox et toi avec des textbox. Donc incompatibilité de type.

    J'ai finalement trouvé d'où vient mon code inconnu... et là j'ai honte
    C'est en fait un autre contrôle sur lequel j'avais une action "sur sortie" et pour lequel j'avais pondu ce message d'erreur qui ne veut pas dire grand chose hors du contexte. Comme ce contrôle était sélectionné à l'activation du formulaire, dès que je voulais cocher une checkbox, le code se lancait et ne trouvait pas la valeur attendue : d'où le message.

    Je m'excuse pour le temps que je vous ai fait perdre. Mais en tout cas moi je n'ai pas perdu le mien car j'ai profité de vos conseils pour remodeler mon code plus proprement.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 08/05/2014, 18h10
  2. Erreur de code en mde, pas en mdb
    Par hugo69 dans le forum Access
    Réponses: 6
    Dernier message: 09/06/2006, 20h21
  3. Mon code n'est pas interprété !
    Par korriganez dans le forum Langage
    Réponses: 3
    Dernier message: 31/05/2006, 15h46
  4. [VB6] Erreur : la ligne n'est pas disponible
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 13/03/2006, 14h53
  5. Erreur : La classe n'est pas enregistrée
    Par Le Pharaon dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/08/2005, 12h04

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