Condition if sur un sous formulaire
unseen
Messages postés
56
Date d'inscription
Statut
Membre
Dernière intervention
-
Tessel75 -
Tessel75 -
Bonjour à tous,
j'ai un formulaire X avec des 3 champs
A
B
C liste déroulante (conserve; autres)
et un sous formulaire Y avec 3 champs
D
E
F
je voudrais écrire le code suivant :
si champ C du formulaire X = conserve
alors désactiver champs E et F du sous formulaire Y
et si champ C du formulaire X = autres
alors désactiver champ D
Aidez moi à écrire le code complètement svp
j'ai écris le code et l'ai mis sur afterupdate en C et current du formulaire X mais ya un débogeage du genre "erreur d'éxécution 424" peut être qu'il ya une condition à mettre ds le sous formulaire Y.. HELP ME
ds la réalité j'ai écris l
Private Sub C_AfterUpdate()
If C = "PRODUITS DE CONSERVES" Then
NATURE.Locked = True
NOMBRE.Locked = True
TYPE_EMBALLAGE.Locked = True
ESPECE.Locked = False
NOM_SCIENTIFIQUE.Locked = False
TYPE_ESPECE.Locked = False
QUALITE_DE_ESPECE.Locked = False
POIDS.Locked = True
VALEUR.Locked = True
End If
If TYPE_DU_PRODUIT = "AUTRES PRODUITS DE PECHE" Then
NATURE.Locked = False
NOMBRE.Locked = False
TYPE_EMBALLAGE.Locked = False
ESPECE.Locked = True
NOM_SCIENTIFIQUE.Locked = True
TYPE_ESPECE.Locked = True
QUALITE_DE_ESPECE.Locked = True
POIDS.Locked = True
VALEUR.Locked = True
End If
End Sub
Private Sub Form_Current()
If TYPE_DU_PRODUIT = "PRODUITS DE CONSERVES" Then
NATURE.Locked = True
NOMBRE.Locked = True
TYPE_EMBALLAGE.Locked = True
ESPECE.Locked = False
NOM_SCIENTIFIQUE.Locked = False
TYPE_ESPECE.Locked = False
QUALITE_DE_ESPECE.Locked = False
POIDS.Locked = True
VALEUR.Locked = True
End If
If TYPE_DU_PRODUIT = "AUTRES PRODUITS DE PECHE" Then
NATURE.Locked = False
NOMBRE.Locked = False
TYPE_EMBALLAGE.Locked = False
ESPECE.Locked = True
NOM_SCIENTIFIQUE.Locked = True
TYPE_ESPECE.Locked = True
QUALITE_DE_ESPECE.Locked = True
POIDS.Locked = True
VALEUR.Locked = True
End If
End Sub
j'ai un formulaire X avec des 3 champs
A
B
C liste déroulante (conserve; autres)
et un sous formulaire Y avec 3 champs
D
E
F
je voudrais écrire le code suivant :
si champ C du formulaire X = conserve
alors désactiver champs E et F du sous formulaire Y
et si champ C du formulaire X = autres
alors désactiver champ D
Aidez moi à écrire le code complètement svp
j'ai écris le code et l'ai mis sur afterupdate en C et current du formulaire X mais ya un débogeage du genre "erreur d'éxécution 424" peut être qu'il ya une condition à mettre ds le sous formulaire Y.. HELP ME
ds la réalité j'ai écris l
Private Sub C_AfterUpdate()
If C = "PRODUITS DE CONSERVES" Then
NATURE.Locked = True
NOMBRE.Locked = True
TYPE_EMBALLAGE.Locked = True
ESPECE.Locked = False
NOM_SCIENTIFIQUE.Locked = False
TYPE_ESPECE.Locked = False
QUALITE_DE_ESPECE.Locked = False
POIDS.Locked = True
VALEUR.Locked = True
End If
If TYPE_DU_PRODUIT = "AUTRES PRODUITS DE PECHE" Then
NATURE.Locked = False
NOMBRE.Locked = False
TYPE_EMBALLAGE.Locked = False
ESPECE.Locked = True
NOM_SCIENTIFIQUE.Locked = True
TYPE_ESPECE.Locked = True
QUALITE_DE_ESPECE.Locked = True
POIDS.Locked = True
VALEUR.Locked = True
End If
End Sub
Private Sub Form_Current()
If TYPE_DU_PRODUIT = "PRODUITS DE CONSERVES" Then
NATURE.Locked = True
NOMBRE.Locked = True
TYPE_EMBALLAGE.Locked = True
ESPECE.Locked = False
NOM_SCIENTIFIQUE.Locked = False
TYPE_ESPECE.Locked = False
QUALITE_DE_ESPECE.Locked = False
POIDS.Locked = True
VALEUR.Locked = True
End If
If TYPE_DU_PRODUIT = "AUTRES PRODUITS DE PECHE" Then
NATURE.Locked = False
NOMBRE.Locked = False
TYPE_EMBALLAGE.Locked = False
ESPECE.Locked = True
NOM_SCIENTIFIQUE.Locked = True
TYPE_ESPECE.Locked = True
QUALITE_DE_ESPECE.Locked = True
POIDS.Locked = True
VALEUR.Locked = True
End If
End Sub
A voir également:
- Condition if sur un sous formulaire
- Whatsapp formulaire opposition - Guide
- Excel cellule couleur si condition texte - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Confirmer le nouvel envoi du formulaire err_cache_miss ✓ - Forum Access
1 réponse
Bonjour,
Il ne sert à rien de poster des lignes et des lignes de code si tu ne dis pas toi-même la quelle accroche. Et de toutes façons quand bien même toutes seraient bien écrites, il suffit d'une seule pour que le déroulé du code se bloque.
Tu écris: "ya un débogeage du genre "erreur d'éxécution 424". Espères-tu vraiment qu'un de tes interlocuteurs connaisse par coeur la liste de toutes les erreurs signalées par VBA et te réponde: "c'est ceci ou c'est cela"
Il te faut aller dans VBA et avec l'iciône "Pas à pas" regarder comment VBA déroule ton code, quelle variable il calcule, et enfin là où il s'arrête.
A lire ton code toutes les lignes se ressemblent à la valeur prise par les variable près. Il ne sert donc à rien de mettre 4 fois la même syntaxe si celle-ci est fausse dès la 1ère ligne.
Et aussi tu écris plusieurs fois la condition "IF", il te faut écrire quand les conditions sont alternatives "If ... then ..., elseif .... then ... , else ... end if. Cela te gagnera du temps et de la compréhension pour toi-même.
Ayant peu l'habitude d'utiliser les "Private sub" mais plutôt les modules de classe "Public", je connais mal l'utilisation du "Me", néanmoins je peux te dire que lorsque tu écris:
"
Si toi tu sais que "C" et "NATURE" sont le noms de tes contrôles, VBA ne le sais pas et il faut le lui dire, soit par un "Me" soit par un "ScreenActiveObject", soit par une autre écriture qui lui indique qu'il s'agit du nom d'un contrôle du formulaire ou du sous-formulaire sur lequel tu es en train de travailler. L'écriture est alors du type:
Commence par ça, et le reste devrait suivre parce que toutes les lignes sont identiques.
Bonne suite.
Il ne sert à rien de poster des lignes et des lignes de code si tu ne dis pas toi-même la quelle accroche. Et de toutes façons quand bien même toutes seraient bien écrites, il suffit d'une seule pour que le déroulé du code se bloque.
Tu écris: "ya un débogeage du genre "erreur d'éxécution 424". Espères-tu vraiment qu'un de tes interlocuteurs connaisse par coeur la liste de toutes les erreurs signalées par VBA et te réponde: "c'est ceci ou c'est cela"
Il te faut aller dans VBA et avec l'iciône "Pas à pas" regarder comment VBA déroule ton code, quelle variable il calcule, et enfin là où il s'arrête.
A lire ton code toutes les lignes se ressemblent à la valeur prise par les variable près. Il ne sert donc à rien de mettre 4 fois la même syntaxe si celle-ci est fausse dès la 1ère ligne.
Et aussi tu écris plusieurs fois la condition "IF", il te faut écrire quand les conditions sont alternatives "If ... then ..., elseif .... then ... , else ... end if. Cela te gagnera du temps et de la compréhension pour toi-même.
Ayant peu l'habitude d'utiliser les "Private sub" mais plutôt les modules de classe "Public", je connais mal l'utilisation du "Me", néanmoins je peux te dire que lorsque tu écris:
"
If C = "PRODUITS DE CONSERVES" Then NATURE.Locked = True ..."
Si toi tu sais que "C" et "NATURE" sont le noms de tes contrôles, VBA ne le sais pas et il faut le lui dire, soit par un "Me" soit par un "ScreenActiveObject", soit par une autre écriture qui lui indique qu'il s'agit du nom d'un contrôle du formulaire ou du sous-formulaire sur lequel tu es en train de travailler. L'écriture est alors du type:
Me!Nature.Locked = True
Commence par ça, et le reste devrait suivre parce que toutes les lignes sont identiques.
Bonne suite.