Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2011, 00h32   #1
Nouveau Membre du Club
 
Enseignant
Inscription : janvier 2004
Messages : 60
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Congo-Kinshasa

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2004
Messages : 60
Points : 37
Points : 37
Par défaut Accès à la valeur d'un contrôle, Access plante

Bonjour,

À force de m'arracher les cheveux, il ne m'en reste plus alors je viens vers vous. J'ai un formulaire contenant des données relatives à des élèves, chaque élève étant identifié par un code. Je veux pouvoir positionner le formulaire sur un élève en particulier à partir du code.
Pour cela, j'ai créé un champ où on saisit le code, puis on clique sur le bouton à côté. Voici une capture d'écran de mon formulaire (la partie intéressante, plus exactement) :



(pour le nommage des contrôles, vous avez le droit de me lapider, mais pour l'instant je n'y suis pas)

Dans mon code VBA associé à l'événement "clic" de mon bouton (Commande546), je veux bien sûr accéder à la valeur contenue dans le champ texte (Texte544). Pour cela, j'écris ce code :

Code :
1
2
3
4
5
6
 
Private Sub Commande546_Click()
    Dim critere As String
    critere = Me.Texte544.Value
    ...
End Sub
J'ai mis "..." dans le code car le reste ne nous intéresse pas, l'erreur est déclenchée par la deuxième ligne, lors de l'accès à "Me.Texte544.Value" (j'ai vérifié, quelle que soit l'instruction qui tente d'accéder à cette valeur provoque la même chose). Quand Access tente d'exécuter ce code, il plante en me disant "Access a cessé de fonctionner" (systématiquement, c'est donc une erreur reproductible).

Pour voir, j'ai essayé de voir si, en faisant appel à un autre champ, l'effet serait différent :
- En créant un nouveau champ texte, et en faisant l'adaptation nécessaire au niveau du code (Me.Textexxx.Value), une autre erreur est provoquée, erreur 91 : "Variable objet ou variable de bloc With non définie" (alors que bien sûr le champ existe). De mieux en mieux.
- En accédant à un champ déjà créé dans le formulaire et lié à la table qu'exploite le formulaire (et qui possède le même masque de saisie que mon champ censé contenir le critère de recherche), aucun problème.

Voilà où j'en suis, si vous avez une idée je suis tout ouïe, car vraiment là je n'ai plus d'idée...

Merci de votre lecture,

Alain
__________________
On s'amuse de rien en vieillissant, on vieillit quand on ne s'amuse plus.
Alain Dionne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 02h28   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 959
Points : 30 959
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Essayes d'importer tout dans une autre base.

Citation:
pour le nommage des contrôles, vous avez le droit de me lapider, mais pour l'instant je n'y suis pas
C'est bien dommage, car lorsque tu modifieras le nom de tes contrôles il faudra revoir tout ton code, car les modifications de ce type ne sont pas répercutées dans le code VBA.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 09h26   #3
Nouveau Membre du Club
 
Enseignant
Inscription : janvier 2004
Messages : 60
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Congo-Kinshasa

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2004
Messages : 60
Points : 37
Points : 37
Merci pour ce conseil,
Malheureusement ça n'a pas marché avec moi. J'ai essayé d'utiliser l'outil d'importation d'Access, mais j'ai aussi essayé de faire manuellement le copier-coller de tous les objets de la base de données. Ni l'une ni l'autre, aucune de ces tentatives ne m'a donné satisfaction.

Je reste donc à l'écoute de vos propositions,

Alain
__________________
On s'amuse de rien en vieillissant, on vieillit quand on ne s'amuse plus.
Alain Dionne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 09h49   #4
Membre habitué
 
Avatar de Orakle
 
Homme Laurent Chevrier
Chef de projet collaboratif
Inscription : mars 2004
Messages : 171
Détails du profil
Informations personnelles :
Nom : Homme Laurent Chevrier
Âge : 43
Localisation : France, Aube (Champagne Ardenne)

Informations professionnelles :
Activité : Chef de projet collaboratif
Secteur : Industrie

Informations forums :
Inscription : mars 2004
Messages : 171
Points : 113
Points : 113
Envoyer un message via MSN à Orakle
Bonjour,

Il m'est arrivé bien souvent ce genre de mésaventure.
Dans un premier temps ce que je fais, c'est que je supprime le contrôle qui pose problème, je ferme et enregistre le formulaire et je le recrée(le contrôle)...et lui réaffecte les procédures qui lui sont propres (car elles restent écrites dans le VBa)

...à tester!

2e chose, quelle est le type de champ dans ta table affectée à la valeur qui se trouve dans ton contrôle?
Orakle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 11h17   #5
Nouveau Membre du Club
 
Enseignant
Inscription : janvier 2004
Messages : 60
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Congo-Kinshasa

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2004
Messages : 60
Points : 37
Points : 37
Bonjour Orakle,

J'ai testé ta méthode, mais ça n'a pas fonctionné. Access ne plante plus mais me refait l'erreur dont j'ai déjà parlé, erreur 91 : "Variable objet ou variable de bloc With non définie".

