Remplir une zone de texte si une case est cochée

Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -  
Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Comme dis dans le titre, je cherche à remplir le contenu d'une zone de texte en fonction de si une case à cocher est cochée ou non.

L'opération requiert des champs placés dans deux tables: Lot_arbres et Comptages.
Les champs nécessaires sont num_phase dans Lot_arbres, phase_comptage dans Comptages, la case à cocher "plantation" dans Comptages et le champ calculé num_comptage dans Comptages.

Donc le champ calculé num_comptage doit être égal à 0 si la case est cochée, sinon il doit être égal à [phase_comptage] - [Formulaires]![Lot_arbres]![lm_phase] + 1

J'ai donc fait un code vba (enfin, trouvé sur internet et essayé d'adapter à mon cas particulier) mais il n'a pas l'air de fonctionner. Cela affiche #Nom dans la zone de texte calculée.

Je l'ai affecté au champ calculé et activé l'événement "sur clic" dans un premier temps. Comme c'est un événement simple, il me permet facilement de vérifier si le code fonctionne avant de trouver un événement plus approprié.

Voici le code utilisé:


Private Sub calcul_num_comptage()
If [plantation].Value = True Then
[num_comptage].Value = 0
Else
[num_comptage].Value = [phase_comptage] - [Formulaires]![Lot_arbres]![lm_phase] + 1
End If
[plantation].Requery
End Sub


Je galère déjà un petit peu avec Access, quoi que mes soucis commencent à se résoudre, mais je ne connais vraiment rien en VBA. Mais il me semble curieux de mettre des crochets. Sauf pour le "[Formulaires]![Lot_arbres]![lm_phase]. (lm_phase est une liste permettant de choisir num_phase)

Quand je retire les crochets, ça fait la même chose quand je déclenche la macro sur l'événement BeforeUpdate par contre, sur OnClick, ça affiche le message d'erreur suivant:
https://img-19.ccm2.net/m2acQTUts4pPQ5R1OOFjmX53Tvc=/fc82b560ade340e5940f4a16aa614ced/ccm-ugc/rreur_BDD_projet_ceinture_forestiere.png

Est-ce que quelqu'un s'y connaîtrait un peu mieux que moi en VBA et saurait trouver l'erreur svp ?

Merci d'avance !

A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, je te suggère de faire simple, puis de plus en plus compliqué.
cela va t'aider à découvrir où cela coince.
surtout, ajoute
option explicit
au début de ton code.
commence par tester ceci: as-tu bien soit 0 soit 1?
If [plantation].Value = True Then
    [num_comptage].Value = 0
Else
    [num_comptage].Value =  1
End If

ensuite ainsi:
If [plantation].Value = True Then
    [num_comptage].Value = 0
Else
    [num_comptage].Value =  [Formulaires]![Lot_arbres]![lm_phase] + 1
End If

puis ainsi:
If [plantation].Value = True Then
    [num_comptage].Value = 0
Else
    [num_comptage].Value = [phase_comptage]
End If
1
Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
Non j'ai un message d'erreur "Erreur de compilation: instruction incorrecte dans une procédure"
Private Sub num_comptage_Click()
Option Explicit
If ([plantation].Value = True) Then
[num_comptage].Value = 0
Else
[num_comptage].Value = 1
End If
End Sub

La première ligne est mise avec un fond jaune au texte.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
option explicit
doit être au début du module de code.
0
Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
impossible d'attribuer une valeur à cet objet (erreur d'exécution 2448)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
nous ne voyons pas ce que tu vois, nous ne savons pas ce que tu sais. 
si tu ne nous donnes pas d'information, nous ne pouvons pas les deviner.
0
Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
C'est le message d'erreur qui apparaît quand je met option explicit sur la ligne avant Private Sub num_comptage_Click()
0
Utilisateur anonyme
 
Bonjour,

si tu fais :
Private Sub num_comptage_Click()
    
msgbox plantation

End Sub 


que cela retourne t'il ?

A+
0
Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
Une boîte de dialogue apparaît et renvoie 0 ou -1 suivant si la case est cochée ou non
0
Utilisateur anonyme
 
Essaie alors avec ce code :

Option Explicit
Private Sub plantation_Click()
    If plantation = -1 Then
    Me!num_comptage= "0"
Else
    Me!num_comptage = "1"
End If
End Sub 
0
Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
Toujours le même message d'erreur sur la ligne
Me![num_comptage] = "0"
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
peux-tu partager ton fichier?
0
Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
J'ai envie de dire oui bien sûr, mais je ne peux mettre que des images dans mon message !
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
tu peux partager ton fichier sur internet, et partager le lien ici.
exemples de possibilités de partage sur internet: google drive, cjoint.
0
Yoshimario77 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
0