Bonjour,

j'ai un formulaire avec un sous-formulaire en mode Feuille de données.

dans mon formulaire, j'ai des cases à cocher.

je voudrais qu'en fonction des cases cochées ça me masque / affiche une colonne du sous formulaire.

donc, j'ai fait une jolie petite fonction, et pour éviter les répétitions, j'ai fait un select case et tout et tout.

bon, je vous montre, c'est le plus simple:
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
22
23
24
'pour appeler la fonction: après la coche/décoche de ma case:
Private Sub cgpr_AfterUpdate()
Call Display_Hide_Columns(Me.cgpr.name)
End Sub
 
'la fonction (incomplète)
Function Display_Hide_Columns(name As String)
Select Case (name)
    Case "cgpr": Call disp_hide("Modifiable44")
'....
 
'l'autre fonction
Function disp_hide(column As String)
Dim str As String
 
str = "[Forms]![f_liste_uo]![F_Liste_UO_sf].Form." & column & ".ColumnHidden ="
 
If str = True Then
    str = False
Else
    str = True
End If
 
End Function
bon voilà, en fait, je voulais dans ma 2e fonction stocker l'adresse de mon sous formulaire, concaténer le nom de la colonne que je trouve avec la fonction précédente (dans mon select), puis après concaténer avec la propriété ColumnHidden.

comme ça après j'avais juste à tester le true ou le false.

....sauf que VBA n'a pas l'air d'apprécier.
c'était astucieux pourtant non ?

.......bon, c'est pas le tout de m'envoyer des fleurs, mais.... vous avez une solution pour faire quelque chose de clair et joli ?

(bon, sinon je peux le faire sans fonction ni rien mais ça sera pas joli du tout, et puis si jamais mon formulaire change de nom, il ne sera pas facile de mettre le code à jour....)