Le champ sur lequel je veux baser ma recherche est de type texte. Mais de toute façon, si je n'arrive pas à récupérer la valeur... (par ailleurs, en codant en dur une valeur pour faire ma recherche, ça marche très bien avec la commande DoCmd.SearchForRecord).
__________________
On s'amuse de rien en vieillissant, on vieillit quand on ne s'amuse plus.
Alain Dionne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 11h51   #6
Membre habitué
 
Avatar de Orakle
 
Homme Laurent Chevrier
Chef de projet collaboratif
Inscription : mars 2004
Messages : 171
Détails du profil
Informations personnelles :
Nom : Homme Laurent Chevrier
Âge : 43
Localisation : France, Aube (Champagne Ardenne)

Informations professionnelles :
Activité : Chef de projet collaboratif
Secteur : Industrie

Informations forums :
Inscription : mars 2004
Messages : 171
Points : 113
Points : 113
Envoyer un message via MSN à Orakle
Ton erreur indique qu'une variable utilisée dans ton code n'a pas été déclarée, mais ça ne veut pas forcément dire que c'est celle où ton code s'arrête, ça peut être plus bas(ailleurs) aussi.

Pourrais-tu nous donner ton code plus au complet? Et si d'autres variables il y a nous montrer leur déclarations également?
Orakle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 13h19   #7
Nouveau Membre du Club
 
Enseignant
Inscription : janvier 2004
Messages : 60
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Congo-Kinshasa

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2004
Messages : 60
Points : 37
Points : 37
Dans la mesure où je recherchais l'erreur, j'ai mis tout le code qui vient après en commentaire. Donc on peut dire que mon code se résume maintenant à ceci :

Code :
1
2
3
4
5
 
Private Sub Commande546_Click()
    Dim critere As String
    critere = Me.Texte544.Value
End Sub
D'ailleurs, quand je choisis le débogage pour situer l'erreur, le débogueur pointe sur la deuxième ligne, "critere = Me.Texte544.Value".
__________________
On s'amuse de rien en vieillissant, on vieillit quand on ne s'amuse plus.
Alain Dionne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 13h36   #8
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Bonjour,

Cela est peut-être du à un problème d'accès au fichier et tout ce qui le constitue.
Compile le projet depuis le menu Debogage dans un premier temps...
Compacte la base de données dans un second temps...
Qu'est ce que ça donne ?

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 15h40   #9
Nouveau Membre du Club
 
Enseignant
Inscription : janvier 2004
Messages : 60
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Congo-Kinshasa

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2004
Messages : 60
Points : 37
Points : 37
Bonjour argyronet,

J'ai fait ce que tu m'as dit de faire, le débogage a trouvé une erreur mais pas à cet endroit (c'était du code qui était resté, lié à d'autres contrôles supprimés, donc qui n'avait pas de chance d'être exécuté et que j'ai néanmoins supprimé). J'ai compacté la base.

Mais l'erreur 91 est toujours là.

Alors, si vous avez d'autres idées...
__________________
On s'amuse de rien en vieillissant, on vieillit quand on ne s'amuse plus.
Alain Dionne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 16h30   #10
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Une autre idée...
Il n'y a pas de raisons apparentes à ce que ça plante. Mais du fait que vous ayez écrit
Citation:
c'était du code qui était resté, lié à d'autres contrôles supprimés, donc qui n'avait pas de chance d'être exécuté et que j'ai néanmoins supprimé
cela laisse supposer qu'il y a eu des modifs, disons, qui peuvent poser problème, la preuve...

Quelles sont les références du projet ? Y en a t-il des manquante ?

Et si vous créez un formulaire vierge avec ces 2 mêmes contrôles et le même code... qu'est ce que ça donne ?

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 17h59   #11
Nouveau Membre du Club
 
Enseignant
Inscription : janvier 2004
Messages : 60
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Congo-Kinshasa

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2004
Messages : 60
Points : 37
Points : 37
J'ai testé ce que ça donnait en créant un formulaire vierge dans lequel j'ai créé les deux contrôles (le champ texte et le bouton), puis en mettant le même code, et c'est passé. J'ai ensuite supprimé ces deux contrôles dans le nouveau formulaire pour, à la place, faire un copier-coller des deux contrôles qui posent problème dans mon formulaire principal. Donc je les ai remis tels quels, j'ai aussi mis le code qu'il fallait, et ça passait.

Pour le code "en trop", j'ai fait le nettoyage, donc il ne doit pas y avoir de souci. En tout cas, le débogueur ne me signale pas le moindre problème.

Une autre idée ?
__________________
On s'amuse de rien en vieillissant, on vieillit quand on ne s'amuse plus.
Alain Dionne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 10h39   #12
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
humm, n'avez-vous pas un contrôle ou un objet nommé "critere" quelque par ?
Y a t-il un Option Explicit dans la page de la classe du formulaire ? Si non, posez-le et réessayez....
Si ça marche dans un formulaire vierge c'est qu'il existe une saleté dans le formulaire concerné et il faut la trouver. D'ici, on ne peu rien voir.

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 21h31   #13
Nouveau Membre du Club
 
Enseignant
Inscription : janvier 2004
Messages : 60
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Congo-Kinshasa

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2004
Messages : 60
Points : 37
Points : 37
Merci pour l'Option Explicit, je ne connaissais pas...
Du coup j'ai décrassé pas mal de code mort. Pour autant, la compilation passe correctement, mais j'ai toujours le même problème...

Et sinon, non, je n'ai pas d'autre objet critere que celui que j'utilise dans mon code. D'ailleurs, mon code pour contrôler l'accès à la valeur du champ, je l'ai simplifié pour être sûr que rien d'autre n'entre en jeu :

Code :
1
2
3
4
 
Private Sub Commande560_Click()
    MsgBox "valeur : " & Me.Texte558.Value
End Sub
C'est difficile de faire plus simple ! Mais l'erreur est toujours là
__________________
On s'amuse de rien en vieillissant, on vieillit quand on ne s'amuse plus.
Alain Dionne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 21h53   #14
Membre régulier
 
Inscription : avril 2007
Messages : 123
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 123
Points : 84
Points : 84
au lieu de ?
Sefrou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2011, 18h13   #15
Nouveau Membre du Club
 
Enseignant
Inscription : janvier 2004
Messages : 60
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Congo-Kinshasa

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2004
Messages : 60
Points : 37
Points : 37
Essayé, mais pas plus de réussite. J'ai l'impression que c'est le contrôle Texte558 qui n'est pas reconnu, pourtant à la saisie il m'assiste quand je tape "Me." il me suggère Texte558 (entre autres) et après me suggère Text ou Value (parmi d'autres propriétés) pour Texte558. C'est à n'y rien comprendre.
__________________
On s'amuse de rien en vieillissant, on vieillit quand on ne s'amuse plus.
Alain Dionne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2011, 09h30   #16
Membre éprouvé
 
