Bonjour à tous,
petit problème de débutant en VBA: je cherche à verrouiller tous les champs texte d'un formulaire (par une boucle type for each ou autre) au lieu de citer tous les noms des champs et les verrouiller un à un
merci de votre aide
Bonjour à tous,
petit problème de débutant en VBA: je cherche à verrouiller tous les champs texte d'un formulaire (par une boucle type for each ou autre) au lieu de citer tous les noms des champs et les verrouiller un à un
merci de votre aide
Quelque chose comme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim C as control for each c in me.controls if type of c is textbox then next c
Désolé pour avoir manqué d'efficacité dans mes recherches sur le forum.
La solution préconisée par cette fonction ne marche pas ! y-t-il une erreur dans le code ? (j'ai gardé la fonction telle que proposée dans le FAQ)
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 Private Sub Form_Current() Dim ctl As Control 'Pour chaque contrôle du formulaire For Each ctl In frm.Controls ' On verifie que le contrôle soit bien une zone de texte If TypeOf ctl Is TextBox Then ' On verifie le contenu du contrôle If Nz(ctl.Value,"") = "" Then ' Il est vide on le rend invisible ctl.Visible = False End If End If Next ctl End sub
L'exemple de la FAQ correspond à :
Comment masquer toutes les zones de texte vides
Vous voulez :
Comment vérouiller toutes les zones de texte
Il est évident qu'il faut adapter le code non ?
Bonjour
Comment as-tu déclaré frm ?
Philippe
Deux petites erreurs se sont glissée dans le code proposé dans ce FAQ.
Il a fallu déclarer le frm, comme suit:
et ajouter un petit "s" à la fin de la déclaration de ctl:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim frm as Forms ' je pense !
Par contre, je n'arrive pas à trouver le bon conseil sur le verrouillage de mon contrôle de type textBox, si vous voulez bien m'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim ctl As Controls ' Au lieu de Dim ctl As Control![]()
Voici comment je suis arrivé à résoudre ce petit tracas.
Ce que je propose ici est une procédure privée à un formulaire. Le top serait de proposer ça dans une fonction publique (dans un module séparé des fromulaires) pour l'appeler de n'importe où afin de verouiller tous les champs. Traitement qu'on peut envisager de mettre en place dans le cadre d'une gestion de droits pour utilisateurs.
Si quelqu'un a une solution meilleure, elle sera la bienvenue !
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 Private Sub verouillerTextBox() Dim ctl As Control Dim frm As Form Set frm = Forms("MonFormulaire") 'Pour chaque contrôle du formulaire For Each ctl In frm.Controls ' On verifie que le contrôle soit bien une zone de texte If TypeOf ctl Is TextBox Then ' Verouiller la zone de texte ctl.Locked = True End If Next ctl End Sub
Partager