Homme Robert LINCE
Conseiller psycho-pédagogique
Inscription : octobre 2007
Messages : 279
Détails du profil
Informations personnelles :
Nom : Homme Robert LINCE
Localisation : Belgique

Informations professionnelles :
Activité : Conseiller psycho-pédagogique
Secteur : Enseignement

Informations forums :
Inscription : octobre 2007
Messages : 279
Points : 478
Points : 478
Bonjour tout le monde.
On est bien dans un formulaire principal? Le champ Texte558 n'est pas dans un sous-formulaire?
RobiPMS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2011, 10h56   #17
Nouveau Membre du Club
 
Enseignant
Inscription : janvier 2004
Messages : 60
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Congo-Kinshasa

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2004
Messages : 60
Points : 37
Points : 37
Bonjour RobiPMS,

Oui, on est bien dans le formulaire principal.

Mais qu'importe, j'ai trouvé une autre solution, qui consiste à utiliser une liste déroulante. Je ne suis pas fier de cette solution, c'est l'assistant d'Access qui a tout fait à ma place. Et puis, du coup, je ne sais pas d'où venait mon problème, mais ça fait ce que je veux et je vais m'en satisfaire.

Dernière chose, à tous ceux qui m'ont filé un coup de main, m'ont soufflé une idée, je vous remercie chaleureusement. Et puis, même si ça n'a pas résolu mon problème, j'ai quand même pas mal appris (je retiens le Option Explicit) donc rien de tout ce fil a été inutile.
__________________
On s'amuse de rien en vieillissant, on vieillit quand on ne s'amuse plus.
Alain Dionne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 11h15   #18
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Alain,

J'ai déjà eu un problème similaire ;
En fait le problème est survenu de lui-même et je pense que c'est une faille.
Vous pouvez vous amuser à tenter de reproduire un cas similaire en écrivant quelque part dans votre code un paramètre ou une propriété qui porte le même nom qu'une méthode ou qu'un contrôle existant or de la classe du formulaire bien sûr.
=> A titre d'exemple, j'ai eu une fois le mot Left qui s'écrivait dans l'ensemble du code en majuscule avec impossibilité de l'inscrire en NomPropre soit Left au lieu de LEFT une fois la base compilée à cause d'un
Code :
1
2
3
4
5
6
Public Type RECT
        LEFTAs Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
mal écrit au départ...

Donc votre contrôle doit peut-être s'appeler Texte_558 ou quelque chose comme ça ce qui fait qu'il lève une erreur inhérente à votre demande du contenu de ce contrôle ; essayez donc ceci (juste pour voir):
Code :
1
2
3
4
5
6
Private Sub Form_Load()
Dim ctl                                                     As Control
    For Each ctl In Me.Controls
        Debug.Print ctl.Name & " : " & ctl.ControlName
    Next ctl
End Sub
Pour ma part, c'est une tite faille interne.

Argy

P.S. Ne rouvrez le débat que si vous trouvez une nouvelle piste par rapport à mon message. Ce n'est pas utile pour ma part d'étendre le sujet davantage si ce n'est pour tenter de comprendre.
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h43.


 
 
 
 
Partenaires

Hébergement Web